implus / GFocalV2

Generalized Focal Loss V2: Learning Reliable Localization Quality Estimation for Dense Object Detection, CVPR2021
Apache License 2.0
477 stars 54 forks source link

TTFNet上部署GFocalV2的一些困惑 #31

Closed ghost closed 2 years ago

ghost commented 3 years ago

翔哥你好,在阅读了你在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回归值过大时该如何正确的调整?此外也希望您能够对我在此前提及的改动提出建议。

期待您的回复!

implus commented 3 years ago

Hi 您好~

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

ghost commented 3 years ago

Hi 您好~

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

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

ghost commented 3 years ago

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

期待您的回复!

implus commented 3 years ago

Hi 你好!

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

Best, Xiang

------------------ 原始邮件 ------------------ 发件人: "implus/GFocalV2" @.>; 发送时间: 2021年9月26日(星期天) 上午10:34 @.>; @.**@.>; 主题: Re: [implus/GFocalV2] TTFNet上部署GFocalV2的一些困惑 (#31)

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,即处于学习率较低的时期,为此我特地调整了学习率进行训练,仍是无法解决以上问题。希望您能帮助我解决困惑!

期待您的回复!

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

ghost commented 3 years ago

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

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

Thanks!