本文围绕着“密集场景人体检测”这一问题而展开,介绍了CrowdHuman数据集,并讨论了适用于密集场景,并可以实现人-头绑定的检测技术Double Anchor。
本文主题是行人检测(Pedestrian Detection),主要围绕两篇论文展开:
(1)CrowdHuman [1]
CrowdHuman: A Benchmark for Detecting Human in a Crowd
(论文在文章末可直接下载)(2)Double Anchor [2]
Double Anchor R-CNN for Human Detection in a Crowd
(论文在文章末可直接下载)
通过这篇文章的解读,可以初步认识下行人检测的难题(拥挤场景检测)以及旷视研究院在解决该难题下的工作和思考。
前言
行人检测就是更具体的目标检测,只需要检测出行人即可。与通用目标检测相比,行人检测有自己的差异化特征。此外,从落地空间以及实用价值来看,行人检测更是一个值得研究的课题,例如可以用于自动驾驶,城市安全等等。
文章开始之前,本文先来聊聊行人检测和通用目标检测的区别,主要有两点:(1). 检测目标类别数不同; (2). 评测指标不同。第一点大家很容易理解,主要谈谈第二点。通用目标检测的评测指标是mAP@0.5-0.95(越高越好),而行人检测的评测指标是mMR (Log-average Miss Rate)(越低越好)。
mAP是对Precision和Recall做整体评估,即P-R曲线下的面积,在这个指标下的低分TP可以带来Recall的提升,因此mAP指标也会提升,这也是RetinaNet[3]涨点的一方面,如果观察其P-R曲线就可以发现很长的尾巴。
而mMR则是在FPPI@0.01-1(平均每张图FP数)下Miss(漏检)的平均,很明显这个指标同时关注FP(误检)和FN(漏检),因此mAP高的模型不一定mMR低。以上就是两个评测指标的区别,两个各有优劣,适用场景不同,例如对于行人检测来说,更重要的是减少FP,如果能减少高分FP将在指标上带来很大的提升。
对于行人检测来说,拥挤遮挡是一个很大的难题,将会导致大量的FP和FN的产生,如图所示:
在拥挤场景,不同人会相互交叠,导致其特征相互交叉以至于难以区分边界,这个时候检测器很可能会把多个人检测成一个人或者检测框会偏移。此外,目标检测系统最后都会有NMS(非极大值抑制)做后处理,但是如果两个人靠得很近,将很难确定NMS的阈值,太大则会导致误检多,太小导致漏检多。上图可以看到黄色虚线是被NMS误杀导致的FN,红色实线是特征交叉导致的FP。
CrowdHuman数据集
解决问题前,必须定义好问题。首先是如何衡量拥挤场景?目前已有的行人检测数据集够拥挤吗?于是Crowdhuman论文中首先统计了已知数据集(Caltech-USA[4], KITTI[5],COCOPersons[6]以及CityPersons[7])平均每张图的人的个数以及平均每张图两两交叉大于0.5(IOU>0.5)的pair对,结果如下:
以上结果可以看出目前已知的行人检测数据集包含的行人个数以及拥挤程度都是远远不够的,这也激发旷视研究院构建更大更拥挤的行人检测数据集,也就是CrowdHuman, 其中包括了15000张训练图片,4370张验证图片以及5000张测试图片,平均每张图含有22.64个人,两两交叉大于0.5人框的比例达到了2.4,这些都远远高于目前已有的数据集,也足够说明这个数据集的拥挤程度(当然可想而知,其检测难度也很大)。
值得一提的是,这个数据集除了和其它行人检测数据集一样提供了全身框和可见框的同时,还额外提供了头框标注,这为解决拥挤场景检测提供新的可能性。
论文中还提供了一些常用的检测网络Baseline,例如RetinaNet以及FPN[8],结果如下:
在全身框实验中,本文还和FPN在Caltech以及CityPersons数据集的结果进行比较,很明显的发现尽管FPN可以在目前已知数据集上取得不错的效果,但是在CrowdHuman这个数据集效果仍然不理想,这也恰恰说明了这个数据集的难度。
最后数据集泛化性实验肯定是必不可少的,论文里也有,本文就举COCOPersons为例吧:
加了CrowdHuman预训练模型直接涨了近2个点,简直是打比赛必备!
Double Anchor
在直接上方法之前,先多嘴说一下本文方法的Motivation。它的灵感来自于CrowdHuman数据集里的头框标注。联想一下日常生活中是怎么区分拥挤场景下的行人的(例如在车站里找人),毫无疑问肯定是找明显特征,然后人最明显的特征是人头;而且人头还有另外一个好处,头和头之间的交叉肯定比人小很多,这在拥挤场景下可以提供一个很好的先验。
那么现在问题就变成了怎么确定头和人的关系,即找到属于这个人的头。最暴力方法肯定是图片过一次行人检测,再过一次人头检测,再通过一些规则(例如IOU判断)确定人和头的匹配关系,这种方法称之为后绑定,但是这个人头匹配正确率并不高,主要原因是在拥挤场景下一个人框内可能存在多个头框,同时人体检测的召回率经常低于人头。于是我们开始思考如何做先绑定,让网络end2end得到一对匹配好的头框和人框。
做法很简单有效,如图所示:
上图就是我们提出的整个流程,其核心就是Double Anchor RPN这个模块,其在RPN阶段就可以得到一对匹配的头框和人框,当然比起正常的RPN,其预选框(proposal)可能质量不太高,于是我们又在训练时提出Proposal Crossover来帮助提高训练样本质量,本文认为这是一种有效的数据增强方式,在inference时候可以去掉。
紧接着头框和人框分别经过Roi-Align[9]得到特征,为了利用两者的特征互补性,又引入了Feature Aggregation模块,再经过RCNN得到头框和人框的边界框坐标和分数,最后为了有效地处理一对框,我们引入了Joint NMS作为后处理方式。接下来本文将分别介绍其中模块:
Double Anchor RPN
做法简单一句话概括就是,和头框groundtruth匹配的正样本anchor,同时要回归对应的人框。如上图(a)所示,Double Anchor RPN就是出两个回归offsets以及一个分类score。
Proposal Crossover
动机更简单,因为Double Anchor RPN只考虑了头框groundtruth来选正样本anchor,这样的话该anchor往往和对应的人框groundtruth偏差较大,这就带来了很大的回归难度,因此RPN阶段得到的人框proposal质量并不高。
换句话说,一个“头-人proposal对”里面,只有头proposal的质量很高,人proposal的质量不高,这会造成two stage detctor里的head部分训练效果不佳。
众所周知,proposal样本质量对RCNN来说是很重要的,类似结论在Cascade RCNN[10]中也提过。因此本文提出了Proposal Crossover,具体来说,在训练过程中并联了一支以人框groundtruth来选正样本anchor的Double Anchor RPN,这样可以保证人框proposal的质量,之后该分支的人框proposal和之前分支的人框proposal通过规则匹配(IOU>0.5),然后质量高的人框proposal就可以替换掉质量低的人框proposal,最终就可以得到一对质量高的头框和人框。
该方法作为一种训练数据增强方式,虽然存在错误匹配的一定概率,但是实验表明这种方式可以极大提升高质量的proposal对(头框&人框 IOU>0.5)的数目,从平均每张图40个提升到了97个。此外值得一提的是,和普通的数据增强一样,该分支在inference时可以去掉。结果如下:
Joint NMS
通过以上几个步骤可以得到一对头框和人框,那接下来Joint NMS的提出就是顺理成章的事情了。简单来说就是综合考虑了头框和人框的结果,首先最终的分数是采用两者的加权分数,然后如果更低分的匹配的头框或者人框和高分匹配对的overlap超过阈值则被抑制,算法伪代码大家可以在paper里找到。
以上就是每个模块的介绍以及相关实验,接下来再看看整体取得的效果:
不难发现,Double Anchor相比于Baseline取得了可观的提升,而且头框的检测精度也能得到提升。为了进一步验证该方法的涨点不是简单来自增加头框标注取得的,于是又和人框+头框的Multi-task实验进行对比,该方法仍然可以取得很大的提升。
目前也有一些其他工作在解决拥挤场景目标检测问题,本文主要对比了Repulsion Loss[11]以及Soft-NMS[12],本文方法和Repulsion Loss比也能有不错的提升,而且发现Soft-NMS反而会导致效果更差,这个原因其实和行人检测指标mMR有关,简单回顾下Soft-NMS做的事情,就会发现其主要是补了一些低分的TP,同样也会带来一些FP,最开始也提到了低分TP可以提升mAP指标,但是对mMR没太大帮助,而FP的产生会极大损害mMR指标。
当然,上面主要就是CrowdHuman一个数据集的实验,聪明的读者肯定也会觉得一个数据集怎么能证明方法有效性呢?然而其他数据集不够拥挤怎么办呢?为了两者兼顾,旷视研究院在CrowdPose以及COCOPersons数据集中切分出了拥挤的子集数据集,并进行实验,结果如下:
可以发现,我们方法在不拥挤的数据集上也能有些许提升,在拥挤的数据集下能有很大的提升。。一些极其拥挤场景的Double Anchor检测可视化效果图可以在论文里找到,欢迎感兴趣的同学去论文中查看。
整体来说,Double Anchor是一个非常非常简单有效的方法,目前已经部署在旷视的一些产品中,复现起来难度不大,论文也是通俗易懂,如果有疑问欢迎评论留言。
希望这个工作是抛砖引玉,激发更多的人研究并解决拥挤场景下的行人检测,而且本文方法的可扩展性很强,可以适配到其他应用中,比如,在行人跟踪任务中,因为拥挤很容易跟丢,即Track ID会错,而如果利用本文方法实现了头和人的绑定,就可以直接利用头框来提供Track ID了,精度也能有不错的提升,这个旷视研究院已经在尝试,从可视化效果来看确实不错。。
最后要说,行人检测最近又有很多的新的论文,以后有机会可以和大家再分享,衷心希望更多的人加入这个任务的研究中,推动行人检测技术进一步落地。
本文出自旷视研究院知乎专栏「旷视Video组」,它主要由AlignedReID,PCB,VPM论文作者张弛、孙奕帆等人维护。如果有兴趣加入Video Team可以把简历发给zhangchi@megvii.com,具体方向包括但不限于ReID、Detection、Tracking、Activity Recognition、GAN、OCR以及网络量化压缩等等。
参考文献
[1] Shao, S.; Zhao, Z.; Li, B.; Xiao, T.; Yu, G.; Zhang, X.; and Sun, J. 2018. Crowdhuman: A benchmark for detecting human in a crowd. arXiv:1805.00123.
[2] Zhang, K., Xiong, F., Sun, P., Hu, L., Li, B., & Yu, G. (2019). Double Anchor R-CNN for Human Detection in a Crowd.ArXiv, abs/1909.09998.
[3] Lin, Tsung-Yi, et al. "Focal loss for dense object detection."Proceedings of the IEEE international conference on computer vision. 2017.
[4]Piotr Dolla ́r, Christian Wojek, Bernt Schiele, and Pietro Per- ona. Pedestrian detection: A benchmark. In Computer Vision and Pattern Recognition, 2009. CVPR 2009. IEEE Confer- ence on, pages 304–311. IEEE, 2009.
[5]Andreas Geigerand Philip Lenzand Raquel Urtasun. Are we ready for autonomous driving? the kitti vision benchmark suite. In Conference on Computer Vision and Pattern Recog- nition (CVPR), 2012.
[6]Tsung-Yi Lin, Michael Maire, Serge Belongie, James Hays, Pietro Perona, Deva Ramanan, Piotr Dolla ́r, and C Lawrence Zitnick. Microsoft coco: Common objects in context. InEuropean Conference on Computer Vision, pages 740–755. Springer, 2014.
[7]Shanshan Zhang, Rodrigo Benenson, and Bernt Schiele. Citypersons: A diverse dataset for pedestrian detection.
[8]Lin, Tsung-Yi, et al. "Feature pyramid networks for object detection."Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
[9]He, Kaiming, et al. "Mask r-cnn."Proceedings of the IEEE international conference on computer vision. 2017.
[10]Cai, Zhaowei, and Nuno Vasconcelos. "Cascade r-cnn: Delving into high quality object detection."Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[11]Wang, Xinlong, et al. "Repulsion loss: Detecting pedestrians in a crowd."Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018.
[12]Bodla, Navaneeth, et al. "Soft-NMS--Improving Object Detection With One Line of Code."Proceedings of the IEEE international conference on computer vision. 2017.
专栏文章推荐
AAAI20 | 旷视研究院提出TextScanner:确保字符阅读顺序,实现文字识别新突破
欢迎关注旷视研究院极术社区专栏,定期更新最新旷视研究院成果
加入旷视:career@megvii.com
文件名 | 大小 | 下载次数 | 操作 |
---|---|---|---|
CrowdHuman A Benchmark for Detecting Human in a Crowd.pdf | 3.99MB | 0 | 下载 |
Double Anchor R-CNN for Human Detection in a Crowd.pdf | 7.02MB | 0 | 下载 |