本文为极市平台原创文章,转载请附原文链接:
https://blog.csdn.net/Extremevision/article/details/82801692
——————————————————————————————————————————————

作者:Panzer
论文地址:https://arxiv.org/abs/1807.08407
本文首发于极市博客

背景介绍

与通用目标检测相比,遮挡情况在行人检测中更为普遍,为此也是行人检测领域最广为关注的问题之一。现实场景中行人的遮挡情况主要分为两种情况:一种是行人个体之间的相互遮挡,这往往会引入大量的干扰信息,进而导致虚检;一种是其他物体对行人的遮挡,这往往会带来目标信息的缺失,进而导致漏检。近年来,已有很多解决遮挡问题的相关工作发表,主要有两种思路:一是对目标候选框分成不同part逐一处理、区别对待再加以特征融合,这种思路更适用于第一种遮挡情况;二是从loss的角度使得目标候选框对相互遮挡的情况更具判别性,如CVPR2018的RepLoss[1],这种思路更适用于第二种遮挡情况。

作为通用目标检测中的一个特定问题,现有基于CNN的行人检测方法主要来源于通用目标检测,目前主流的行人检测算法多基于Faster R-CNN框架,本文也不例外,但提出了两种全新的策略,分别针对性地解决以上两种遮挡问题,并实验验证了其有效性。

本文方法

OR-CNN遵循两阶段的Faster R-CNN的检测框架,其主要包括两个部分:第一阶段RPN产生目标候选框,第二阶段Fast R-CNN对目标候选框进行进一步的分类和回归。为了处理遮挡问题,本文提出两种策略:aggregation loss和PORoI pooling unit,分别加持在两个阶段上,当然aggregation loss也适用于第二阶段,详情见下文。

Aggregation Loss:

在行人个体之间的相互遮挡时,会产生相互重叠的虚检。为了减少这种虚检,作者从anchor出发,通过设计一种loss,使得训练过程中多个匹配到真实目标上的anchor尽量靠近,具体实现方式为在原有的regression loss基础上加上compactness loss,因此本文提出的Aggregation Loss就包括两部分:

其中为正常的regression loss,采用原始Faster R-CNN中选用的smooth l1 loss;

是本文设计的compactness loss,使得多个匹配上真实目标的anchor能够更加紧密围绕在真实目标周围,具体实现方式为:

也即对多个匹配上真实目标的anchor的回归目标取平均值再与真实目标计算误差,误差度量依然采用的是smooth l1 loss。值得注意的是,Aggregation Loss既可以用在第一阶段也可以用在第二阶段。

Part Occlusion-aware RoI Pooling Unit:

Faster R-CNN的第二阶段需要提取每个目标候选框的特征,如果对目标候选框分成不同的Part分别提取特征,就可以减少遮挡位置对全局特征的影响,这也是处理遮挡问题的一种常用方式。与已有方式不同的是,本文并非随机选取part,而是根据先验将行人目标分成5个part(如下图1所示),分别提取这5个part的特征,这种根据人体布局的先验能够获得互补的局部特征,再结合整个目标的全局特征做加权求和,得到融合特征再做进一步的分类和回归。显然,这里的加权方式就显得尤为重要,为此作者提出了一种遮挡处理单元(图1(b)所示),该单元的输出是一个sigmoid值,意味着该part没被遮挡的程度,因此遮挡处理单元就是一个二分类问题,可以和检测网络联合训练了。

综上,第二阶段的损失函数包括三个部分:分类loss、定位loss和遮挡处理单元loss,如下式所示:

其中的定位loss和第一阶段一致,也是采用的本文提出的第一个遮挡处理策略:Aggregation Loss。

实验分析

实验细节:
本文的detector采用的是改进版的Faster R-CNN[2],以保证实验对比的公平性,验证实验是在CityPersons验证集上做的。对比实验是在CityPersons、Caltech-USA、ETH和INRIA,其中Caltech训练和测试均采用新标注[3]。

实验结果:
首先我们看下在CityPersons验证集上的剥离实验(如下表),其中Scale x1.3代表将图像扩大1.3倍进行测试,heavy partial bare代表不同的遮挡程度,可见本文OR-CNN不仅在Reasonable设定下取得了最佳性能,而且在严重遮挡情况下也取得了最好的检测结果,miss rate比RepLoss降低了4个点。此外,通过对本文提出的两个策略进行剥离分析,可见AggLoss和PORoI二者对检测性能的提升均有贡献,其中AggLoss聚焦于loss层面,因此测试时不会带来算法耗时的增加,是一种更为经济的处理遮挡情况的方式。

下图对AggLoss的作用做了进一步的可视化分析,通过有无AggLoss的对比,图(a)表明训练时,目标候选框能够更加紧密集中在目标周围,图(b)表明测试时,加上AggLoss训练的检测器对NMS阈值的选取更为鲁棒,而Baseline则对NMS阈值的选取则非常敏感,由于CityPersons数据集中遮挡情况较为普遍,所以NMS阈值达到0.55时才能取得最好效果。

下图则对PORoI的作用做了进一步的可视化分析,本文共对行人目标分成5个part,遮挡处理单元会对每个part进行打分,得分越低代表遮挡越严重,从图3可以发现图(a)(b)中没有遮挡的情况下,每个part的得分都普遍偏高,而在图(e)(f)存在严重遮挡时,下面两个part(黑色)的得分较低,充分验证了本文PORoI的有效性。

同样在Caltech测试集上的表现也是state-of-the-art(如下图4):在Reasonable设定下取得了4.1的表现,仅次于第一名RepLoss0.1个百分点。此外论文中还展示了在ETH和INRIA数据集上的结果,同样也是state-of-the-art,在此不再赘述。

总结展望

本文贡献:
(1)本文重点关注行人检测中的遮挡问题,并为此提出了两种遮挡处理策略。

(2)本文提出的两种遮挡处理策略分别来自不同的角度,分别加持在Faster R-CNN检测框架的两个阶段,因而具有互补性,在CityPersons严重遮挡子集上展现了非常出色的性能。

个人见解:
(1)本文重点针对行人检测中长期以来广为关注的问题——遮挡,已有工作中主要从‘分part’的角度加以解决,而CVPR2018的RepLosss[1]首次提出从loss的角度加以解决,使网络在自动学习的过程中不断提升定位性能。本文分别从以上两个角度提出了两种全新的策略,思路简洁而有效。有关RepLosss[1]的技术解读已在极市平台发表,详情可见[4]。

(2)值得注意的是,尽管近年来有大量工作聚焦于行人检测中的遮挡问题,但现有算法距离该问题的解决依然还有很长的路要走,从论文中展现的结果来看,遮挡情况下的检测结果要远远劣于非遮挡情况下的结果。一个很关键的原因来自于人群密集场景下行人自遮挡的情况普遍存在,在训练数据有限的情况下,基于有监督训练得到的检测器难以学习到无法穷尽的各种遮挡情况,因此如何利用现有的无监督或者半监督方式来改善这个问题,应该是非常值得探索的一个方向,期待你的精彩发现。

**参考文献**

[1] Repulsion Loss: Detecting Pedestrians in a Crowd. CVPR (2018)

[2] Citypersons: A diverse dataset for pedestrian detection. CVPR (2017)

[3] How Far are We from Solving Pedestrian Detection? CVPR (2016)

[4] CVPR 2018 | Repulsion loss:专注于遮挡情况下的行人检测

ECCV 2018 | OR-CNN行人检测:为‘遮挡’而生相关推荐

  1. ECCV 2018 | CornerNet:目标检测算法新思路

    本文为极市平台原创文章,转载请附原文链接: https://blog.csdn.net/Extremevision/article/details/82799308 ----------------- ...

  2. ECCV 2018 | Bi-box行人检测:‘行人遮挡’为几何?

    极市平台是专业视觉算法平台,主要为开发者提供真实项目需求,视觉算法开发等服务,点击填表加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会 ...

  3. Repulsion Loss: Detecting Pedestrians in a Crowd 详解(遮挡下的行人检测)

    最近做行人检测Re-ID的工作,读了Repulsion Loss: Detecting Pedestrians in a Crowd,所以刚好记录一下对论文的阅读和个人理解.文章中部分内容为引用别人的 ...

  4. ECCV 2018论文解读及资源集锦(8月20日更新)

    本文为极市平台原创收集,转载请附原文链接: https://blog.csdn.net/Extremevision/article/details/81875068 之前我们整理了CVPR 2018 ...

  5. 在CNNs中通过引导注意力进行遮挡行人检测(论文翻译)

    Occluded Pedestrian Detection Through Guided Attention in CNNs based on the FasterRCNN 1.介绍 为了在一个连贯的 ...

  6. 遮挡也能识别?地平线提出时序信息提升行人检测准确度|​CVPR 2020

    来源 | 驭势科技 行人检测作为计算机视觉领域最基本的主题之一,多年来被广泛研究.尽管最先进的行人检测器已在无遮挡行人上取得了超过 90% 的准确率,但在严重遮挡行人检测上依然无法达到满意的效果.究其 ...

  7. CVPR2020 | 遮挡也能识别?地平线提出用时序信息提升行人检测准确度

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:AI科技评论 AI博士笔记系列推荐 周志华<机器学习> ...

  8. ECCV 2018丨YOLO遇上OpenPose,近200FPS的高帧数多人姿态检测

    伊瓢 发自 凹非寺  量子位 报道 | 公众号 QbitAI 在高帧数下,如何实现人体姿态检测? 下面这条刷屏的twitter视频给出了答案. 这是今年ECCV上的一篇名为<Pose Propo ...

  9. ECCV 2018|商汤37篇论文入选,为你解读精选论文(附链接+开源资源)

    整理 | Jane 出品| AI科技大本营 [导读]9 月 8 日-14 日,每两年举办一次的 2018 欧洲计算机视觉大会(ECCV 2018)在德国慕尼黑召开,本次会议总共收到了 2439 篇有效 ...

最新文章

  1. 风变编程python小课课件_风变编程Python小课最近很火,大家学完感受如何?
  2. python装饰器-如何理解Python装饰器?
  3. java.net.Socket 解析
  4. info java module_JAVA新特性视频教学:第三天_21_认识module-info.java文件.mp4
  5. C++中的string类型转换为int类型
  6. MATLAB灰度级数为1,图像处理 – 在matlab中更改灰度图像中的灰度级数
  7. 竞拍系统c语言,C++版扫拍卖源代码,非程序,这下不会删帖吧?
  8. 计算机如何接6块显卡,双显卡怎么切换到独立显卡 5步轻松搞定【图文教程】
  9. RFI射频干扰、谐波、基波
  10. 千万流量秒杀系统-过载保护:如何通过熔断和限流解决流量过载问题?
  11. Android 6.0(棉花糖)新特性
  12. 【有利可图网】PS教程:简单制造火焰文字特效
  13. Vue源码学习之Computed与Watcher原理
  14. 条形码识别Matlab版本
  15. open3D点云操作
  16. 【HTML+CSS】制作文字依次闪烁的霓虹灯特效
  17. 听说你还搞不懂Golang的Slice?看这一篇就够了!
  18. fragment中viewpage2留白的问题
  19. Web自动化测试——实践篇
  20. matlab2012教程答案,MATLAB教程2012a第6章习题解答-张志涌

热门文章

  1. vue-manage-system 后台管理系统开发总结
  2. 如何优化页面的响应速度 以及如何减少项目初次加载时间(转https://www.cnblogs.com/MarcoHan/p/5295398.html)...
  3. 【python】xsspider零碎知识点
  4. ActionResult的其它返回值
  5. 使用管道符在PowerShell中进行各种数据操作
  6. 读《台湾码农的心路历程》
  7. 【OpenCV】将RGB图像转为灰度图
  8. redis value多大会影响性能_事务对MySQL性能有什么影响?有无索引查找对其影响有多大?...
  9. 一些影响SCI论文接收的技术性问题盘点
  10. 机器人学习--AMCL导航包自己修改源码编译和调用方法