这篇文章收录在CVPR。
2019年,通信的作者是阿联酋Origin人工智能研究院(IIAI)。受传统特征点检测任务和最近全卷积关键点检测与匹配工作的启发,作者提出了一种无需密集滑动窗口或铺设锚帧,利用全卷积预测目标中心点和尺度的行人检测方法,为目标检测提供了新的视角。
*论文地址:
* [1904.02948]高级语义特征检测:A行人检测新视角
*代码地址:
* GitHub - liuwei16/CSP:高级语义特征检测:行人检测的新视角,CVPR,2019
简介
目标检测通常采用传统的密集滑窗法或目前主流的铺设锚架检测方法。然而,无论哪种方式,都不可避免地要为特定数据集设计甚至优化滑动窗口或锚帧超参数,这增加了训练难度,限制了检测器的通用性。
能否跳出这种窗口式或锚点框式的限制而实现目标检测?
本文回顾了低水平视觉中特征检测或感兴趣区域检测的早期思想,其中大多数是基于卷积响应的。受此启发,本文将目标检测视为具有高阶语义的特征检测任务,为目标检测提供了新的视角。具体来说,对于边缘、角点、斑点或感兴趣区域等低层特征的检测,本文的方法也是扫描整幅图像寻找感兴趣的特征点,因此卷积自然胜任。然而,与传统的低层特征不同,本文进一步寻找具有高阶语义的抽象特征点,如行人、人脸等。而今天的深度卷积神经网络已经具备了这种高阶语义的抽象能力。此外,类似于光斑或ROI检测,本文还同时对每个中心点预测目标尺度,这也是直接卷积预测。因此,本文以行人检测为例,将目标检测简化为直接的全卷积中心点和尺度预测任务,并将其命名为
中心和尺度预测检测器。该探测器虽然结构简单,但在主流的加州理工学院和城市人中应用广泛。
行人检测数据集目前仍达到最佳检测性能,同时具有与单级检测器相同的检测速度,是一种简单可用的新检测思路。
研究动机
在传统的计算机视觉领域,特征点检测是一项非常基础和重要的任务。一般认为它是一种低级视觉技术,包括边缘检测、角点(或关键点)检测和感兴趣区域检测。一般来说,特征点通常是图像中感兴趣的部分,特征点检测是指提取图像信息,并决定每个像素点是否存在给定的特征。对于图像信息的提取,今天的深度卷积神经网络(CNN)被认为对图像具有高度的抽象能力,所以
CNN也广泛应用于特征点检测,取得了非常吸引人的效果。例如,近年来,基于CNN的边缘检测方法取得了很大进展,它们揭示了CNN。
可以获得非常连续和平滑的边缘,这也显示了CNN
它比传统方法具有更强的抽象能力。这种高度抽象的能力不应该局限于低级视觉特征点的检测,而应该具有检测高级抽象语义特征点的巨大潜力。
因此,能否将目标检测的高级视觉任务简化为语义特征点检测问题?这正是本文试图探索的。就像关键点检测一样,检测器扫描整个图像,找出哪里有关键点。显然,这种运算是共享卷积运算擅长的。但与传统的低层关键点检测不同,目标检测需要更高的抽象性,即需要找到每个目标的中心点,这是深度模型的潜力所在。此外,与传统的感兴趣区域检测类似,目标检测也需要为每个中心点预测一个尺度,这也是通过卷积预测来限定的。基于以上两点考虑,本文提出将目标检测构建为基于全卷积网络的目标中心点检测和目标尺度预测任务。一个简单的示意图如下图所示。首先,将一幅图像输入到全卷积网络中,然后基于从网络中提取的特征图对两幅图进行卷积。一张地图以热图的形式显示目标的中心位置,另一张地图负责预测目标的大小。在此基础上,可以将它们映射到原始图像中,并解释到目标检测框中:中心热图的位置对应于检测框的中心位置,预测尺度对应于检测框的大小,中心热图的置信度对应于检测框的得分。
对于目标检测,从首创的Viola-Jones检测器开始,采用密集滑动窗口分类器。即使是目前主流的基于卷积神经网络的检测器,无论是两级的。
更快的R-CNN系列,或单级固态硬盘
系列,铺设锚架的检测方法本质上还是以子窗口分类器的形式。也就是说,这些检测器本质上是在训练一个局部分类器,来判断预设的子窗口或锚点框中是否有目标。然而,这些方法不可避免地需要为特定数据集设计甚至优化滑动窗口或锚帧的超参数,这增加了训练难度和局限性。
了检测器的通用性。这些滑窗或锚点框超参数包括:窗口数目、窗口大小、长宽比例、与标注框的重叠率阈值等。这些超参数通常是检测任务和数据集相关的,难以调优也难以通用。一般而言,目标检测涉及两个方面:目标在哪里(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),则在标签图中目标中心所在的位置赋值为
,其中「」代表取整函数,其它位置赋值为 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
检测器便是这方面的一种新的尝试。目前已在行人检测和人脸检测上验证了有效性,未来可进一步考虑拓展到车辆检测和通用物体检测等相关的检测任务。