crowdhuman+double anchor 碎碎念

前言

此文纯属娱乐,给自己加戏

refer

原作者解析

理解

人的full body 重合多, 容易出现很多fp,nms在coco中一般最后取0.5,意味着保留iou=0.5的得分较低的框,取大了错减变多, 取小了漏检变多,这里黄色被判断为负样本(iou很高),但显然是正确的,也就是FN,但红色的因为iou较小幸存下来,是FP,怎么办呢,有个insight人头比人身体好检测,因为重叠少,人头和人身体又是有联系的,标注文件中有配对关系,感觉上应该可以利用一下对最后的结果有提升,那怎么利用呢,希望读者思考2分钟,可以脑补一下策略



思考中


可以大胆的脑补1

那我后处理时通过iou找头和身体的pair来去除FP不就可以,像上图红色框应该就可以被去掉了,这样不就over了?

nope,红色框虽然被去了,但核心problem 这个FN依然捞不回来,很容易人头多人身少

脑补2

那我把头和身体作为一个pair,每次要求同时预测pair不就可以了,这样强制一一配对,就不会出现人头多人身少了吧

yes,能想到这说明还是厉害的,但事情没有这么简单,理想很丰满,现实很残酷,这个预测pair的结构肯定是下图类似



这个结构加在roi align之后肯定不合适吧,头和身体的框差距很是很大的,强行让一块小区域回归头和身体怕是很难收敛,那放在rpn里面呢,anchor后接两个分支,一个预测人头框,一个预测人身框,既然人头好检测,那用人头标注来做gt来筛选anchor -- 也不行,实验发现人身框效果很差(MR-H从50降到了48,可以理解此时的anchor筛选偏向了head自然有增益,MR-Body从55增到了79,很惨),虽然有配对效果,可以理解,因为还是强行让一个小区域回归头和身体

这样不行那也不行 ,实验进行到这陷入绝望,配对预测想法很好,实验差的不行,卡在了rpn阶段虽然有配对预测,但是由于强行让一个小区域回归头和身体,人身框很差

怎么办呢 -- 论文中厉害的来了,另外加一路单独预测人身框,利用这个结果来辅助刚才的配对框预测结果,具体实现就是算iou,拿iou高的单路人身框来替换配对预测中的人身框,这样就可以提高配对预测的结果,这样在rpn阶段就可以得到还不错的配对框预测结果,然后老套路走roi align 回归类别bbox之类的,当然论文中尝试了把两个框的feature做了融合再分别回归人头人身发现结果更好一点(个人感觉没什么必要,这两个特征感觉没什么互相帮助,配对关系有了就可以了)

论文框架图

深思

joint-nms

最后的预测配对框,那么做nms肯定也要考虑pair,也就是joint-nms,这个我没搞过,但自然作者实现了那就是可行的

预测配对框

整个project的出发点也是难点就是预测配对框,实现时需要让一个小区域回归两种差距不小的框,假想作者的方法如果套在roi-align之后 -> 不行,此时已经经过了nms,上面讨论了nms对于重叠目标是难搞的,所以只能在rpn里面操作,okey,脑补以下两个plan

plan1: 因为人头容易检测,所以拿人头来筛选anchor,同时强行预测人身,用额外的分支单独预测人身的proposal,从而弥补强行预测人身导致的人身预测不行问题
plan2: 同时拿人头人身来筛选anchor,这样可能出来的proposal可能介于人头人身之间,然后回归没那么难,结果可能好一点

plan2结果很差,人身依然很差,人头也变差了一点,应该是因为人身密集导致nms难搞,这样同时拿人头人身来筛选anchor,仍然无法解决这个问题,同时因为人身框比较大,很可能被人身框带跑,导致最后整体都不行,plan1就是论文的方案了,rpn阶段只用人头来处理nms, 可以很好解决密集问题的痛点,自然结果很好,最后的nms也不用担心人身的问题,因为最上面的FP FN问题已经在rpn阶段给解决了

直接一阶段呢

这里的处理在rpn阶段已经涉及到了人头人身分离,感觉可能不需要后续的roi align bbox regression之类了,脑补一下

直接类似Yolo,预测配对框,做nms时拿人头做,同时单独分支预测人身来弥补

好像不太行,这个路子和最开始的脑补1差不多,由于nms原因,FN捞不回来,不对啊,论文里rpn阶段单独那路的人身proposals也是有nms的,作者没说FN的事啊,-- 我想是因为二阶段nms后保留了1000个proposals,虽然拿iou>0.5来作为替换标准有所不妥,但也不会太差,最后还有roi align 等做精度提升,如果直接一阶段这个保留少了不好,保留多了也不好 -- 深思又回到了one stage vs two stage,按理two stage good 是因为有个rpn候选框降低了回归难度和去冗余然后用很小的head(2conv1fc)做一下精度提升和分类,对于单类检测rpn阶段已经是根据fg来筛了,那么head中的分类感觉意义不大,bbox的进一步回归还是要的 --- 按这个路子单阶段就不可能效果好,怎么可能一次全卷积就效果好,那么多候选框,一般一个图gt就8个左右,这个的监督作用也太低了,能收敛吗,fastercnn的处理是引入rpn 筛一遍后再回归再筛一遍,额,那要再回归再筛呢(就是cascade rcnn)了,yolo的处理是把gt做一下处理,得到的gt对于每个候选框都有个gt(增强监督作用
)

拓展

这个pair的思路感觉在遥感其他任务中也许可以迁移一下

你可能感兴趣的:(crowdhuman+double anchor 碎碎念)