目标检测(8):CenterNet-Objects as Points-将目标建模为边界框中心点的方法

介绍CenterNet,一种将目标检测转化为关键点估计的创新方法,实现在速度与精度间的良好平衡,适用于三维目标检测及人体姿态估计。

  论文《Objects as Points》在CornerNet之后提出了又一种全新的思路CenterNet,即将目标建模为其边界框的中心点,方法通过关键点估计来寻找目标的中心点然后对目标所有其他的属性例如尺寸、三维位置、方向和姿态进行回归。在COCO数据集上取得了速度-精度的较好的均衡[142FPS-28.1%AP、52FPS-37.4%AP,1.4FPS-45.1%AP],并且通过微调,CenterNet还可以用于三维目标检测与人体姿态估计。
原文链接:目标检测(8):CenterNet-Objects as Points将目标建模为边界框中心点的方法
论文地址:https://arxiv.org/abs/1904.07850
工程链接:https://github.com/xingyizhou/CenterNet

在这里插入图片描述

1. 背景

  目标检测能够辅助许多计算机视觉的任务,比如实例分割,姿态估计,目标追踪,动作识别等等,并且在安防监控、自动驾驶等方面有很多具体应用。当前目标检测方法将目标建模为一个边界框,通过对潜在的所有边界框进行分类,来确定其是否为待检测目标。一阶段的方法通过使用锚框来直接对目标进行分类,二阶段方法则对每一个潜在框重新进行计算图像特征,然后进行分类。他们还需要进行名为非极大值抑制的后处理来移除重叠框,造成模型难以端到端的训练。

  提供了一种更简单且更高效的思路,将目标建模为边界框的中心点,其他的属性则直接进行回归。目标检测任务转变为标准的关键点估计问题。论文将图像输入至一个全卷积网络生成热力图,图中的峰顶对应目标中心,每个峰顶处的图像特征用于预测目标边界框的长宽。CenterNet中的中心点可以看作一个形状不可知的锚框,但与一阶段方法的区别在于:1) CenterNet将这种形状不可知的锚框只与位置相关,不用手动设置阈值区分前后景;2) 对于每一个目标只选取一个”正锚框“;3) CenterNet应用更大的输出分辨率(output stride=4)。

2. 理论准备

  令 I ∈ R W × H × 3 I \in R^{W \times H \times 3} IRW×H×3为输入图像,目标是得到一个关键点热力图即 Y ^ ∈ [ 0 , 1 ] W R × H R × C \hat Y \in [0,1]^{\frac{W}{R} \times \frac{H}{R} \times C} Y^[0,1]RW×RH×C,其中 R R R是output stride,取4, C C C是关键点类型的数量,人体姿态估计中选为17(COCO数据集),或者是目标检测中的目标类别数。另外, Y ^ x , y , c = 1 \hat Y_{x,y,c}=1 Y^x,y,c=1表示检测到的一个关键点,为0则表示属于背景,论文使用了几个不同的全卷积编解码网络预测 I I I对应的 Y ^ \hat Y Y^,堆叠的沙漏网络,带有反卷积的残差网络,和深层聚合网络(DLA)。

 关键点预测网络训练时,对于每一个人工标注的属于类别 c c c的关键点 p ∈ R 2 p \in R^2 pR2,计算一个低分辨率的替代 p ˇ = ⌊ p R ⌋ \check p =\lfloor \frac{p}{R} \rfloor pˇ=Rp,然后利用一个高斯核函数 Y x u z = e x p ( − ( x − p ˇ x ) 2 + ( y − p ˇ y ) 2 2 σ p 2 ) Y_{xuz}=exp \left(-\frac{(x-\check p_x)^2+(y-\check p_y)^2}{2 \sigma^2_p}\right) Yxuz=exp(2σp2(xpˇx)2+(ypˇy)2)把所有的人工标注关键点显示在热力图 Y ∈ [ 0 , 1 ] W R × H R × C Y \in [0,1]^{\frac{W}{R} \times \frac{H}{R} \times C} Y[0,1]RW×RH×C,训练目标通过如下损失函数进行优化:
L k = 1 N ∑ x y z { ( 1 − Y ^ x y c ) α l o g ( Y ^ x y c ) i f   Y x y c = 1 ( 1 − Y ^ x y c ) β ( Y ^ x y c ) α l o g ( 1 − Y ^ x y c ) o t h e r w i s e L_k=\frac{1}{N}\sum_{xyz} \begin{cases} (1-\hat Y_{xyc})^{\alpha}log(\hat Y_{xyc})& if\ Y_{xyc}=1\\ (1-\hat Y_{xyc})^{\beta}(\hat Y_{xyc})^{\alpha}log(1-\hat Y_{xyc})& otherwise \end{cases} Lk=N1xyz{(1Y^xyc)αlog(Y^xyc)(1Y^xyc)β(Y^xyc)αlog(1Y^xyc)if Yxyc=1otherwise

   其中, α = 2 \alpha=2 α=2 β = 4 \beta=4 β=4是focal loss的超参数, N N N是用于将所有的正实例归一化为1。此外,为了重现由output stride带来的离散化错误,论文额外为每一个中心点预测了一个偏移 O ^ ∈ R W R × H R × 2 \hat O \in R^{\frac{W}{R} \times \frac{H}{R} \times 2} O^RRW×RH×2,所有的类别都共用该偏移,该偏移通过L1损失进行优化:

L o f f = 1 N ∑ p ∣ O ^ p ˇ − ( p R − p ˇ ) ∣ L_{off}=\frac{1}{N}\sum_p \left|\hat O_{\check p}-\left( \frac{p}{R}-\check p\right)\right| Loff=N1pO^pˇ(Rppˇ)

  这种监督只在关键点位置执行,其他位置忽略,接下来论文对关键点估计如何转变为一个标准的目标检测器进行阐述。

3. Objects as Points

  令 ( x 1 ( k ) , y 1 ( k ) ) , x 2 ( k ) , x 2 ( k ) ) (x_1^{(k)},y_1^{(k))},x_2^{(k)},x_2^{(k)}) (x1(k),y1(k)),x2(k),x2(k))为具有类别 c k c_k ck的目标 k k k的边界框,中心点位置 p k = ( x 1 ( k ) + x 2 ( k ) 2 , y 1 ( k ) + x 2 ( k ) 2 ) p_k=(\frac{x_1^{(k)}+x_2^{(k)}}{2},\frac{y_1^{(k)}+x_2^{(k)}}{2}) pk=(2x1(k)+x2(k),2y1(k)+x2(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)))进行回归,为了降低运算量,论文对所有的目标类别使用单个尺寸预测 S ^ ∈ R W R × H R × 2 \hat S \in R^{\frac {W}{R} \times \frac{H}{R}\times 2} S^RRW×RH×2,并且使用L1损失进行优化:

L s i z e = 1 N ∑ k = 1 N ∣ S ^ p k − s k ∣ L_{size}=\frac{1}{N}\sum_{k=1}^N \left|\hat S_{p_k}-s_k\right| Lsize=N1k=1NS^pksk

  论文直接使用原始的点坐标,通过一个系数 λ s i z e \lambda_{size} λsize来进行损失的权衡,优化目标变为:

L d e t = L k + λ s i z e L s i z e + λ o f f L o f f L_{det}=L_k+\lambda_{size}L_{size}+\lambda_{off}L_{off} Ldet=Lk+λsizeLsize+λoffLoff

  实验中两个常系数分别取0.1和1,并且使用单个网络来预测关键点 Y ^ \hat Y Y^,偏移 O ^ \hat O O^和尺寸 S ^ \hat S S^,该网络在每个位置一共产生 C + 4 C+4 C+4个输出。所有的输出共享一个全卷积主干网络,之后主干网络的特征一次通过可分离的 3 × 3 3 \times 3 3×3卷积,ReLU激活函数以及一个 1 × 1 1 \times 1 1×1卷积,下图是网络输出的一个简单示例。

在这里插入图片描述

  在网络推理阶段,首先对于每一个类别独立地在热力图中提取峰顶,然后检测所有值不小于 3 × 3 3 \times 3 3×3邻域的响应,取前100 个峰顶,令 P ^ c \hat P_c P^c表示包含 c c c个类别的 n n n个中心点 P ^ = { ( x ^ i , y ^ i ) } i = 1 n \hat P=\{(\hat x_i,\hat y_i)\}^n_{i=1} P^={(x^i,y^i)}i=1n的集合。每一个关键点的位置都是由一个整数值得二维坐标 ( x i , y i ) (x_i,y_i) (xi,yi)给出,使用关键点d的值 Y ^ x i y i c \hat Y_{x_iy_ic} Y^xiyic作为置信度并产生一个边界框:

( x ^ i + δ x ^ i − ω ^ i / 2 , y ^ i + δ y ^ i − h ^ i / 2 x ^ i + δ x ^ i + ω ^ i / 2 , y ^ i + δ y ^ i + h ^ i / 2 ) (\hat x_i+\delta \hat x_i-\hat \omega_i /2,\hat y_i+ \delta \hat y_i-\hat h_i/2\\\hat x_i+\delta \hat x_i+\hat \omega _i/2,\hat y_i+ \delta \hat y_i+\hat h_i/2) (x^i+δx^iω^i/2,y^i+δy^ih^i/2x^i+δx^i+ω^i/2,y^i+δy^i+h^i/2)

  其中,含有 δ \delta δ的项是偏移量, w 、 h w、h wh的项是预测的尺寸,所有的输出都是直接由关键点估计产生,不需要经过基于IoU比较的非极大值抑制,因为峰顶关键点的提取可以取代NMS,并且可以简单地通过一个 3 × 3 3 \times 3 3×3的最大池化实现。

3.1 三维目标检测

  三维目标检测为每个目标预测产生一个三维的边界框,其需要额外的参数:深度,3D维度信息和方向。论文为每一个参数添加一个独立的头部,深度 d d d是每一个中心点独立参数,然而这个参数很难直接回归,论文使用一种变形即 d = 1 / σ ( d ^ ) − 1 d=1/\sigma(\hat d)-1 d=1/σ(d^)1,其中 σ \sigma σ是sigmoid激活函数,方法在一个附加的输出通道 D ^ ∈ [ 0 , 1 ] W R × H R \hat D \in [0,1]^{\frac{W}{R}\times \frac{H}{R}} D^[0,1]RW×RH计算深度,它使用了两层卷积核一个ReLU激活函数,与之前的形式不同,这里的输出层采用sigmoid的逆变换,并且使用L1损失进行优化。

  目标的3D维度是三个参数,论文使用一个头部 T ^ ∈ [ 0 , 1 ] W R × H R × 3 \hat \Tau \in [0,1]^{\frac{W}{R}\times \frac{H}{R}\times 3} T^[0,1]RW×RH×3和L1损失直接对它们的绝对值进行回归。对于角度量,论文使用将其编码为八个参数,每个bin中四个,每个bin中的两个参数使用softmax分类剩下的两个回归为一个角度。

3.2 人体姿态估计[这个方向一点不了解,跳过~]

4. 模型架构

在这里插入图片描述
(a)沙漏网络
(b)带有反卷积的ResNet,在上采样层之前使用一个 3 × 3 3\times3 3×3的可变形卷积来改变通道数,使得最后的特征图尺寸由1/32变为1/4
©DLA-34,用于语义分割的模型
(d)修改后的DLA-34,加入跳跃结构

5. 实验结果

目标检测
COCO测试集
在这里插入图片描述
Pascal VOC 2007
在这里插入图片描述

姿态估计
COCO测试集
在这里插入图片描述
三维目标检测
在这里插入图片描述

可视化结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值