Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OLA问题 #9

Closed
aiboys opened this issue Mar 17, 2022 · 2 comments
Closed

OLA问题 #9

aiboys opened this issue Mar 17, 2022 · 2 comments
Labels
label assignment question Further information is requested to do

Comments

@aiboys
Copy link

aiboys commented Mar 17, 2022

Hi,
作者你好。
关于论文中OLA模块进行label assignment时,第三部分关于分层以及边界有以下疑问:
1)algorithm1 给出了高斯的生成方式,其中thr阈值是OBB的边界值,但是公式7)又对边界进行了shrink,所以thr需要在shrink之后的边界处取高斯值吗?不知道这么做的目的是什么呢?类似于FCOS的中心区域采样吗?其中Tiou=0.3是等效于缩放比例是吗?
2)如果上述我理解的没有问题,那么对椭圆两个半轴进行等比例缩放,如果面对很细长的物体是否会造成采样点过少的问题(?比如arxiv2022的FCOS-R的图示:
image
3)关于层级分配策略,想知道最终只用了三个层级进行匹配吗?根据stride1,stride2,stride3以及图像对角长度,或者对于FPN来说是只考虑p4,p5,p6?

另外,关于论文OWAM是通过类似autoassign的策略进行reweight,想知道OWAM因为是直接采用了回归loss在前期学习会不会不太稳定?因为噪声较多

期待作者的回复,谢谢

@Shank2358
Copy link
Owner

Hi, 作者你好。 关于论文中OLA模块进行label assignment时,第三部分关于分层以及边界有以下疑问: 1)algorithm1 给出了高斯的生成方式,其中thr阈值是OBB的边界值,但是公式7)又对边界进行了shrink,所以thr需要在shrink之后的边界处取高斯值吗?不知道这么做的目的是什么呢?类似于FCOS的中心区域采样吗?其中Tiou=0.3是等效于缩放比例是吗? 2)如果上述我理解的没有问题,那么对椭圆两个半轴进行等比例缩放,如果面对很细长的物体是否会造成采样点过少的问题(?比如arxiv2022的FCOS-R的图示: image 3)关于层级分配策略,想知道最终只用了三个层级进行匹配吗?根据stride1,stride2,stride3以及图像对角长度,或者对于FPN来说是只考虑p4,p5,p6?

另外,关于论文OWAM是通过类似autoassign的策略进行reweight,想知道OWAM因为是直接采用了回归loss在前期学习会不会不太稳定?因为噪声较多

期待作者的回复,谢谢

Hi, 感谢关注我们的工作。

  1. 高斯生成是根据Algorithm1进行的,取了高斯pdf>thr的样本点,Tiou=0.3时也就是原来0.7倍半径的高斯。函数thr=f(Tiou),根据Tiou可以得到边界处的高斯pdf阈值。
    公式7)的shrink只是为了解释上述Algorithm1中thr与半径、以及与Max IoU Matching的关系,并不是再次进行shrink然后取thr。因为在代码中直接算半径r^{c}_{i}并不方便,我是先算完整个高斯然后排序pdf,取其中的top 70%作为positive candidates。
    论文中的描述产生歧义我们感到非常抱歉,不知道这样解释是否能够理解?如果还有问题也烦请继续给我反馈。
    对了,具体代码是在datasets_new.py里面而不是datasets_obb.py。
    这是取高斯pdf>thr的部分:
    image
    这是最后分配positive candidate的部分:
    image

  2. 采样点数量一方面和高斯半径有关系,另一方面还和分配的尺度有关系,比如在stride=32层采样点少可以修改尺度分配阈值将其分配到stride=16层,这样采样点更多,就像您提到的FCOSR论文中那样。
    1)很遗憾我们在GGHL中没有详细研究过是否存在采样点过少这个问题、以及它可能导致的其他影响。也许您可以尝试进行探索。我个人的观点是:目前并没有充分的证据表明,更多的采样点会比更少的采样点取得更好的检测效果。
    2)论文中area normalization对样本点数量的不均衡进行了一次平衡。
    3)GGHL论文中tau的值是可以调整的,论文给了一部分的实验结果,您可以根据实际数据集情况重新调整这个超参数或者修改分层分配策略。GGHL分层的stride=8,16,32,如果您觉得采样点太少,可以最多将其分配到stride=8层得到更多采样点。
    4)FCOSR和您提到的这种极端长宽比物体的尺度分配确实是一个非常值得考虑的问题,FCOSR也给出了一个不错的思路,也许您可以进一步对此进行研究和探索,我也很乐意能够就此问题和您保持继续交流。
    5)我们尝试过在分层之间取overlap,在部分数据集上也会有一定效果(0.5个点左右的波动),类似这样,也许您可以做进一步研究和尝试:
    image
    6)实际上这张图的分配结果画出来并不长这样,也许您可以尝试把实际采样点画到这张图上康康。
    image
    我找了个类似的长条形舰船图像,实际分配出来的采样点长这样,并没有非常夸张因为采样不是在原分辨率上而是下采样后的特征图上,并且ltbr的预测实际上包含了对于偏移量的预测。
    image

3.对的,GGHL只用了三层的FPN,分层的策略是公式7-8,具体的我们给出了两种分层策略在代码中:
datasets_new.py中是这样的
image
datasets_obb.py中是这样的
image
在Issues # 8的讨论中我也解释了我自己对分层策略和分配之间的一些思考。
当然,GGHL的FPN也可以很容易地扩展到更多层的分配,可以根据实际情况选用和修改,在datasets_obb_pro.py中我们也给出了以4层FPN为例的方案的修改demo。由于论文的更多介绍的是我们的idea和方法,篇幅所限很遗憾并没有对增减FPN层数这样的问题进行更多对比。另外,我在设计GGHL时对于推理速度和模型大小的偏好更为看重,所以只用了三层。

4.以下是loss的变换曲线,似乎并没出现前期学习不太稳定的情况
image
OWAM是有高斯静态先验的,在此基础上根据回归得分动态调整,也许是静态高斯的先验值缓解了一开始回归分数不好带来的影响?抱歉,我没有理解噪声较多是一种什么样的情况,是指的一开始回归值不准确的问题吗?这里也许可以改进一下,让权重的影响根据训练回传的梯度动态调整。

不知道这样解释能否解答您的问题,有任何疑问都可以给我反馈,我也会及时分享我的思路和理解,如有不对也请您批评指正。
谢谢。

@aiboys
Copy link
Author

aiboys commented Mar 17, 2022

感谢作者耐心的回答

@Shank2358 Shank2358 added question Further information is requested label assignment to do labels Mar 20, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
label assignment question Further information is requested to do
Projects
None yet
Development

No branches or pull requests

2 participants