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

最近做行人检测Re-ID的工作,读了Repulsion Loss: Detecting Pedestrians in a Crowd,所以刚好记录一下对论文的阅读和个人理解。文章中部分内容为引用别人的,我在文章最后也给出了引用的文章链接。如有侵权,请联系我删除。

一、综述

行人检测中遮挡分为两种类型,一种是由于非目标造成的遮挡,文中作者称为Reasonable-occlusion,另外一种是由于也是需要检测的目标造成的遮挡,作者称为Reasonable-crowd。对于前一种类型遮挡,很难有针对性的办法去解决,最好的办法也就是使用更多的数据和更强的feature。但是对于后一种类型的遮挡,现在的pipeline其实并没有很好充分利用信息,例如下面示意的这个情况,两个黑色的框代表的是两个Ground Truth,红色和绿色分别是被assign到1号的GT上的anchor或者proposal。
Repulsion Loss: Detecting Pedestrians in a Crowd 详解(遮挡下的行人检测)_第1张图片
虽然这两个proposal和左面GT的IoU一样,但是显然绿色的更容易受到2号GT的影响,从而远离它真实的目标,这也是为什么crowded的情况中,误检经常出现在两个真正GT中间的原因。但是我们为了抑制这样的误检,又不能一味提升NMS的阈值,否则会对于真正靠近的情况错误抑制。

作者作者还在CityPersons数据集上分别做了定量统计,可以看到在不同的误检率下,从图中可以发现遮挡占据了近60%的席位(蓝色+橙色),而在这60%席位中,自遮挡又占据了近60%。
Repulsion Loss: Detecting Pedestrians in a Crowd 详解(遮挡下的行人检测)_第2张图片

二、Repulsion Loss

作者提出Repulsion loss函数定义如下:
在这里插入图片描述
其中第一个子模块 L A t t r L_{Attr} LAttr是使得预测框和匹配上的目标框尽可能接近,即:smooth L1损失,目的是使回归目标与GT接近;第二个子模块 L R e p G T L_{RepGT} LRepGT是使得预测框和周围的目标框尽可能远离,即:目标是使proposal和要尽量远离和它overlap的第二大的GT;第三个子模块 L R e p B o x L_{RepBox} LRepBox是使得预测框和周围的其他预测框尽可能远离,即:使assign到不同GT的proposal之间尽量远离。通过第二个和第三个loss,不仅仅使得proposal可以向正确的目标靠近,也可以使其远离错误的目标,从而减少NMS时候的误检。

Attraction Term( L R e p B o x L_{RepBox} LRepBox

因为 L R e p B o x L_{RepBox} LRepBox是使得预测框Pi和周围的其他预测框Pj尽可能远离,Pi和Pj分别匹配上不同的目标框,它们之间的距离采用的是IoU,则RepBox loss定义为:
Repulsion Loss: Detecting Pedestrians in a Crowd 详解(遮挡下的行人检测)_第3张图片
从式(4)中可以发现当预测框Pi和周围的其他预测框Pj的IoU越大,则产生的loss也会越大,因此可以有效防止两个预测框因为靠的太近而被NMS过滤掉,进而减少漏检。

Repulsion Term ( L R e p G T L_{RepGT} LRepGT)

因为 L R e p G T L_{RepGT} LRepGT是使得预测框P和周围的目标框G尽可能远离,这里的周围的目标框是除了匹配上的目标框以外的IoU最大的目标框,也即和它overlap的第二大GT:
在这里插入图片描述
作者使用了Intersection over GT(IoG)而不是传统的IoU,原因在于GT无法改变,仔细思考一下,如果是IoU的话,那么只要预测框足够大就一定能够使得RepGT loss减小,而这和我们的预期目标是不一致的,也就是说如果使用IoU则网络可以通过放大proposal的方式来降低loss,但是这并不是我们所期望的。如果直接使用IoG,分母是GT的面积无法改变,从而规避了这样的问题。
在这里插入图片描述
所以RepGT损失定义为:
Repulsion Loss: Detecting Pedestrians in a Crowd 详解(遮挡下的行人检测)_第4张图片
Note:P ∈ P + P_+ P+,即为GT
B P B^P BP即为预测的box
P = (lP , tP , wP , hP ) 表示proposal bounding box
G = (lG, tG, wG, hG) 表示groundtruth bounding box
P+ = {P} is the set of all positive proposals (those who have a high IoU (e.g., IoU ≥ 0.5) with at least one ground-truth box are regarded as positive samples, while negative samples otherwise).
G = {G} is the set of all ground-truth boxes in one image.
从(4)我们可以看出:当预测框P和周围的目标框G的IoG越大,则产生的loss也会越大,因此可以有效防止预测框偏移到周围的目标框上。此外,式(5)中的sigma是一个调整LRepGT敏感程度的超参数。
其中这个Smooth_ln是针对0到1的输入变量设计的一个robust function,具体形状如下所示:
Repulsion Loss: Detecting Pedestrians in a Crowd 详解(遮挡下的行人检测)_第5张图片
可以看到,正如Smooth_l1不会对特别大的偏差给予过大的penalty,Smooth_ln对于很小接近于1的输入也不会像原始的ln函数一样给予负无穷那么大的loss,从而可以稳定训练过程,而且对抗一些outlier。

暂时还没看到作者给出源码

参考链接:https://zhuanlan.zhihu.com/p/41288115
https://zhuanlan.zhihu.com/p/43655912

你可能感兴趣的:(行人检测,深度学习,目标检测)