《CrowdDetection:Detection in Crowded Scenes: One Proposal, Multiple Predictions》论文笔记

参考代码:CrowdDetection

1. 概述

导读:在一些密集场景下检测算法由于算法自身问题导致其对密集场景检测存在问题,整篇文章正是解决这样的场景下的检测问题。这篇文章主要的思想就是将原来单个框检测的方式修改为预测一个相互关联框的集合(instance set)(可以看作是一块区域目标的集合),并且针对这种改进提出了EMD Loss和Set NMS去监督与提取最后的结果。文章的方法使用FPN-Res50作为backbone在CrowdHuman数据集上获得了4.9%(without RM),在CityPersons数据集上提升1%的 M R − 2 MR^{-2} MR2。并且文章的方法具有较好的可移植性(适配很多现有的检测算法)和通用性(其在COCO数据集上也有较好的性能表现)。

密集场景下的检测一直是传统检测算法较难解决的问题,这主要有两个原因:

  • 1)密集场景下检测的目标一般具有近似的特征表达,这就使得网络很难将这些单独的个体分离开;
  • 2)由于不同个体的检测框相互存在较多的重叠部分,这就使得这些检测结果很大可能被NMS算法给去除掉;

下图是传统的检测算法检测结果(上图,虚线框就是被漏掉的)和文章提出方法的检测结果(下图):
在这里插入图片描述
文章针对这样的密集场景处理办法是去预测目标集合的位置,而不是单独的个体目标,其示意图见下图所示:
在这里插入图片描述
上图(a)中分别使用红绿蓝表示刀子/叉子/空,(b)图将这些划分为集合进行预测。对于这样的改进文章提出了三点改进优化:

  • 1)使用EMD Loss监督集合目标的回归;
  • 2)使用Set NMS作为集合目标检测结果的后处理;
  • 3)提供一个可选择的RM(refinement module),用以排除一些错误的定位;

2. 方法设计

2.1 网络结构

这篇文章采用的检测网络架构师Res50-FPN,之后使用RCNN的检测头进行目标检测,其结构见下图所示:
【图3】

2.2 instance set定义

既然相互重叠较多的目标较难单个进行处理,因而一个很自然的理念就是将几个重叠较为严重的融合成一个进行预测,因而融合之后的样本描述为:
G ( b i ) = { g i ∈ G ∣ I o U ( g i , b i ) < θ } G(b_i)=\{g_i\in G|IoU(g_i,b_i)\lt \theta\} G(bi)={ giGIoU(gi,bi)<θ}
其中, G G G是实际的训练标注样本, θ \theta θ是设定的划分阈值。

2.3 instance set 预测

对于每个instance set样本 b i b_i bi其经过网络预测之后得到预测结果 ( c i , I i ) (c_i,I_i) (ci,Ii),用以分别代表检测框的置信度和坐标值(注意这里的预测结果可能是存在多个的)。因而这个instance set样本的预测结果可以描述为:
P ( b i ) = { ( c i ( 1 ) , I i ( 1 ) , ( c i ( 2 ) , I i ( 2 ) ) , … , ( c i ( K ) , I i ( K ) } P(b_i)=\{(c_i^{(1)},I_i^{(1)},(c_i^{(2)},I_i^{(2)}),\dots,(c_i^{(K)},I_i^{(K)}\} P(bi)={ (ci(1),Ii(1),(ci(2),Ii(2)),,(ci(K),Ii(K)}
其中, K K K是对应instance set保留的最大预测结果数量,为一个常量。在实际情况下可能经过匹配之后预测的结果不满足数量 K K K,对此文章是通过使用一些fake实例进行填充,这些实例填充背景类别,并不参与回归损失计算。

2.4 EMD损失函数

对于一个instance set计算损失函数是使用上文中提到的 P ( b i ) P(b_i) P(bi)实现的,这里将其损失定义为:
L b i = min ⁡ π ∈ ∏ ∑ k = 1 K [ L c l s ( c i ( k ) , g π k ) + L r e g ( l i ( k ) , g π k ) ] L_{b_i}=\min_{\pi \in \prod}\sum_{k=1}^K[L_{cls}(c_i^{(k)},g_{\pi_k})+L_{reg}(l_i^{(k)},g_{\pi_k})] Lbi=πmink=1K[Lcls(ci(k),gπk)+Lreg(li(k),gπk)]
其中, π \pi π是匹配之后实例排列顺序。在当 K = 1 K=1 K=1的时候就退化为了传统的检测回归机制。

Set NMS:
完成检测框的回归之后接下来就是去除多余的检测结果,由于EMD损失函数的性质,一个proposal中的不同instance具有唯一性,因而这就导致了那些存在重叠的检测instance只会存在于不同的proposal中,因而在做instance抑制的时候只会去抑制来自不同proposal的检测结果。将文章的NMS方法与之前的一些NMS算法进行比较,见下表4所示:
在这里插入图片描述

2.5 Refinement module(RM)

在使用proposal去预测多个instance的时候可能会存在一些假阳性的情况,文章采取了二次预测级连优化的策略,见图3中b图所示。下图是文章的Set NMS和RM模块对于性能的影响:
在这里插入图片描述

3. 实验结果

CrowdHuman validation set:
在这里插入图片描述
CityPersons valida- tion set:
在这里插入图片描述

扫描二维码关注公众号,回复: 13102162 查看本文章

猜你喜欢

转载自blog.csdn.net/m_buddy/article/details/109460118
今日推荐