CVPR2019 行人检测 抛弃限位框 CSP: High-level Semantic Feature Detection: A New Perspective for Pedestrian Detection

CSP: High-level Semantic Feature Detection: A New Perspective for Pedestrian Detection
Wei Liu, Shengcai Liao, Weiqiang Ren, Weidong Hu, Yinan Yu
ATR, College of Electronic Science, National University of Defense Technology, Changsha, China
CBSR & NLPR, Institute of Automation, Chinese Academy of Sciences, Beijing ,China
Inception Institute of Artificial Intelligence (IIAI), Abu Dhabi, UAE
Horizon Robotics Inc., Beijing ,China 2019

目前物体检测需要滑动窗口或anchor,而作者认为直接检测高级语义特征即可,如边缘、角、斑点等。这论文里即是在行人检测领域,以行人中心作为高级语义特征进行检测,同时预测其大小。获得了SOTA的结果。代码也即将开源

论文里相关工作里提到的,已经博主之前阅读过的一篇行人检测论文【TTL: 远距离行人检测,从标注出发】也是不依赖限位框的,预测上下两个端点及之间的连线,对较小的行人非常有效。不过该方法需要额外的中轴线标注,而且进行对3种预测结果进行关联时需要使用Markov Random Field进行后处理。本文所需的后处理仅有NMS。从两点一线,到中点和尺度,非常自然的改变,所以很多时候只需多想一想,发散一下,可能就会有好的效果。

论文里省略了infer时限位框的生成方法,需要代码开源后看代码理解。


Architecture

图1
图2

网络流程、结构见图1、2。

Backbone

如果采用ResNet-50作为backbone,5个阶段的特征图分别被下采样2,4,8,16,32倍。使用了[46, 42]里的常见做法,在第5阶段使用了空洞卷积让下采样保持16倍。将3~5阶段的特征图concat作为整个backbone的最终特征图(消融实验证明这样最优),尺寸为原图1/4。这里使用了反卷积和L2-norm使特征图尺寸及数值尺度一致。

Detection head

检测部分首先使用了一个$3\times3$卷积将通道数降低为256,然后两个分支各自用一个$1\times1$卷积预测中心热图和scale图。

对于下采样造成的定位不准的情况,可以增加一个额外的偏移预测分支对中心位置进行调整。

Training

Ground Truth

预测的热图与backbone特征图尺寸一致。根据限位框标注可以自动转换为中心和尺度标注,如图3。

图3

尺度可以定义为物体的高或宽,或两者。[50,51]的数据集标注则是使用了线标注,宽高比固定为0.41,本文也沿用了这一宽高比。对于第k个gt目标,在中心位置将值设为$\log \left(h_{k}\right)$。为了减少模糊,在positive半径为2的范围内的negative值也设置为$\log \left(h_{k}\right)$,其余为0。

中心的gt热力图通过对每个目标根据坐标、尺度生成一个二维高斯热力图,再对所有的热力图取max,公式如下:

K为图片中物体数量。标准差$\left(\sigma_{w}^{k}, \sigma_{h}^{k}\right)$与物体宽高成比例。(如果对生成2维高斯热力图还不清楚,可以看我的这篇博文【生成二维高斯分布热力图】

如果有偏移预测,则其标注为$\left(\frac{x_{k}}{r}-\left\lfloor\frac{x_{k}}{r}\right\rfloor, \frac{y_{k}}{r}-\left\lfloor\frac{y_{k}}{r}\right\rfloor\right)$。r是下采样倍数,以此解决下采样造成的偏移。

Loss

中心预测loss如下

其中:

$p_{ij}$是网络的预测值,$\alpha ,\beta = 4, \gamma = 2$均为focal loss超参数。

scale loss如下

其中$s_k$和$t_k$分别是预测和gt的scale。如果有offset分支,loss类似scale。

Inference

测试时,保留中心点热图中所有置信度大于0.01的值,以及对应在scale map里的值,就可以生成限位框了(怎样生成),映射回原图尺寸,再NMS。如有offset预测,在映射前执行。

Performance

实验结果见图。取得了SOTA的性能,同时速度也还行。$2048 \times 1024$的图需要0.33s,感觉速度应该是接近YOLOv3的。

Alt text