论文笔记 Repulsion Loss: Detecting Pedestrians in a Crowd

本文设计了一种loss函数用于加强bbox的回归精度,这个特性适用于目标密集且相互遮挡较多的场景,例如行人检测问题。该文的想法与另一篇文章《Individualness and Determinantal Point Processes for Pedestrian Detection》类似,后者通过行列式处理,前者设计loss函数。

Abstract

在人群中检测个体行人仍然是一个具有挑战性的问题,由于在真实世界场景中行人通常聚集在一起并且相互遮挡。本文我们首次通过实验研究人群间的相互遮挡如何影响行人检测器的性能,对人群间遮挡的问题进行了分析。然后我们提出了一个针对人群场景设计的外接矩形回归损失函数,称为repulsion loss。该损失包含两个部分:与目标的attraction项和与周围物体的repulsion项。repulsion项避免矩形框偏移到旁边的物体上,因此对群体中的定位更加鲁棒。基于repulsion损失训练的检测器在遮挡场景下相对其它检测器有显著提升。

1. Introduction

遮挡是目标检测领域一直需要解决的问题,这里有类间和类内两种。类内遮挡我们可以称为crowd遮挡。在行人检测中,大部分遮挡都是crowd遮挡。因子大部分行人检测场景,监控、自动驾驶,行人通常一起出现。例如在CityPerson数据集中,48.8%的行人相互遮挡的IoU大于0.1,26.4%的大于0.3。高频的crowd遮挡验证影响了行人检测的性能。

crowd遮挡的问题增加了行人定位的难度。例如当行人T与B重叠时,检测器会被相似的外观特征混淆,导致本来应该检测T目标的bbox偏移到B上,导致定位错误。并且经过NMS后,偏移的bbox可能被抑制导致漏检,因此crowd遮挡使得检测率对NMS的阈值非常敏感:高NMS虚警多,低NMS漏检多。这样的问题会影响许多实例分割框架,由于其需要非常精确的检测结果。因此如何在crowd场景中对个体行人鲁棒的定位是行人检测非常重要的问题。

在SOTA检测框架中,bbox回归用于目标定位,回归器能够减少proposal与gt直接的距离。然而,现有的方法仅要求proposal接近gt,而不考虑周围目标的影响。如图1所示,标准的bbox回归损失是不考虑周围的目标的。这带来一个问题:能否在检测人群中的一个目标时考虑周围目标的位置?

受到磁铁的启发,本文提出一种新的定位技术,repulsion 损失。其要求目标不仅接近目标T,并且远离周围的gt和bbox。换句话说,RepLoss包含两个部分:目标的吸引,非目标的排斥。如图1所示。红色bbox偏移到B会产生惩罚。因此RepLoss能够使得检测器对crowd场景更鲁棒。我们的贡献如下:

  • 我们先研究了crowd遮挡对行人的影响在CityPerson进行了量化分析
  • 提出两类repulsion损失,RepGT 和 RepBox,前者避免bbox偏移到旁边的目标,后者减少NMS的影响
  • 提出一个repulsion loss,端到端的行人检测器,在CityPerson和Caltech实现SOTA的性能。

目标定位

  • RPN
  • Denbox[^15]提出一个不用anchor的全卷机网络
  • IoU Loss[^29] 最大化gt和bbox直接的IoU
  • Desai[^4] 也提出了不同类别吸引和对抗,但是没有从全局模型上解决目标类别问题

行人检测

  • ACF, LDCF, Checkerboard等ICF检测器
  • RPN+BF,HyperNet
  • 部件模型[^23],[^27],[^34]处理遮挡问题
  • 学习非极大值抑制[^13]

3. What is the Impact of Crowd Occlusion?

为了分析人群遮挡问题,本节我们实验研究了人群遮挡对行人检测结果的影响程度。在分析之前,首先介绍使用的数据集和基准检测器。

3.1 Preliminaries

数据集和评估指标

本文采用CityPerson数据集,包含5k张图片,35k个行人,13k个忽略区域。实验分别在reasonable train/validation 集上训练和测试。评估指标:log miss rate in FPPI[0.01,1]

检测器

我们采用最常见的Faster R-CNN作为检测器,并按照Zhang[^31]和Mao[^21]的设置对其进行修改。除此之外,我们使用R-50替代VGG16,其速度更快且参数更少。

另外,ResNet很少用于行人检测问题,其原因是卷积层的将采样比率过大而不能检测和定位小型人。为了解决这个问题,我们在最后的特征图上使用膨胀卷积,使得最后的缩放比例为1/8。本文的ResNet方法实现了14.6 MR-2比CityPerson论文中的性能稍好。

3.2 错误分析

漏检

首先我们在基准检测器上分析由于人群遮挡导致的漏检。CityPersons数据集提供了bbox和可见区域,因此遮挡occ可按下式计算

$$occ = 1 - \frac{area(BBo{x_v})}{area(BBox)}$$

虚警

我们定义$occ\ge0.1$为遮挡,$occ\ge0.1$ & $IoU\ge0.1$为人群遮挡。通过统计在reasonable validation验证集中,包含1579个行人,其中810个为遮挡案例,479个为人群遮挡案例。很明显由于行人产生的遮挡超过了遮挡案例的一半以上

如图2所示,我们分别评估了在不同FPPI下的检测器漏检率,并统计了漏检GT分别属于三个子集的数量。

之后我们统计了所有虚警中人群站的比例,如图3(b)红线所示,大约20%。如图4所示,我们发现人群错误通常发生在预测的bbox偏移到旁边非目标GT上,或者多个GT有重叠的情况。并且,人群错误通常具有很高的置信得分导致很高的排名。因此改进检测器人群场景的鲁棒性,回归bbox时需要更具分辨性的loss。

结论

pedestrian detectors are surprisingly tainted by crowd occlusion, as it constitutes the majority of missed detections and results in more false positives by increasing the difficulty in localization.

提出Repulsion loss用于改进人群场景的行人检测器

4. Repulsion Loss

该损失受磁铁的启发,吸引和对抗包含三个部分

$$L=L_{Attr}+\alphaL_{RepGT}+\betaL_{RepBox}$$

  • $L_{Attr}$ 是吸引项,其要求预测的bbox接近被分配的目标
  • $L_{RepGT},L_{RepBox}$ 是对抗项,要求预测的bbox原理周围的目标和其他被分配了目标的bbox

为了简单起见,先考虑两类检测问题,所有的GT都是同一类别,P和G分布是proposal和GT的bbox。P+是所有正proposal,至少有1个GT作为P+,其他的作为负样本。

吸引项 使用一些距离目标函数来减少bbox和gt的检测,如欧式距离,SmoothL1距离,IoU。为了公平期间,本文采用SmoothL1,如大部分文章选择的方式。吸引项如式2所示,$G^p_{Attr}$选择IoU最大的gt作为该$B^p$的目标。

$$L_{Attr}=\frac{\sum_{P\in P+}SmoothL1(B^p,G^p_{Attr})}{|P+|}$$

对抗项(RepGT) 用于对抗不属于当前bbox回归目标的bbox。

首先找到与当前P有最大IoU的$G^p_{rep}$,然后基于IoG计算loss,$IoG(B,G)=\frac{area(B\cap G)}{area(G)}$

RepGT loss为:

$$
L_{RepGT}=\frac{\sum_{P\in P+}SmoothLn(IoG(B^p,G^p_{Attr}))}{|P+|}
$$

$$
SmoothLn = \left{ {\begin{array}{{20}{c}}
{ - \ln (1 - x)}\
{\frac{x - \sigma }{1 - \sigma } - \ln (1 - \sigma )}
\end{array}} \right.\begin{array}{
{20}{c}}
{x \le \sigma }\
{x > \sigma }
\end{array}
$$

$\sigma$ 是平滑参数用于调整对抗的敏感性。当B与非目标GT越接近,则惩罚越大,因此RepLoss可以有效避免BBox偏移到周围的GT。

对抗项(RepBox) NMS对人群中行人检测的影响大,因此提出RepBox Loss用于对抗不同gt目标的bbox。

$$
L_{RepBox}=\frac{\sum_{i\ne j}SmoothLn(IoU(B^p_i,B^P_j))}{\sum_{i\ne j}1[IoU(B^p_i,B^P_j)>0]+\varepsilon}
$$

上述公式可知,我们期望不同目标gt的B的IoU越小越好。RepBox Loss能够减少NMS导致的BBox被抑制的可能性。

4.1 讨论

距离函数 值得注意的是,我们在Rep项中选择IoG和IoU作为距离函数,而不是smoothL1,因为IoG和IoU的大小在[0,1],而smoothL1不是,因此如果用在RepGT中其会导致bbox离gt越远越好。IoG只要求其交集达到最小即可。这更符合我们的期望。采用IoG而不是IoU,因为采用IoU会引导回归的bbox尺寸变大。

平滑参数$\sigma$ 不同于论文[^29]里直接采用$-ln(IoU)$的作为损失函数,我们提出平滑的ln函数smoothln。该参数的作用是调节函数对周围bbox或gt的敏感程度。由于bbox比gt密集的多,因此平滑参数在RepBox中小,在RepGT中大。

5. 实验

首先我们介绍实验设置和实现细节,在CityPerson上评估RepGT和RepLoss,

5.1 实验设置

数据集 CityPerson,Caltech-USA。我们在Zhang提供的新的标注上进行实验。

训练细节 我们在自己构建的快速灵活的深度学习框架上实现

  • lr : 0.016
  • iter : 80k(CityPerson), 160k(Caltech)
  • step : 60k(CityPerson), 120k(Caltech)
  • GAMMA : 10
  • weight decay : 0.0001
  • momentum : 0.9
  • Batch per GPU : 1
  • GPU : 4
  • 使用 OHEM加速收敛

5.2 消融实验

RepGT 参数$\sigma,\alpha,\beta$,当$\sigma=1.0$时RepGT效果最好,相当于没有进行平滑处理。图3(a)显示了增加RepGT之后的MR的变化,在reasonable-crowd集上漏检显著下降,若以0.5作为阈值,那么漏检率下降了10%。如图3(b)所示,RepGT产生的虚警更少。

RepBox 当$\sigma=0$时效果最好,即完全平滑,因为BBox比GT密集的多。NMS高导致MR高,NMS低导致FP高。图6显示,在各种NMS下RepBox更好。如图7所示,在gt之间的bbox的数量更少。

平衡RepGT和RepBox 根据表2所示,最优的参数是0.5。

5.3 比较SOTA方法

为了展示在不同遮挡情况下的有效性,将数据集分为:

  • reasonable,≤35%
  • reasonable-partial,10%<occ≤35%
  • bare,occ≤10%
  • heavy,occ>35%

表3总结了RepLoss在CityPerson上的性能,实现了13.2MR,提升了1.4%,在Heavy集上,提升了3.7%,partial集上提升1.8%,在bare上午明显提升

RepLoss在caltech集上的表现如图8和表4所示。在IoU=0.5时,RepLoss实现了5.0的MR,并且在高IoU时提升更多。

6. 拓展:一般目标检测

RepLoss也可用于一般目标检测。我们在PASCAL VOC数据集上进行实验,Faster R-CNN (ResNet-101) 作为基准,NSM阈值为0.3,在trainval07和train12训练,test07测试,相比于baseline mAP提升了3.4。如表5所示,RepLoss对整体的提升不大,但是对crowd subset,提升了2.1 mAP。说明本文提出的方法可以拓展到一般目标检测。

7. 结论

本文,我们设计 replusion loss 用于行人检测,其提升了人群场景的检测性能。主要的想法是基于目标吸引项的loss对于训练一个最优的检测器是不够的,增加周围的对抗项是必要的。

为了实现对抗项,我们提出了两类对抗损失,在CityPerson和Caltech两个数据集上均实现了最优的性能。详细的实验证明了RepLoss的价值,并且可以用于一般目标检测,我们期望该loss能广泛用于其他目标检测任务。

[^21]: J. Mao, T. Xiao, Y. Jiang, and Z. Cao. What can help pedestrian detection? In CVPR, 2017.
[^31]: S. Zhang, R. Benenson, M. Omran, J. Hosang, and B. Schiele. How far are we from solving pedestrian detection? In CVPR, 2016.