Skip to content

Experiments

YonghaoHe edited this page Jun 28, 2021 · 7 revisions

Experiments

In this page, we will record all experiments for pursuing better performance.

All experiments are divided into two categories:

  • select a better existing options, like which loss to use
  • run new ideas

You may acquire what you want here.

Notice: we can not guarantee that all experiments are well organized and fair enough, please read with your minds

GFocalLoss vs FocalLoss (2021.03.10)

As we know, GFocalLoss is proposed to improve one-stage anchor-free detectors like FCOS. In this experiment, we compare QFL (classification part in GFL) to FL.

  • Dataset: WIDERFACE
  • Model: XS (with FL) and XS-QFL (with QFL)

other settings are the same

Model Version Easy Set Medium Set Hard Set
WIDERFACE-XS 0.866 0.877 0.839
WIDERFACE-XS-QFL 0.866 0.880 0.841

We can observe that QFL performs slightly better than FL. QFL may substitute FL in classification.

GrayRange vs NoGrayRange (2021.03.13)

In LFD, there is a parameter gray_range_factors to control gray ranges for each head. Each head is responsible for detecting a certain range of objects, for example, the first head in LFD_XS (on WIDERFACE) is assigned range of [4, 20]. Gray ranges are near but not in head ranges, say [3,4)&(20,22] against [4, 20]. Objects fall in gray ranges are not learned (ignored) by related heads. A simple explanation: objects in gray ranges are hard samples for heads, and will destroy gradients.

  • Dataset: WIDERFACE
  • Model: XS (gray_range_factors=(0.9, 1.1)) and XS-w/o-GrayRange (gray_range_factors=(1.0, 1.0))

other settings are the same

Model Version Easy Set Medium Set Hard Set
WIDERFACE-XS 0.866 0.877 0.839
WIDERFACE-XS-w/o-GrayRange 0.843 0.860 0.834

We can observe that the performance is evidently improved with gray ranges. But in this case, we only tried gray_range_factors=(0.9, 1.1), maybe other settings, say gray_range_factors=(0.8, 1.2), can result in better performance, so you can tune this in your own tasks.

Using gray ranges is strongly recommended!

FCN-style vs FPN-style (2021.04.01)

The neck of the original LFD is SimpleNeck. FPN is well known due to its feature fusion for improving performance. In this experiment, we use FPN in LFD instead of SimpleNeck.

  • Dataset: WIDERFACE
  • Model: XS (SimpleNeck) and XS-FPN (FPN)

other settings are the same

Model Version Easy Set Medium Set Hard Set
WIDERFACE-XS 0.866 0.877 0.839
WIDERFACE-XS-FPN 0.865 0.879 0.839

FPN-style structure does not evidently outperform FCN-style structure. But FPN-style will comsume more memory and have a higher inference latency. So FPN may be not necessary in LFD for face detection.

Head path merge vs Head path not merge (2021.06.25)

As we know, there are two paths in LFD head ---- classification path and regression path. The option of merge_path_flag is always True in previous experiments. Here, we conduct extra experiments to explore this option.

  • Dataset: WIDERFACE
  • Model: XS (merge_path_flag:True) and XS-no-merge (merge_path_flag:False)

other settings are the same

Model Version Easy Set Medium Set Hard Set
WIDERFACE-XS 0.866 0.877 0.839
WIDERFACE-XS-no-merge 0.864 0.878 0.840

Evident improvement can not be observed by setting merge_path_flag to False.