CVPR 2019 | CSP行人检测:无锚点框的检测新思路

本文被收录于 CVPR 2019,通讯作者单位为阿联酋起源人工智能研究院(IIAI)。受启发于传统的特征点检测任务和最近的全卷积式关键点检测和配对的工作,本文作者提出了一种无需密集滑窗或铺设锚点框、全卷积式预测目标中心点和尺度大小的行人检测方法,为目标检测提供了一个新的视角。

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

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

简介

目标检测通常采用传统的密集滑窗的方式或者当前主流的铺设锚点框(anchor)的检测方式,但不管哪种方式都不可避免地需要针对特定数据集设计甚至优化滑窗或锚点框超参数,从而增加了训练难度并限制了检测器的通用性。

能否跳出这种窗口式或锚点框式的限制而实现目标检测

本文重新回顾了早期的属于低层视觉的特征检测或者感兴趣区域检测的思路,其中大部分是基于卷积式的响应。受此启发,本文把目标检测当作一个具有高阶语义的特征检测任务,为目标检测提供一个新的视角。具体地,像边缘、角点、斑点或感兴趣区域等低层特征检测,本文方法也扫描全图寻求感兴趣特征点,为此卷积是自然胜任的。但跟传统的底层特征不一样的是,本文进一步寻求具有高阶语义的抽象特征点,如行人、人脸等,而当今的深度卷积神经网络已经具备这种高阶语义的抽象能力。此外,类似斑点或感兴趣区域检测,本文也同时为每个中心点预测出目标的尺度,这也是一个直接的卷积式预测。因此,本文以行人检测为例将目标检测简化为一个直接的全卷积式的中心点和尺度预测任务,并将该方法命名为 CSP(Center and Scale Prediction)检测器。虽然该检测器结构简单,但在主流的 Caltech 和 Citypersons 行人检测数据集中依然达到了当前最好的检测性能,同时具有与单阶段检测器相当的检测速度,因此是个简而可用的新的检测思路。

研究动机

在传统的计算机视觉领域,特征点检测是一个非常基础且重要的任务。通常,它被当成是一种低层视觉技术,包括边缘检测、角点(或关键点)检测和感兴趣区域检测等。一般而言,一个特征点通常是图像的一个感兴趣部分,特征点检测是指抽取图像信息并给出每个像素点上是否存在给定的一种特征的决策。而对于图像信息的抽取,当今的深度卷积神经网络(CNN)被认为具有对图像的高度抽象能力,因此 CNN 也被广泛应用于特征点检测,并取得了非常有吸引力的结果。例如近些年基于 CNN 的边缘检测方法取得了很大的进展,它们揭示了 CNN 可以获得非常连续且光滑的边缘,也说明 CNN 比传统方法具有更强的抽象能力。这种高度的抽象能力不应被局限于低层视觉特征点的检测,它应该具有很大的潜力能够检测更高层的抽象的语义特征点。

为此,能否将目标检测这样一个高层视觉任务简化为语义特征点检测的问题?这正是本文所要探索的。就像关键点检测一样,检测器通过扫描整张图像以发现存在关键点的位置,显然这种操作正是共享卷积运算所擅长的。但和传统的低层关键点检测不同的是,目标检测需要更加高层的抽象,也即需要寻找到每个目标的中心点,这是深度模型具备潜力的。此外,和传统的感兴趣区域检测类似的是,目标检测还需要为每个中心点预测一个尺度,这也是卷积预测可以胜任的。基于以上两点考虑,本文提出在全卷积网络的基础上,将目标检测构建为一个目标中心点检测和目标尺度预测的任务。一个简单的示意图如下图所示,首先将一张图像输入全卷积网络,基于网络提取的特征图再卷积式地预测两个映射图,一个以热图的方式呈现目标的中心点位置,一个负责预测目标的尺度大小。在此基础上,便可以将两者映射到原图上并解译成目标检测框:中心点热图的位置对应检测框的中心位置,预测的尺度大小对应检测框的大小,而中心点热图上的置信度则对应检测框的得分。

目标检测而言,从开创性的 Viola-Jones 检测器开始,均采用的是密集滑动窗口分类器的形式。即使是当前基于卷积神经网络的主流检测器,不管是两阶段的 Faster R-CNN 系列,还是单阶段的 SSD 系列,其采用的铺设锚点框的检测方法,本质上仍然是子窗口分类器的形式。即是说,这些检测器本质上都是在训练一个局部分类器用于判断预设的子窗口或锚点框内是否存在目标。然而这些方法都不可避免地需要针对特定数据集设计甚至优化滑窗或锚点框超参数,从而增加了训练难度并限制了检测器的通用性。这些滑窗或锚点框超参数包括:窗口数目、窗口大小、长宽比例、与标注框的重叠率阈值等。这些超参数通常是检测任务和数据集相关的,难以调优也难以通用。一般而言,目标检测涉及两个方面:目标在哪里(where),以及目标有多大(how)。但这些已有方法把这两方面绑定在一个窗口或锚点框里,并通过局部分类器一次性判断各种不同大小、不同比例的窗口或锚点框是否是目标。这种绑定就造成了超参数的各种组合问题。而本文提出的 CSP 检测器通过两个直接的卷积解离了这两个子问题,以更自然的方式实现目标检测,从而也规避了锚点框超参数的各种组合配置,简化了检测器的训练困难。

此外,本文工作也受启发于近年的一些关键点检测和配对的工作。在已有工作中,全卷积神经网络(FCN)已被成功地应用于多人姿态估计,通过先全卷积地检测人体关键点然后进行组合配对的方式。受此启发,ECCV 2018 的两个工作,CornerNet 和 TLL,通过一对对角点检测或上下顶点检测并两两配对的方式,成功地抛弃了锚点框实现了目标检测(早期还有第一代 YOLO 和 DenseBox,但性能有一定局限)。虽然多个关键点需要额外的配对策略,有些配对方法较为复杂(如 TLL 里的 MRF),但这一系列工作依然启发了本文更进一步,实现了简单的全卷积式预测中心和尺度的检测器。

方法实现

基本框架:下图给出了 CSP 算法的整体框架,其结构非常简单,主要包含两个模块:特征提取模块(Feature Extraction)和检测头模块(Detection Head)。

 

特征提取模块:以 ResNet-50 为例,低层的特征图拥有较高的空间分辨率,因而能提供更多的定位信息,而高层的特征图则包含更多的语义信息,为此可以把低层和高层的特征图融合成一个特征图用于检测任务。具体地,出于减少算法复杂度的考虑,这里采用一种最简单的特征融合方式:首先对所有要融合的特征图进行 L2 归一化,再利用反卷积层将第 3、4 和 5 级的特征图分辨率提升到和第 2 级的特征图分辨率保持一致,也即原图的 1/4,然后再将这些特征图在通道维度上拼接起来,得到最终用于检测的特征图(图中紫色部分)。给定一张输入图像,其大小为,则用于检测的特征图的大小为 H/r×W/r,其中 代表降采样率,一个更大的 意味着特征图分辨率较小进而导致检测器定位性能下降,而一个更小的 则会带来更多的计算负担。

检测头模块:基于以上特征图,检测头负责将特征图解译成检测结果。在检测头模块中,首先接上一个 3x3 卷积层将输入特征图的维度压缩到 256,然后接上两个并联的 1x1 卷积层产生目标中心点热图和目标尺度预测图,这样相较于 R-CNN 及 SSD 等系列工作而言极大地简化了检测头模块。实验表明中心点检测和尺度预测已经足以胜任行人检测任务。但采用降采样的特征图会影响目标定位性能,为了弥补这一缺陷,在中心点以及尺度预测之外,还可以额外添加一个偏移预测分支,用以进一步预测中心点到真实目标中心的偏移。

训练标签:给定真实目标包围框的标注,算法就可以自动生成中心点和尺度的训练目标,如下图所示,(a)给出了两个行人目标的真实包围框,(b)给出了中心点和尺度的生成示例:对于中心点,当目标中心落在哪个位置,则在该位置赋值 1(也即正样本),其它位置赋值 0(也即负样本);对于尺度图,当目标中心落在哪个位置,则在该位置赋值尺度的 log 值,其它位置赋值 0。取 log 函数是为了将分布范围较大的原始尺度压缩在一定的范围内,并且误差是尺度无关的,以有利于检测器的训练。考虑到单一中心点的不确定性,在图(c)中我们还定义了一个高斯掩码,用以降低中心点周围负样本的权重,这点将在定义损失函数时进一步介绍。

值得一提的是,目标尺度可以定义为目标高度和(或)宽度。对于行人检测而言,为了得到更紧致的目标包围框,近期的研究均采用人体中轴线标注,也即确定行人的上顶点和下顶点并形成连线得到行人高度,然后采用固定的长宽比 0.41 直接确定行人宽度,进而生成目标包围框。基于此,CSP 行人检测器可以只预测目标高度然后根据固定长宽比 0.41 生成检测框用于后续评估,这是由行人直立行走的特性决定的。但对于其他非行人目标而言,CSP 的尺度预测就需要同时预测目标高度和宽度,如下文提到的人脸检测。

中心点偏移量的训练目标的定义与尺度类似,卷积预测的通道包含两层,分别负责水平方向和垂直方向的偏移量,假设目标 k 的中心点坐标为 (x_k, y_k),则在标签图中目标中心所在的位置赋值为(xk/r-[xk/r],yk/r-[yk/r]),其中「·」代表取整函数,其它位置赋值为 0。

损失函数目标中心点预测是一个二分类问题,也即判断热图的每个位置是否存在目标中心点,是中心点则为正样本,否则为负样本。然而通常情况下一个「完美」的目标中心点是很难定义的。由于正样本周围的负样本距离中心点非常近,很容易被标注误差所干扰,因此直接将其指定为负样本会给检测器的训练带来困扰。对此,本文在每个正样本及其周围采用一个高斯掩码,该高斯掩码以目标中心点为中心坐标,其水平/垂直方差与目标的宽度/高度成正比。如果两个目标的高斯掩码之间存在重合,则择取二者中的最大值。为了应对正负样本数量极端不平衡的问题,本文也采用 CornerNet 中的 focal 策略——对难样本赋予更大的权重。具体损失函数定义详见论文细节。由此,结合高斯掩码和 focal 策略,一是难样本的权重得到了增强,二是在正样本周围的负样本的权重得到了降低。最后,目标的尺度预测可以构建为一个回归问题,由经典的平滑 L1 损失给出。

实验结果

本文提出的方法在 Caltech 和 Citypersons 行人检测数据集上进行了验证,其中标注是采用的基于中心线的紧致标注。这是当前最主流的行人检测数据集。采用的评估指标是单图虚检(FPPI)在 [0.01, 1] 范围时的对数平均漏检率(MR-2)。

在 Caltech 数据集上,结果如下图所示。仅用 Caltech 训练集训练时,在测试集的合理(Reasonable)子集上,CSP 的平均漏检率为 4.5%,比当前最好的 RepLoss 的 5.0% 好 0.5%。当对比的方法都在 Citypersons 上预训练时,CSP 取得当前最好的平均漏检率 3.8%。在严重遮挡子集上,CSP 没有预训练时比 RepLoss 好 2.1%,有预训练时比 RepLoss 好 5.3%。值得指出的是,CSP 没有额外设计针对遮挡的策略,而 RepLoss 和 OR-CNN 是专门针对遮挡设计的。

 

在 Citypersons 数据集上,结果如下表所示。所有结果都是针对中心线标注、原始图像(1024x2048)上测试的。可以看出,在合理子集上,CSP 比之前最好的 ALFNet 提升了 1.0%,在严重遮挡子集上提升了 2.6%,在小目标上提升了 3.0%,而测试速度与 ALFNet 相当,在 NVIDIA GTX1080Ti 单张显卡上每张 1024x2048 大小的图像平均用时 0.33 秒。特别是,同为无需锚点框的方法,CSP 比 TLL 提升了 4.5%,比 TLL+MRF 提升了 3.4%。

CSP 的小目标检测能力得益于大分辨率的特征图。而对于遮挡,传统的基于密集滑窗(如 VJ 检测器)或者基于 Faster R-CNN、采用感兴趣区域池化(ROI Pooling)的检测器,本质上都是对目标区域的一个整体判断的分类器,因此目标区域的遮挡和背景等信息是包含在其整体判断里的。而本文提出的 CSP 对目标在哪里和有多大进行了解离,在热图上只检测中心点,尺度大小是额外预测的,因此受遮挡的影响相对较小。

后续工作

为了进一步验证 CSP 检测器的通用性,本文作者还进一步在 WiderFace 人脸检测数据集上做了后续实验。其中尺度采用了高度+宽度预测,因为 WiderFace 的人脸标注是包含各种变化的宽高比的。CSP 在 WiderFace 训练集上训练的结果分别在验证集和测试集上进行了测试,实验结果如下图所示。可见 CSP 取得了与当前领先的人脸检测算法可比较的检测性能,而这其中大部分算法都是基于「锚点框」的。特别是在困难子集上,验证集和测试集上 CSP 都达到了比当前已发表的方法更好的性能。

此外,本文作者进一步测试了人脸检测器的泛化能力。对于同样是在 WiderFace 上训练好的 CSP 和 DSFD 模型(两者性能非常接近,DSFD 在困难子集上,验证集 90.4%,测试集 90.0%),评估了它们在其他数据库上直接测试的性能(AP)。结果是虽然在同为网图的 FDDB 上两者性能依然非常接近,在 UCCS 监控视频人脸检测上 CSP 为11%,DSFD 为 7.6%;在一个待公开的极端环境人脸检测 Benchmark 上,CSP 是 27%, DSFD 为 12%。值得注意的是,DSFD 是基于锚点框的人脸检测器的优秀代表,亦收录于 CVPR2019,并且其一大贡献就是改进了锚点框的匹配策略。但对比跨库测试结果可以看出,在一个库上采用的锚点框配置,离开这个库可能会存在已配置好的锚点框的适用性问题。而 CSP 是简单地预测目标中心和尺度,无预设的锚点框配置,因此相对而言能更好地适应不同的场景或数据集。

结语

近年流行的锚点框检测器取得了很大的成功,但依然是 VJ 检测器奠定的基础,其设计深受滑窗分类器的影响。然而,深度卷积神经网络高度的语义抽象能力开辟了更广阔的潜力,使得抛弃锚点框成为一种可能,而本文提出的 CSP 检测器便是这方面的一种新的尝试。目前已在行人检测和人脸检测上验证了有效性,未来可进一步考虑拓展到车辆检测和通用物体检测等相关的检测任务。

理论CVPR 2019论文
9
相关数据
全卷积网络技术

全卷积网络最开始在论文 Fully Convolutional Networks for Semantic Segmentation(2015)中提出,它将传统卷积神经网络最后几个全连接层替换为卷积层。引入全卷积的意义在于它能实现密集型的预测,即在二维卷积下对图像实现像素级的分类,在一维卷积下对序列实现元素级的预测。

池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

SSD技术

一种计算机视觉模型。论文发表于 2015 年(Wei Liu et al.)

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

降采样技术

降采样是数位信号处理领域中的一种多速频数字信号处理(multi-rate digital signal processing)系统中采样率转换(sample rate conversion)技术的一种,或指代用来降低信号采样率的过程,与插值相反——插值用来增加取样频率——降采样通常用于降低数据传输速率或者数据大小。因为降采样会有混叠的情形发生,系统中具有降采样功能的部分称为降频器(decimator)。

YOLO技术

YOLO 模型最早是由 Joseph Redmon 等人在 2015 年发布的,并在随后的两篇论文中进行了修订。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

数据库技术

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

分类问题技术

分类问题是数据挖掘处理的一个重要组成部分,在机器学习领域,分类问题通常被认为属于监督式学习(supervised learning),也就是说,分类问题的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。根据类别的数量还可以进一步将分类问题划分为二元分类(binary classification)和多元分类(multiclass classification)。

边缘检测技术

边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。这些包括(i)深度上的不连续、(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。 边缘检测是图像处理和计算机视觉中,尤其是特征检测中的一个研究领域。

特征检测技术

特征检测是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征检测的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。

目标定位技术

目标定位任务不仅要识别出图像中是什么,还要给出目标在图像中的位置信息。简单的说,就是用一个矩形框把识别的目标框出来(有时候也有多个固定数量的目标)。一般基本思路是多任务学习,网络带有两个输出分支。一个分支用于做图像分类,即全连接+softmax判断目标类别,和单纯图像分类区别在于这里还另外需要一个“背景”类。另一个分支用于判断目标位置,即完成回归任务输出四个数字标记包围盒位置(例如中心点横纵坐标和包围盒长宽),该分支输出结果只有在分类分支判断不为“背景”时才使用。

目标检测技术

一般目标检测(generic object detection)的目标是根据大量预定义的类别在自然图像中确定目标实例的位置,这是计算机视觉领域最基本和最有挑战性的问题之一。近些年兴起的深度学习技术是一种可从数据中直接学习特征表示的强大方法,并已经为一般目标检测领域带来了显著的突破性进展。

暂无评论
暂无评论~