Crowdhuman人体检测比赛第一名经验总结

点击上方“机器学习与生成对抗网络”,关注”星标”

获取有趣、好玩的前沿干货!

Crowdhuman 是一个密集行人检测的数据集,其中的人群非常拥挤。大家可以从下图感受一下。本文是 Caleb 参加 2020年的CVPR和ICME,两篇论文的链接在文末。 

本文来自:https://zhuanlan.zhihu.com/p/68677880tm_source=wechat_session&utm_medium=social&utm_oi=38573357137920

Crowdhuman人体检测比赛第一名经验总结

不用tensorflow的原因想必不用多说,我们在detectron-pytorch和mmdetection选择了后者的原因,当然是mmdetection的author之一 @陈恺在知乎上比较活跃,可以每日私信催更 ,其实仔细看detectron-pytorch的更新日志,上一次有效commit是1年以前了,而mmdetection不仅是去年coco冠军release的codebase,更保持了~3commits/week的速度, 陈博士在issue回答里的亲力亲为也让人对mmdetection印象大好。如果没有mmdetection,是不可能有我们最终的分数的。

竞赛经验分享方面,我们重点参考了 

@尼箍纳斯凯奇

 回答里关于coco竞赛经验分享部分的ppt:

如何评价商汤开源的 mm-detection 检测库 www.zhihu.com

Crowdhuman人体检测比赛第一名经验总结
取自crowdhuman test set
Crowdhuman人体检测比赛第一名经验总结 之间都成立。所以在crowdhuman上存在这样一个取分技巧:通过调低nms_pre牺牲AP的方式来换取mMR的提升。

上面两点的发现颇有运气成分,随后与leader讨论发现了之前忽视的另一关键点:ignore区域。Crowdhuman将雕塑、影子,镜子里的人等视为ignore区域,此外有一类ignore区域是很难精准预测的密集人群,如下图橙黄色区域(手动标的)。是否预测出来ignore区域的bbox不影响测评分数,绿框是模型的预测结果。训练阶段我们起初直接无视了ignore区域,这导致下图橙黄色ignore区域有在RPN阶段成为训练背景的可能,但细想一下,下图这片ignore区域是一定程度上具备human body特征的,只是分辨率较低,让它作为RPN的阶段的背景显然会影响RPN对每个anchor属于前背景的判断。

Crowdhuman人体检测比赛第一名经验总结
取自竞赛官网

Multi-scale和Ensemble也有些操作空间,细节将放到第四部分详细说明。

2. 该work却不work的技巧–“真的不行”篇

这类技巧主要包括:SyncBN[15],focal loss[16], reflective loss[17], GIoU/IoU Loss[18],pretrain on COCO, IoUNet[19], scale balanced sampling[20], Soft-NMS。需要指明的是,这类技巧在CrowdHuman数据集上没有增益,不代表他们在其他数据集上也没有帮助(DL嘛,你懂的),所以大家不能轻易忽略这类技巧的价值。

SyncBN

baseline里使用的是标准BN,但滑动统计值是取自ImageNet的预训练模型,且训练crowdhuman期间不对滑动统计值进行更新。SyncBN已被证实在coco上有稳定的提升,我们在crowdhuman上却得不到理想的效果。推测原因可能是crowdhuman训练数据只有15000张,数据量远远小于coco的20w+,不足以提供科学的滑动统计值。放弃

Focal Loss

我们观察到了如下现象:pred bbox尺寸越小,分类得分越均匀分散在0~1之间,pred bbox尺寸越大, 分数越靠近0、1两端。小目标分类结果的不确定性为后续尝试JI的卡分阈值带来一定困扰,那有没有办法让模型把小目标得分从中间往两侧推呢R-CNN Module的损失函数上应用focal loss从原理上来说当然有可能做到这一点,训练阶段focal loss会将小目标中得分趋向于0.5的目标视为难样本,为其提供较大的梯度权重。然而,rcnn阶段使用了focal loss的模型mMR比baseline掉了2个点。具体原因我们没有详细分析了,可能是对难样本的强行学习反过来伤害到easy sample的表现吧。

GIoU/IoU

Sadly…用不用几乎没有区别。

Pretrain on COCO

在COCO上预训练按理说至少不该伤害模型表现。在以Res50为backbone的时候,JI和mMR确有0.5~1个点的提升,换到了SENet154后,在coco上预训练反而轻微伤害到了模型, sigh…

Soft-NMS

Soft-NMS在第二部分提到,它只能捞回被打入低分段的bbox,对只在乎相对高分段bbox的mMR和JI理应不产生影响,实际实验结果也证实了这点。用不用,到小数点后第四位都看不出来变化,所以某cvpr oral的论文里用了soft-nms影响了mMR的结果真是一眼难尽。。。

3. 该work却不work的技巧–“没尽力调”篇

这类技巧主要包括:Guided Anchor[21], OHEM[22], Adaptive NMS[23]

Guided Anchor

Guided Anchor是一片很独特的文章,比赛期间我们未对该方法和实现做深入研究,仅使用了默认的setting,在mMR上差了baseline 0.5个点。如果原意沉下心来,做更多超参上的调整,相信在baseline上是会有不小提升空间的。

OHEM

OHEM也是考验炼丹师火候的技巧。由于focal loss的失败经历,OHEM几乎没怎么试就放弃了。

Adaptive NMS

我们对Adaptive NMS抱有很大的期待,因为它的原理真的很make sense。。。标准的post nms会使用0.5作为阈值对pred bbox进行过滤,仔细看下表,红框里的数字表示在crowdhuman这个数据集里,平均每张图片有2.4对bbox之间的IoU>0.5。这意味着使用标准post nms和0.5阈值,每张图从一开始就不可避免的要损失2.4个gt bbox,这对JI有2个点以上的影响。Adaptive NMS提供了一种很巧妙的思路,即根据pred bbox的密度,来动态决定每个pred bbox做nms时候的阈值,这个密度叫density map,测试阶段由模型预测给出。可惜,我们一直未训练出理想的density map,原因至今还未探明。

Crowdhuman人体检测比赛第一名经验总结

猜您喜欢:

超100篇!CVPR 2020最全GAN论文梳理汇总!

附下载 | 《Python进阶》中文版

附下载 | 经典《Think Python》中文版

附下载 | 《Pytorch模型训练实用教程》

附下载 | 最新2020李沐《动手学深度学习》

附下载 | 《可解释的机器学习》中文版

附下载 |《TensorFlow 2.0 深度学习算法实战》

附下载 | 超100篇!CVPR 2020最全GAN论文梳理汇总!

附下载 |《计算机视觉中的数学方法》分享

Crowdhuman人体检测比赛第一名经验总结

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览212691 人正在系统学习中

来源:机器学习与AI生成创作

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月21日
下一篇 2020年10月21日

相关推荐