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
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.
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!
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.
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.