【目标检测】Detection in Crowded Scenes: One Proposal, Multiple Predictions
文章目录
- 一、介绍
- 1.1 目标检测存在的问题
- 1.2 拥挤场景检测失败的原因
- 1.3 之前解决拥挤场景检测的方法
- 1.4 本文解决拥挤场景检测的方法
- 二、背景
- 2.1 改进NMS
- 2.2 改进损失函数
- 2.3 Re-scoring
- 三、我们的方法:多实例预测、EDM损失、SetNMS
- 3.1 多实例预测
- 3.2 EMD损失
- 3.3 Set NMS
- 3.3 优化模块:
- 3.4 讨论:与以前方法的关系
- 四、 网络体系结构
- 五、实验
- 4.1 CrowdHuman数据集上的实验
- 4.2 CityPerson数据集上的实验
- 4.3 COCO数据集上的实验
- 六、结论
一、介绍
1.1 目标检测存在的问题
基于提议的框架已被广泛应用于现代目标检测系统,包括单阶段和两/多阶段方法。虽然基于提议的方法已经在各大数据集中取得了最先进的性能,但在实际应用中对拥挤检测仍是一个很大的挑战。图(a)显示了一种常见的情况:检测器无法预测与其他实例严重重叠的实例(在虚线框中表示)。
1.2 拥挤场景检测失败的原因
这种在拥挤的场景中典型的失败主要归因于两个原因。
(1)高度重叠的实例(以及它们的相关建议)可能具有非常相似的特性。因此,检测器很难对每个建议分别生成有区别的预测。
(2)实例之间可能会严重重叠,因此预测很可能被NMS错误地抑制
1.3 之前解决拥挤场景检测的方法
以前的工作尝试从不同的角度来解决这个问题,如复杂的NMS、新的损失函数、重新评分、基于部分的检测器。然而这些要么过于复杂,要么在处理高度重叠的案例时效率较低,要么降低了低重叠案例的性能。
1.4 本文解决拥挤场景检测的方法
(1)多实例预测:
对于每个建议框,预测一组可能高度重叠的实例,而不是预测单个实例,如下图所示。这种方法使得附近建议框可能会推断出相同的实例集,而不是区分个体,这是很容易学会的。
(2)EMD损失:监督实例集预测的学习;
(3)Set NMS:
一套新的后处理方法Set NMS抑制来自不同提案的重复预测。
(4)RM模块:一个可选的细化模块(RM)来处理潜在的假阳性(错误预测)。使得预测更好
本文方法的表现:
我们的方法很简单,适用于所有基于提案的探测器,主要的修改是增加了一个预测分支,这只会带来微不足道的额外成本同时性能得到显著的改进:
在不同数据集上进行的所有实验都表明,方法可以很好地处理所有场景,而不考虑拥挤程度。
二、背景
目标检测系统通常有两个步骤:
1.生成提案框:例通过选择性搜索、预定义的或可学习的anchor或RPN。
2.实例预测:预测每个提案框对应的精修细化后的检测结果。即用一个置信度评分和一个重新定义的位置来预测每个提案框对应的单个实例。为了去除重复的预测,通常需要使用非最大抑制(NMS)等方法进行后处理。(本文主要关注第二步)
对于实例预测,当前最先进的目标检测框架通常在每个提案框上附加一个检测函数,用来确定提案是否与某个ground truth实例相关联,如果为真,则进一步预测相应的类标签和对象的细化边界框。这一机制意味着每个提案框对应于一个ground truth(通常是与提案框重叠最大的ground truth)。因此,提议框必须确保每个实例都有机会被检测到,这将为预测引入许多重复项。因此这些框架需要使用非最大抑制(NMS)等消除重复结果的方法来过滤重复结果。
上述模式在一些基准测试如COCO和PASCAL VOC上取得了优异的成绩。由于后处理方法(如NMS),在拥挤的场景中会出现检测缺失的问题。图(a)虚线框中的人被附近的框错误地压制。
目前已提出若干办法或变体来解决这一限制:
2.1 改进NMS
NMS有效性是基于假设多个实例很少出现在相同的位置,这将不满足拥挤场景。提出了几种改进的NMS方法:
(1)soft NMS和softer NMS:降低相邻预测提议框的信心值,而不是直接抛弃它们。
(2)【Optimized pedestrian detection for multiple and occluded people.】:利用ground truth大小的先验分布,采用二次二进制优化来预测实例。
然而NMS的这种启发式变体在不同的情况下并不总是有效的。因此需要引入更复杂的机制,例如使用神经网络进行更复杂、数据依赖的重复删除。尽管这些方法提高了NMS的上界,但是管道变得更加复杂、计算更加高昂。
(3)为不同边界框预测时使用不同NMS阈值。主要缺点需要一个额外的IoU/密度估计结构,这将引入更多超参数。但是仍然很难区分严重重叠的盒子。
2.2 改进损失函数
已有的一些工作提出了新的损失函数来解决拥挤检测问题。
聚合损失Aggregation Loss:强制提议接近并紧定位到相应的ground truth。
排斥力损失Repulsion Loss:为提议引入额外的惩罚与多个ground truth相交织。
利用这些损失函数,提高了拥挤场景中检测的质量。然而,由于框架中仍然需要传统的NMS,因此仍然很难解决重叠实例检测的问题。
2.3 Re-scoring
经典目标检测:
提案框只要与ground truth的重叠大于给定的阈值,提案框就绑定到这个ground truth,这通常会导致提案和groundtruth实例之间存在多对一的关系,因此NMS需要删除重复的提案。
Re-scoring:
重新设计损失函数,以鼓励一对一的关系,NMS过程可能会被取消,因此避免漏检,此方法为rescoring。
之前的一些工作也遵循了这一理念:
例YOLOv1、YOLOv2,每个ground-truth实例在训练期间严格地关联到一个提案框,然而由于提案之间缺乏连接,预测可能是模糊的,因为一个提案不能确定另一个提案是否预测相同的实例,并且NMS仍然参与其中。
RelationNet明确地对提案之间的关系进行建模,这能够克服YOLOv1、YOLOv2的限制。RelationNet即使没有NMS,使用重新评分,也可以在COCO数据集上获得出色的性能。然而,在一个更拥挤的数据集CrowdHuman中,重新评分的RelationNet性能相对较差。
因此,重新评分的网络需要从非常接近的建议中产生不同的预测(因此它们的特征和关系也非常相似),这对于神经网络是不可行的。
拥挤检测的其他方法:
如基于零件的检测器,主要用于检测行人等特殊情况。本文省略了讨论。
三、我们的方法:多实例预测、EDM损失、SetNMS
3.1 多实例预测
我们的方法是由观察激发的:假设有多个对象彼此严重重叠,如果一个提议对应于任何一个对象,那它很可能会与所有其他目标重叠。因此,对于这样一个建议框,与其预测单个对象,为什么不全部预测呢?
提案框bi绑定的ground-truth实例集:
对于每个提案框bi,预测相关的一组 ground-truth实例集G(bi),而不是单个实例:
是所有ground truth框、θ是一个给定的IOU阈值。图 (b)显示了这个概念。
提案框bi的预测:
对于每个提议框 bi,大多数现代的检测框架都使用了一个检测函数来预测一对(ci,li)来表示关联的实例,其中ci是类标签置信度,li是相对坐标。在我们的方法中,为每个提议框预测一组实例——引入K个检测函数来生成一组预测P(bi):
K是一个给定的常数,代表G(bi)的最大基数。P (bi)可以在大多数现有的检测框架中通过引入的额外的预测分支来实现,如下图:
注意对所有提案,K是固定的,网络仍然可以预测ci(K)为背景类,代表第K个检测函数没有为提议框bi预测实例。
3.2 EMD损失
EMD损失:最小化预测P(bi)和与提案框bi相关联的ground-truth实例集G(bi)之间的差距:
π代表一个特定排列的(1、2、… K), 第K项为πk。gπk∈G (bi)是πk的 ground truth框。Lcls(·)和Lreg(·)分别为分类损失和box回归损失。
在公式中,假设了|G(bi)| = K;如果不是,向G(bi)添加一些“哑”盒(其类标签被视为背景且没有回归损失),直到它满足假设。
如果K = 1, 公式就等于传统单实例预测框架中的损失,这意味着EMD损失是对常用检测损失的一种通用概括。
3.3 Set NMS
在我们的方法中,尽管每个提案能够预测多个实例,如果NMS仍参与后处理,这样仍然不能有效地检测拥挤场景的目标。幸运的是,由于EMD损失,一个提案框所预测的那些实例在定义上是惟一的。换句话说,重复预测只存在不同的提议之间的预测。
Set NMS:在NMS中每次一个边界框抑制另一个边界框之前,插入一个额外的测试来检查这两个框是否来自同一个提案,如果是则跳过抑制。
实验表明,只有多实例预测和Set NMS一起使用,方法才能在拥挤检测中取得显著的改进。
3.3 优化模块:
在我们的方法中,每个提议框都期望生成一组实例,而不是单个实例,由于生成了更多的预测,这可能会导致假阳性(错误预测)增加。
虽然实验很少出现失败的情况,但是我们引入了一个可选的细化模块,如图所示。该模块只是将预测作为输入,结合提议的特征,进行第二轮预测。细分模块能够纠正可能的错误预测。
3.4 讨论:与以前方法的关系
预测多个实例并不新鲜:
双人检测器在DPM框架中对人进行建模;在深度学习时代,一些早期的检测系统也隐含了多实例预测的高级思想,但这些方法并不是基于提议的。例MultiBox直接预测一个图像候选中的所有实例;YOLO v1/v2为每个网格单元生成多个预测(即预测集中在某个位置的所有实例)。
与我们最相关的之前的工作是[End-to-end people detection in crowded scenes],它引入了LSTM来解码图像中每个网格单元的实例框。与我们的EMD损失类似,使用Hungarian 损失来管理多个实例。在后期处理中,采用边界框缝合法将相邻网格产生的预测值进行合并。LSTM预测器是复杂的,它可能不容易集成到当前最先进的检测框架中。
四、 网络体系结构
从理论上讲,我们的方法可以应用于大多数最先进的基于提议的检测器,无论是单阶段还是两阶段框架。
在本文中,选择以RoIAlign作为基线检测器的FPN,来评价我们的方法,在FPN中区域建议网络(RPN)分支负责提议的生成,而RCNN 分支用于预测与RoI提案相关联的实例。
图 (a)展示了我们的方法在FPN(只显示了RCNN分支)中的使用,基于原来的架构做了一些微小的修改,在尾部附加一个实例预测。EMD损失应用于两个预测。细分模块是可选的,如果应用,我们使用精炼的结果作为最终的预测。
五、实验
数据集:
一个理想的拥挤场景的对象检测器应该对实例分布具有鲁棒性,即不仅对拥挤的检测有效,而且对单个/不太拥挤的对象检测稳定,采用了三个数据集——CrowdHuman、CityPersons和COCO——分别对严重、中度和轻微重叠的情况进行了综合评估。表列出了每个数据集的“实例密度”。
因为我们提出的方法主要是为了改善拥挤检测。所以在CrowdHuman上进行了大部分的对比和消除实验。在非拥挤数据集(如COCO)上的实验是为了验证我们的方法是否对非拥挤对象检测有害,而不是为了性能的改进。
评价指标:
平均精度(AP):这是最常用的检测指标。AP反映了检测结果的查准率和查全率。在我们的实验中,发现AP对recall分数更敏感,尤其是在CrowdHuman这样的拥挤数据集上,较大的AP表示性能较好。
MR**−2:每张图像假阳性(FPPI)的对数平均漏报率(log-average Miss Rate)的缩写,通常用于行人检测。MR−2对假阳性(FP)非常敏感,尤其是高信任度的FP会显著损害MR−2比值。MR−2越小,表现越好。
Jaccard指数(JI):主要用于评价检测器的计数能力。JI评估预测集与基本事实的重叠程度。JI越大,性能越好。
详细的设置:
除非另有说明,使用在ImageNet上预先训练的标准ResNet-50作为所有实验的骨干网络。基线检测框架为FPN,使用RoIAlign代替原来的RoIPooling。对于anchor的设置,使用与[Feature pyramid
networks for object detection.]相同的anchor尺度,而对于CrowdHuman和CityPersons,将纵横比设置为:H: W ={1: 1,2: 1,3: 1},对于COCO将其设置为:{2:1,1:1,1:2}。
对于训练,使用与[Feature pyramid networks for object detection.]相同的协议。批处理大小为16,分割为8个gpu。每次训练进行30次。在训练过程中,对于RoI的正、负建议的抽样比例CrowdHuman为1:1,CityPersons和COCO为1:3。不采用多尺度的训练和测试;相反,每个图像的短边被调整为800像素,用于训练和测试。所有框重叠阈值默认设置为0.5。对于我们的方法,使用K = 2,细分模块在默认情况下是启用的。
4.1 CrowdHuman数据集上的实验
CrowdHuman包含15000张、4370张和5000张图片,分别用于训练、验证和测试。
主要结果及消融研究:
表显示了提出的方法的消融实验,包括EMD损失、多实例预测、set NMS和细化模块。基线是使用NMS (IoU阈值为0.5)进行后处理的FPN。我们的方法在所有的标准中不断地提高性能。特别地,即使没有细化模块,我们的方法在AP和JI中仍分别获得4.5%和2.2%的提升,这意味着可以正确地检测到更多的实例;更重要的是,我们发现MR**−2比值也有所改善,这表明我们的模型没有引入更多的错误预测。细分模块对AP和JI的影响很小。
4.2 CityPerson数据集上的实验
CityPersons是广泛使用的行人检测基准之一。数据集包含5,000张图像(2,975张用于训练,500张用于验证,1,525张用于测试)。每个图像的大小为1024×2048。
表比较了我们的方法与使用NMS和Soft-NMS的FPN方法。结果表明我们的方法在一个相对强的基线上获得了显著的收益。
上表进一步分析了不同方法的召回情况。比较表明我们的方法是非常有效的处理拥挤的场面。
4.3 COCO数据集上的实验
从表可以看出,COCO的拥塞度很低,引入COCO的目的是验证:
1)方法是否能很好的推广到多类检测问题;
2)所提出的方法对不同的人群,特别是孤立的实例是否具有鲁棒性。
表给出了我们的方法与FPN、FPN+soft-nms基线的比较。实验表明,我们的方法不仅在拥挤的场景中非常有效,而且能够处理多个类和孤立的实例而不会导致性能下降。
六、结论
在本文中,我们提出了一种非常简单而有效的基于提议的对象检测器,它是专门为拥挤实例检测而设计的。该方法利用多实例预测的概念,引入了EMD损失、Set NMS和细化模块等新技术。我们的方法不仅有效,而且灵活,能配合最先进的基于提议的检测框架;此外,还可以很好地推广到不太拥挤的场景。
【目标检测】Detection in Crowded Scenes: One Proposal, Multiple Predictions相关推荐
- 【密集人群检测】Detection in Crowded Scenes: One Proposal, Multiple Predictions例程实现
1.简介 旷世研究院在CVPR2020上发表的论文<Detection in Crowded Scenes: One Proposal, Multiple Predictions>,提出了 ...
- 【CVPR2020】Detection in Crowded Scenes One Proposal Multiple Predictions 翻译
Detection in Crowded Scenes One Proposal Multiple Predictions翻译 一个候选框 多个预测结果 Abstract 不管是一阶方法还是二/多阶方 ...
- Detection in Crowded Scenes: One Proposal, Multiple Predictions(拥挤场景下的检测:一个提议,多个预测)
2020年发表在CVPR 原文链接:https://arxiv.org/pdf/2003.09163v2.pdf 使用本文方法进行目标检测的效果: 后面被遮挡着的人也被完全检测了出来! 1 目的 检测 ...
- 《CrowdDetection:Detection in Crowded Scenes: One Proposal, Multiple Predictions》论文笔记
参考代码:CrowdDetection 1. 概述 导读:在一些密集场景下检测算法由于算法自身问题导致其对密集场景检测存在问题,整篇文章正是解决这样的场景下的检测问题.这篇文章主要的思想就是将原来单个 ...
- 【CVPR2020】Detection in Crowded Scenes: One Proposal, Multiple Predictions笔记
原文链接:https://openaccess.thecvf.com/content_CVPR_2020/html/Chu_Detection_in_Crowded_Scenes_One_Propos ...
- 【论文笔记】End-to-end people detection in crowded scenes
论文地址: http://arxiv.org/abs/1506.04878 Github:https://github.com/Russell91/ReInspect tensorflow版本:htt ...
- End-to-end people detection in crowded scenes
End-to-end people detection in crowded scenes 将图像分成网格, 用LSTM在每个网格中单独预测物体, 产生一个序列化的输出预测结果 decoding an ...
- 【目标检测】概念理解:region proposal、bounding box、anchor box、ground truth、IoU、NMS、RoI Pooling
最近刚接触图像识别,理解一些概念十分困难,尤其是动不动就冒出个看不懂的英语,让人抓狂.查了不少资料后做一个总结并加上一些自己的理解,理解若有误,烦请大家指出,相互学习. 本文主要对region pro ...
- 目标检测中的anchorproposals、Region Proposal什么意思?
1. proposal proposal:候选框.指的是二阶段方法中RPN的输出框,也就是对anchor第一次做回归得到的结果. (anchor(基于一个中心点创建出的几种大小和长宽比的框)是Prop ...
最新文章
- Matlab学习笔记——图形绘制
- tesseract 4.0 编译安装(CentOS)
- python服务器搭建nginx_Nginx简单快速搭建文件服务器
- 4025-数组的正负排序(C++,双指针法,附思路)
- 深度linux添加xp,Linux和Windos XP下向路由表添加路由
- yy神曲url解析php_用PHP如何实现解析抖音无水印视频
- 2022危险化学品生产单位安全生产管理人员考试试题模拟考试平台操作
- SpringBoot静态资源处理(九)
- 三极管来源,及NPN与PNP区别
- C语言醉酒,驾驶人在道路上饮酒醉酒驾驶机动车处3年以上有期徒刑
- 解析:Are We Really Making Much Progress?A Worrying Analysis of Recent Neural Recommendation Approaches
- 文章推荐列表(个人收藏)
- 【腾讯TMQ】测试建模兵器谱
- 朋友圈文案_隐私条款
- 鼠标右键“新建”选项没没有如何解决?
- 安卓大作业-字典App 可以查询汉字 可以玩成语接龙游戏
- 笔记本外接显示器鼠标卡顿、显示器掉帧解决办法
- 基于机器学习的电影票房分析与预测系统
- 区块链3+1:2018区块链媒体趣味花名册
- 腾讯企业邮箱通过Python自动发送邮件
热门文章
- 地奥畅依笙 源于医药科技,忠于健康运动!
- Android最佳性能实践(一)——合理管理内存
- 国密SSL通信协议详细介绍与抓包分析
- QQ浏览器查看Cookies
- NTC热敏电阻计算温度之C代码
- Java基础 DAY03
- java版商城之一件代发设置 Spring Cloud+SpringBoot+mybatis+uniapp b2b2c o2o 多商家入驻商城 直播带货商城 电子商务
- Arduino基础篇(七)-- 如何使用DS18B20数字温度传感器(基于OneWire和DallasTemperature库)
- 计算机网络三大总线,计算机总线分为哪三种?
- 一文带你了解Kafka【一看就懂】