implus / GFocalV2

Generalized Focal Loss V2: Learning Reliable Localization Quality Estimation for Dense Object Detection, CVPR2021

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TTFNet上部署GFocalV2的一些困惑

opened this issue · comments

翔哥你好,在阅读了你在GFocal相关工作的两篇文章后,我深受启发并希望将GFocalV2检测头的**应用于TTFNet中,但是在实现过程中遇到了一些问题,因此提出了该Issue。目前,我在TTFNet上修改了此前的检测头结构,使其形式上与GFocalV2一致,但存在着以下差异

  1. 我将GFocalV2结构图中所得的I(DGQP的输出结果)直接与TTFNet在定位分支中预测得到的heatmap(N×C×H×W)相乘得到最后的J,并将J代替heatmap用于完成目标类别和中心位置的预测。考虑到QFL在本质上还是一种Focal_Loss,因此我没有将该部分的损失函数更改为QFL,而是继续使用TTFNet中的形式代替QFL。
  2. 在GFocalV2中,我在阅读由Distribution(P)计算DFL相关的代码时发现,GFocalV2利用DFL来引导概率分布迅速调整至实际ltrb的左右整数值,在该部分的计算中直接使用了pytorch中的交叉熵函数进行DFL的计算;此外,在概率分布中使用n=16的设置应该是因为GFocal所回归的是特征图上ltrb值,大致的数值就位于0-16之中(如果并非如此望指教),因此可以很容易的进行概率分布的设置。以上就导致了我在DFL的计算中无法直接使用GFocalV2的设置,因为TTFNet在回归分支中所预测的是输入图像尺寸(512×512)下的ltrb值,我在目前的实验中尝试了使用调整n=256的设置。另,我将Integral结构替换成为一个1×1卷积已完成概率分布到最后结果的计算。

在以上的改进后,我进行了网络的训练,可以看到的是模型的检测性能在训练之初稳定上升,能够如TTFNet一般快速的取得一个优秀的结果,但是在之后的训练后检测性能会不断下降、难以收敛。猜测是因为DFL和Regression_Loss两者相互影响的原因?
在进行改进的过程中,我主要的困惑即是:在对于概率分布的预测过程中,倘若模型所预测的ltrb回归值过大时该如何正确的调整?此外也希望您能够对我在此前提及的改动提出建议。

期待您的回复!

Hi 您好~

用于回归的bin数目建议在10~20左右比较合适。如果ltrb数值过大的话,建议对回归对象乘以一个系数比如 10/256,将其缩放到小范围,在推理时用该系数的倒数进行缩放。

Hi 您好~

用于回归的bin数目建议在10~20左右比较合适。如果ltrb数值过大的话,建议对回归对象乘以一个系数比如 10/256,将其缩放到小范围,在推理时用该系数的倒数进行缩放。

感谢您的回复!
后续我会尝试进行改进。

Hi 您好~

用于回归的bin数目建议在10~20左右比较合适。如果ltrb数值过大的话,建议对回归对象乘以一个系数比如 10/256,将其缩放到小范围,在推理时用该系数的倒数进行缩放。

作者您好,在对GFocal的进一步应用中,我目前使用的设计是在Distribution中设置16的概率区间,在Distribution中ltrb/20的值进行DFL回归计算,此外QFL仍是采用TTFNet初始的交叉熵设置,Integral结构上由于加权的效果不太好我仍是采用1*1卷积进行实现。目前对于GFocal的应用仍是不佳,主要的问题在于检测结果的mAP会随着DFL的下降出现剧烈变化,我修改了DFL的权重(上图为1,下图为0.5),可以看出好像最后的reg和DFL好像回归的目标不太一致?此外值得注意的是,前期mAP上涨的部分处于Warmup阶段,学习率不断增加至0.0015,即处于学习率较低的时期,为此我特地调整了学习率进行训练,仍是无法解决以上问题。希望您能帮助我解决困惑!
image
image

期待您的回复!

Hi 你好! DFL只是一种辅助性质的loss,从数学上是能保证其取到最优解时刻与reg的目标是一致的。但我们通常不会期望它取到最优解,因为这样分布的形状就固定死了,所以从功能上来看DFL是一种辅助性的让训练快速聚焦到相对正确区间的一种手段,实际它带来的性能增益也是比较有限的。所以你既然很纠结于DFL,我建议你不使用它,即调制权重为0,理论上来讲对最终性能的影响是不大的。 Best, Xiang

十分感谢您的回复!我会进一步考量这其中所存在的问题以及应用,希望最后能够利用GFocal的想法取得更好的性能表现。

Thanks!