淘先锋技术网

首页 1 2 3 4 5 6 7

论文题目: 《Objects as Points》
地址:https://arxiv.org/pdf/1904.07850.pdf
发布时间:2019.4
代码:https://github.com/xingyizhou/CenterNet

1. Abstract

anchor_based 算法:枚举出可能潜在的目标,然后对这些潜在的目标进行分类。
缺点:浪费时间、低效,需要额外的后处理(post-processing)

本文算法将目标的bbox的中心点定为该目标的中心点,检测器使用关键点检测去估计找到中心点,并且回归目标的其他属性,例如:尺寸,3d位置、方向、甚至姿态。
优点:相比较于基于bbox的检测器,我们的模型是端到端可微的,更简单,更快,更精确,实现了速度和精确的最好权衡。


2. Introduction

大多数目标检测算法都经过post-processing,很难微分和训练,他们都不是端到端可训练的。
本文提出的方法在对象的边界框中心用一个点表示对象(见图)。然后直接从位于中心位置的图像特征返回其他属性,如对象大小、尺寸、3D范围、方向和姿态。将 目标检测问题变成了关键点估计问题。

我们将图片输入给一个全卷积网络,产生一个热图。这幅热图的峰值对应于物体的中心。每个峰值的图像特征可以预测物体的bbox高度和宽度。训练模型使用标准的密集监督学习。推理是一个单一的前向网络,没有使用非极大值抑制处理。

模型使用的范围也比较广泛,小小的改变就可以应用到其他任务
在这里插入图片描述

3. Related work

Object detection by region classification: R-CNN
Object detection with implicit anchors: Faster R-CNN

文中的方法与anchor_based方法相似。中心点可以看作是一个单独的形状不可知的锚点,有以下几点不同:

  • 我们分配的锚点仅仅是放在位置上,没有尺寸框。没有手动设置的阈值做前后景分类。(像Faster RCNN会将与GT IOU >0.7的作为前景,<0.3的作为背景,其他不管)
  • 每一个目标只有一个positive的anchor,所以不需要NMS。仅仅是简单的从关键点热图中提取峰值点
  • CenterNet使用高分辨率输出(4x),相对传统的目标检测器(16x),所以不需要多尺度anchor

在这里插入图片描述

4.Preliminary

输入图片为: I ∈ R W × H × 3 I∈ R^{W×H×3} IRW×H×3
产生的热图为: Y ^ ∈ [ 0 , 1 ] W R ∗ H R ∗ C \hat Y∈[0,1]^{\frac W R * \frac H R *C} Y^[0,1]RWRHC
其中:R=4为网络步长,C为类别。
表示检测到的关键点: Y ^ x , y , c = 1 \hat Y_{x,y,c} = 1 Y^x,y,c=1 ,表示检测到的背景: Y ^ x , y , c = 0 \hat Y_{x,y,c} = 0 Y^x,y,c=0
我们采用了几个不同的全卷积编码-解码网络来预测图像 I I I 得到的 Y ^ \hat{Y} Y^:stacked hourglass network , upconvolutional residual networks (ResNet), deep layer aggregation (DLA) 。

对于属于类别c的真实目标位置 p p p,在低像素中的位置则为 p ^ = ⌊ p R ⌋ \hat p=\lfloor\frac p R\rfloor p^=Rp。用高斯核将GT的关键点映射到热力图上,如果对于同个类 c (同个关键点或是目标类别)有两个高斯函数发生重叠,我们选择元素级最大的。
LOSS:
在这里插入图片描述
其中 和 是focal loss的超参数,实验中两个数分别设置为2和4, N是图像 I 中的关键点个数,除以N主要为了将所有focal loss归一化。
由于图像下采样时,GT的关键点会因数据是离散的而产生偏差(取底后会产生偏移),我们对每个中心点附加预测了个局部偏移 O ^ \hat O O^,所有类c共享相同的预测。用L1Loss训练偏移量。
在这里插入图片描述

5.Objects as Points

中心点预测
对于第 k k k个目标(类别为 c k c_k ck),bbox为( x 1 ( k ) , x 2 ( k ) , y 1 ( k ) , y 2 ( k ) x_1^{(k)},x_2^{(k)},y_1^{(k)},y_2^{(k)} x1(k),x2(k),y1(k),y2(k)),它的中心点 p k p_k pk ( x 1 ( k ) + x 2 ( k ) 2 , y 1 ( k ) + y 2 ( k ) 2 ) (\frac {x_1^{(k)}+x_2^{(k)}} 2,\frac {y_1^{(k)}+y_2^{(k)}} 2) (2x1(k)+x2(k),2y1(k)+y2(k))
Y ^ \hat Y Y^来预测所有的中心点

目标框预测
s k = ( x 2 ( k ) − x 1 ( k ) , y 2 ( k ) − y 1 ( k ) ) s_k = (x_2^{(k)}-x_1^{(k)},y_2^{(k)}-y_1^{(k)}) sk=(x2(k)x1(k),y2(k)y1(k))
使用L1 loss 对中心点预测:
在这里插入图片描述

所以总的Loss为:
在这里插入图片描述
从点到bbox
在推理时,我们首先独立提取每个类别的热图中的峰值。我们检测所有大于或等于8个相邻节点的响应,并保留前100个峰值。设 P ^ c \hat P_c P^c为检测到c类的n个中心点的集合。 P c = { ( x i , y i ) } i = 1 n P_c=\{(x_i,y_i)\}^n_{i=1} Pc={(xi,yi)}i=1n Y ^ x , y , c \hat Y_{x,y,c} Y^x,y,c作为检测的置信度。产生的bbox为:在这里插入图片描述
其中, ( δ x ^ i , δ y ^ i ) = O ^ x ^ i , y ^ i (\delta \hat x_i,\delta \hat y_i)=\hat O_{\hat x_i,\hat y_i} δx^i,δy^i)=O^x^i,y^i,偏移量预测 ( w ^ i , h ^ i ) = S ^ x ^ i , y ^ i (\hat w_i, \hat h_i)=\hat S_{\hat x_i,\hat y_i} (w^i,h^i)=S^x^i,y^i

6.Implementation details

Hourglass

堆叠的Hourglass网络【30,40】通过两个连续的hourglass 模块对输入进行了4倍的下采样,每个hourglass 模块是个对称的5层 下和上卷积网络,且带有skip连接。该网络较大,但通常会生成最好的关键点估计。

ResNet

Xiao et al. [55]等人对标准的ResNet做了3个up-convolutional网络来dedao更高的分辨率输出(最终stride为4)。为了节省计算量,我们改变这3个up-convolutional的输出通道数分别为256,128,64。up-convolutional核初始为双线性插值。

DLA

即Deep Layer Aggregation (DLA),是带多级跳跃连接的图像分类网络,我们采用全卷积上采样版的DLA,用deformable卷积来跳跃连接低层和输出层;将原来上采样层的卷积都替换成3x3的deformable卷积。在每个输出head前加了一个3x3x256的卷积,然后做1x1卷积得到期望输出。

Training

训练输入图像尺寸:512x512; 输出分辨率:128x128 (即4倍stride);采用数据增强方式:随机flip, 随机scaling (比例在0.6到1.3),裁剪,颜色jittering;采用Adam优化器;

在3D估计分支任务中未采用数据增强(scaling和crop会影响尺寸);

更详细的训练参数设置(学习率,GPU数量,初始化策略等)见论文~~

Inference

采用3个层次的测试增强:没增强,flip增强,flip和multi-scale(0.5,0.75,1.25,1.5)增强;For flip, we average the network
outputs before decoding bounding boxes. For multi-scale,we use NMS to merge results.