CSP: Center and Scale Prediction CVPR2019行人检测论文 翻译+解读

    这篇文章使用anchor free的方式进行行人检测,在两个数据集上都取得了SOTA的实验结果,论文还将这种方法使用在人脸检测上,同样取得了很好的效果,证明这种方法有很好的泛化能力.我在下一篇写了写这篇论文使用的标签,对理解这篇论文的Loss center有帮助..

论文名称: High-level Semantic Feature Detection: A New Perspective for Pedestrian Detection

论文地址: https://arxiv.org/abs/1904.02948

代码地址: https://github.com/liuwei16/CSP

     如果有理解的不对的地方,欢迎指出.

翻译:

     摘要:对象检测通常需要传统的滑窗分类器或现代深度学习方法中基于锚箱的预测。但是,这些方法中的任何一种都需要对anchor进行冗长的配置。在本文中,我们提供了一种新的视角,我们将检测对象激励(CNN提取)为高级语义进行特征检测。像边缘,角落,斑点和其他特征检测器一样,所提出的检测器扫描整个图像上的特征点(卷积很适合这样的操作,所以检测器其实就是两个卷积通道)。然而,与这些传统的低级特征不同,我们提出的检测器用于更高级别的抽象:-寻找存在对象的中心点,现在的深度模型已经能够进行这样的高级语义抽象。 此外,像blob检测一样,我们也预测中心点的尺度,这也是一个简单的卷积。因此,在本文中,通过卷积将对象检测简化为直接的中心和尺度预测任务。这样,所提出的方法享有无盒设置。虽然结构简单,但它在几个具有挑战性的基准测试中提供了竞争准确性,包括行人检测和人脸检测。此外,进行了交叉数据集评估,证明了所提出方法的优越的泛化能力。

     1. 简介:
     特征检测是计算机视觉中最基本的问题之一。它通常被视为低级技术,典型任务包括边缘检测(例如Canny [4],Sobel [42]),角点(或兴趣点)检测(例如SUSAN [41],FAST [38]), 和blob(或感兴趣区域)检测(例如LoG [25],DoG [31],MSER [33])。 特征检测对于各种计算机视觉任务至关重要,从图像表示,图像匹配到3D场景重建,仅举几个例子。

     一般情况下,特征定义为我们对图像的“感兴趣”部分,因此特征检测就是首先将计算图像信息抽象,然后在每个图像点做出本地决策,无论在该点是否存在给定类型的图像特征。关于图像信息的抽象,随着计算机视觉任务的快速发展,深度卷积神经网络(CNN)被认为具有非常好的学习高级图像抽象的能力。因此,它也已经应用于特征检测,并且即使在低级特征检测中也展示了有很好的效果。例如,最近有使用CNN进行边缘检测的趋势[40,50,2,29],这已经基本上推进了该领域。它表明,通过深度卷积可以获得干净和连续的边缘,这表明CNN比传统方法具有更强的学习更高层次的自然图像抽象的能力。此功能可能不限于低级别特征检测;它可能会开辟许多其他高级特征检测的可能性。

      因此,在本文中,我们提供了一个新的视角,将检测对象(object detection 任务)激励为高级语义特征检测任务。我们提出的检测器扫描整个图像上的特征点,这种方式类似于边缘,角落等检测任务。与这些传统的低级特征检测器不同的事,所提出的检测器用于更高级别的抽象,即,我们正在寻找存在对象的中心点。此外,类似于斑点检测,我们还预测中心点的尺度。然而,考虑到其强大的能力,我们不是像传统的斑点检测那样处理图像金字塔以确定尺度,而是在完全卷积网络(FCN)[30]的一次通过中预测对象尺度和直接卷积。结果,通过卷积将对象检测简单地表述为直接的中心和比例预测任务。所提出的方法的总体流水线,表示为基于中心和尺度预测(CSP)的检测器,在图1中示出。

CSP: Center and Scale Prediction CVPR2019行人检测论文 翻译+解读

      可以看到整个检测流程的结构很简单,图片输入经过一个CNN提取(还有一些反卷积,合并等操作,后边说)得到特征图,该特征图分成两路处理,一条用于预测中心点,另一条用于预测尺度.

     一般的目标检测方法,从Viola-Jones探测器[47]的先驱工作开始,通常需要基于锚箱的滑动窗口分类器或基于CNN的方法(就是传统的目标检测,离不开CNN和anchor box)。 这些检测器本质上是局部分类器,半段预定义的框是否是object(rcnn 系列中叫anchor SSD中叫default box)。但这些方法都需要在box中进行冗长的配置。 一般来说,对象检测是指检测出对象的位置和对象的大小。 传统方法通过各种尺度的盒子的整体判断将“where”和“how”("where": 目标在哪里?  "how": 尺度多大?)子问题组合成单个子问题。 我们提出的CSP检测器将“where”和“how”子问题分成两个不同的卷积。 这使得检测更加自然,并且没有anchor的设置,大大降低了训练的难度.

      还有另一种研究方法可以激励我们。 此前,FCN已经应用于多人姿态估计并在其中取得了很好的效果[5,35],其中几个关键点仅通过完全卷积的响应首先被检测到,然后它们被进一步分组为个人的完整姿势。 鉴于此,最近两个鼓舞人心的作品,CornerNet [18]和TLL [43]成功地从 anchor 中解脱出来,这两篇文章将目标检测转化为关键点检测任务来执行。 虽然关键点匹配需要额外的计算,有时像TLL一样复杂,但FCN的关键点预测激励我们更进一步,实现基于全卷积的中心和尺度预测的检测。

      总之,这项工作的主要贡献如下:

     (1). 展示了一种新的可能性,即物体检测可以通过卷积简化为直接的中心和尺度预测任务,绕过基于 anchor 的探测器的限制并摆脱最近基于关键点配对的检测器的复杂后处理。

     (2). 拟议的CSP探测器在两个具有挑战性的行人探测基准,CityPersons [55]和Caltech [8]上实现了最新的最先进性能,它还在最受欢迎的人脸检测基准之一上实现了很好的性能 - WiderFace [51]。

     (3). 当进行交叉数据集评估时,所提出的CSP检测器具有良好的泛化能力。

     2. 相关工作

     2.1 基于anchor的检测

     ............................(省略)

     2.2 anchor free的目标检测

     .......TLL(海康威视 ECCV2018的一篇文章,使用anchor free的方式通过预测人体中轴线来进行目标检测,应该是得益于其特殊标注)

     3. 提出的方法:

     3.1  基础
     基于CNN的物体检测器通常依赖于骨干网络(例如ResNet [11])。 将图像I作为输入,网络可以生成具有不同分辨率的若干特征图,其可以定义如下:

CSP: Center and Scale Prediction CVPR2019行人检测论文 翻译+解读

     φ i 表示的是第 i 层输出的feature map , f 表示的是CNN网络 。这些特征映射的大小逐渐减小并由 fi() 生成,包括卷积和池化等的组合。给定具有N个层的网络,所有生成的特征映射可以表示为Φ= {φ1, φ2,...,φN},可以在之后的检测头上被进一步利用.

     一般来说,基于CNN的目标检测器在如何利用Φ(feature map)上是不同的。我们将这些负责检测的特征图表示为Φdet。 在RPN [37]中,仅使用最终特征映射φN来执行检测,因此用于检测的最终特征映射集是Φdet= {φN}。 而在SSD [27]中,检测特征图可以表示为Φdet= {φL,φL+ 1,...,φN},其中1 <L <N。 此外,为了丰富用于检测小尺度物体的较浅层的语义信息,FPN [23]和DSSD [9]利用横向连接来组合不同分辨率的特征图.

     除了Φdet之外,在基于 anchor 的检测器中,另一个关键部件被称为锚箱(表示为B)。 给定Φdet和B,检测可以表示为:

CSP: Center and Scale Prediction CVPR2019行人检测论文 翻译+解读

    上变的公式: H表示检测任务 Φdet 和 B 表示该任务需要的两个参数 - 特征图和anchor box . 然后讲检测任务分成两个子任务 目标分类和坐标回归.

    在 anchor free的检测方法中,我们只需要 Φdet 这一个参数.检测任务可以表示为:

CSP: Center and Scale Prediction CVPR2019行人检测论文 翻译+解读

      3.2 整体结构

CSP: Center and Scale Prediction CVPR2019行人检测论文 翻译+解读

      整个检测任务的结构如图所示, CSP的总体架构主要包括两个组件,即特征提取模块和检测头。 特征提取模块将不同分辨率的特征映射连接成一个。 检测头仅包含3×3卷积层,后面是两个预测层,一个用于中心位置,另一个用于相应的比例。

     特征提取网络就是resnet 然后用反卷积整合出需要尺寸的 feature map ,这里主要说下检测头吧:

     检测头:  在连接的特征图Φdet上,后边接一个检测头以将其解析为检测结果。 检测头在最佳性能中起着重要作用,这已在文献[9,26,20,19]中得到广泛研究。 在这项工作中,我们首先在Φdet上连接一个3x3 Conv层以将其通道尺寸减小到256,然后附加两个兄弟1x1 Conv层以分别产生中心热图和比例图。 此外,我们这样做是为了简化,检测头[9,26,20,19]的任何改进都可以灵活地融入到这项工作中,以成为更好的探测器。
    下采样特征图的缺点是定位不良的问题。为了稍微调整中心位置,可以与上述两个分支并行地附加额外的偏移预测分支。

     3.3 训练

CSP: Center and Scale Prediction CVPR2019行人检测论文 翻译+解读

图 (a) 是基于锚箱的探测器通常采用的边界框注释。
图 (b) 是 (a) 自动产生的中心和尺度ground truth。所有对象的中心点的位置都被指定为正数,否则指定为负数。如果相应对象是正点,则为每个像素分配比例值,否则为0。为清晰起见,我们仅显示两个正面的高度信息。
图 (c) 是等式 (4) 中定义的总高斯掩模图M,以减少围绕正面像素点 的 负面像素点 的歧义(因为这些点距离中心点很近,不能直接当成负样本来对待)。

      ground truth : 预测的热图具有与级联特征图相同的大小(即H / r×W / r)。使用给定边界框注释,我们可以自动生成中心和缩放 ground truth 。以行人检测为例,图 (b) 展示了一个示例。对于中心地面实况,物体中心点落下的位置被指定为正,而所有其他位置都是负数。比例可以定义为对象的高度和/或宽度。这里我们仅预测每个行人实例的高度并生成具有预定纵横比的边界框。对于比例基础事实,第k个正位置被赋予对应于第k个对象的log(h k)的值。为了减少歧义,log(h k)也被分配给正数的半径2内的负数,而所有其他位置被指定为零(这里也就是将正样本附近的点也看成正样本)。也可以加一个编译预测分支 源码中有,就是 带有 off 的那个. 

     Loss function: 这里使用交叉熵作为中心店预测的损失函数,(因为中心点的预测 其实 实际上是一个分类问题 - 是或者不是). 但是由于想确定真正的中心点是很难的,比如说100*100的feature map中 只有一个中心点,所以这里将中心点附近的点也看成中心点,用来缓解负样本带来的歧义().

CSP: Center and Scale Prediction CVPR2019行人检测论文 翻译+解读

     高斯热图 (计算的是掩码的位置 x y) 的具体表述如上. 中心点预测的Loss如下式 ( 就是个交叉熵 ):

CSP: Center and Scale Prediction CVPR2019行人检测论文 翻译+解读

CSP: Center and Scale Prediction CVPR2019行人检测论文 翻译+解读

     这个loss就是一个交叉熵,加了一些判断和控制的参数,  pij∈[0,1]是指示在位置(i,j)中是否存在对象中心的网络的估计概率,并且yij∈{0,1} ( 0或者1哦!!! ) 指定ground truth 标签, 其中yij = 1表示正位置。 αij和γ是聚焦超参数,我们通过实验设置 γ= 2,如[24]中所建议的那样。 为了减少围绕正面的负面的歧义,应用根据高斯掩模M的αij来减少它们对总损耗的贡献,其中超参数β控制罚分。 在实验上,β= 4性能最好,对于正样本, αij被设置为1 ( 其实就是中心点和附近的那些参与计算,其他的直接都是0 , 然后在 (i , j) 这些点上,预测概率越接近1 loss越小,就可以是预测结果更加接近 ground truth ) 。

     尺度预测:

     尺度预测使用的是smoothl1函数:

CSP: Center and Scale Prediction CVPR2019行人检测论文 翻译+解读

     其中 sk 和 tk 分别代表网络的预测结果和每个 ground truth Loffset也可以使用smoothL1损失。

     然后再将所有的loss 按一定比例加起来:

CSP: Center and Scale Prediction CVPR2019行人检测论文 翻译+解读

   λ c , λ s and λ o = 0.01 , 1  , 0.1

剩下的就都是实验了,自己看结果分析吧.