HikariTJU / LD

Localization Distillation for Object Detection (CVPR 2022, TPAMI 2023)
Apache License 2.0
355 stars 51 forks source link

请问关于retinanet,fcos的gfocal实现 #26

Closed Logicino closed 2 years ago

Logicino commented 2 years ago

您好! 我注意到LD项目中,config中的gfl文件夹里有复现相关不同网络使用generalized focal loss的代码 我理解的generalized focal loss的改进是在 1.分类分支使用了joint的quality focal loss 2.回归分支采用了general distribution+distribution focal loss,后者的核心是采用概率分布改进了边框拟合方式。 我看到项目中代码,例如gfl_r50_fpn_1x_coco这些,是在loss_cls中使用了quality focal loss,在loss_dfl中使用了distribution focal loss,这很容易理解。 但是,例如retina_gfl_r101_2x,fcos_gfl_r50_center这些配置中,对loss_cls还是使用了focalloss,在loss_bbox使用了GIoUloss(我理解的是quality focal loss中采用IoU label代替one-hot label的意思),不知道distribution focal loss是怎么体现的呢?其中,retinanet(retina_gfl_r101_2x)采用的好像还是deltaxywhbboxcoder? 非常感谢!

HikariTJU commented 2 years ago
  1. 在retina和fcos这几个上面只用了 general distribution,没有使用dfl和qfl
  2. retina的bbox_coder实际上没用到
Logicino commented 2 years ago
  1. 在retina和fcos这几个上面只用了 general distribution,没有使用dfl和qfl
  2. retina的bbox_coder实际上没用到

感谢回复~! 可以理解为采用generalized distribution是loss_bbox=dict(type='GIoULoss')这个决定的吗? 另外,关于蒸馏实验,我之前采用您的方法做实验,确实对于同样使用ResNet+FPN的情况下,用ResNet101指导ResNet18有很大提高 但是这几天尝试了使用MobileNet作为student,用ResNet-101的结果作为teacher会有一些精度下降,不知道是不是蒸馏对网络结构有要求,即网络结构近似的效果会更好? (但是我理解的蒸馏是将teacher网络的分类结果,这里是推演出的边框概率位置,作为指导学生的,所以感觉可能是没关系的?是不是应该往调整蒸馏学习的超参数方向试试呢?谢谢~!

Zzh-tju commented 2 years ago

准确来说有三个超参值得考虑,一个是边界被离散化成概率分布的离散程度n (小区间的个数),gfocal是16,对于rotated RetinaNet我们发现8更好,因此n可能会有一定的影响,不过差别不会太大。

第二个是温度\tau,这影响着概率分布的软化程度。一般而言会在5~15这个范围比较好。

第三个是loss weight,这个可以调一调。

我建议是按照这个顺序逐一去确定。

HikariTJU commented 2 years ago

没做过mobilenet的实验,你可以用resnet18或者34做teacher试试

Logicino commented 2 years ago

准确来说有三个超参值得考虑,一个是边界被离散化成概率分布的离散程度n (小区间的个数),gfocal是16,对于rotated RetinaNet我们发现8更好,因此n可能会有一定的影响,不过差别不会太大。

第二个是温度\tau,这影响着概率分布的软化程度。一般而言会在5~15这个范围比较好。

第三个是loss weight,这个可以调一调。

我建议是按照这个顺序逐一去确定。

谢谢您的回复!我这几天重新做了实验,发现teacher选择上也有一定影响 之前用res18做student的话,LD之后效果最好的是res50 mobile我试了还是res101效果最好,猜测可能因为res101下AP^S最高,补足了mobile的AP^S低的问题 我再按您的方法试一试~感谢!