目标检测: 一文读懂 CenterNet (CVPR 2019)

论文:Objects as Points
论文链接:https://arxiv.org/pdf/1904.07850.pdf
论文代码:https://github.com/xingyizhou/CenterNet

CenterNet 是 anchor-free 的目标检测经典算法,今天我们就一起来分析分析这个算法。代表性的二阶段和一阶段目标检测算法如 Faster-rcnn 和 Yolo 都是 anchor-based 算法,即先在特征图上生成 anchor box,随后调整这些anchor box 的位置和尺寸生成最后的预测值。而本文提出单阶段的 anchor-free 目标检测算法,无需事先生成 anchor。下面我们开始今天的正题!

1 为什么要提出 CenterNet ?

之前目标检测算法有如下不足:

  • anchor-based 的目标检测算法难以端到端训练:一个目标会对应多个anchor box,需要使用后处理 NMS 抑制掉重复的 box,这种后处理是难以微分的, 因而大多数检测器不是端到端的训练。
  • 基于滑动窗口的目标检测算法,需要计算所有可能的目标位置和尺寸,运算冗余。

CenterNet 做了如下改进:

  • 每个目标使用 bbox中心点表示,目标尺寸、方位、姿态等其他属性,从位于中心位置的图像特征回归得到。

  • 将图片输入到全卷积网络中生成heatmap,heatmap的峰值位置对应着物体的中心。

  • 在推断时,只要做一次前向传播,无需NMS后处理。在这里插入图片描述

2 CenterNet 网络框架

CenterNet 是一种单阶段目标检测算法,该算法网络框架如下所示:

在这里插入图片描述

  • 输入端 — 输入端表示输入的图片。该网络的输入图像大小 W W W H H H 为为512,该阶段通常包含一个图像预处理阶段,对图片进行随机翻转,随机缩放(0.6~1.3倍),图片裁剪和颜色增强。
  • 基准网络 — 基准网络用来提取图片特征。论文分别试验了ResNet-18,ResNet-101,DLA-34和 Hourglass-104。
  • Head输出端 — Head用来完成目标检测结果的输出。输出端的分支有3个,分别为 heatmap、offset和size,对应的输出尺度为( W / R W/R W/R, H / R H/R H/R, C C C)、( W / R W/R W/R, H / R H/R H/R, 2 2 2) 和( W / R W/R W/R, H / R H/R H/R, 2 2 2),其中 R R R 为 stride,论文中取4, C C C 为目标种类。

3 CenterNet 实现细节

3.1 什么是关键点 heatmap?

对于每个标签图(ground truth)中的某一 类 c c c,其 bbox 标签为 ( x 1 , y 1 , x 2 , y 2 ) (x_1,y_1,x_2,y_2) (x1,y1,x2,y2),则关键点坐标为:
p = ( x 1 + x 2 2 , y 1 + y 2 2 ) p=\left(\frac{x_1+x_2}{2},\frac{y_1+y_2}{2} \right) p=(2x1+x2,2y1+y2)
计算得到低分辨率(经过下采样)上对应的关键点:
p ~ = ( p ~ x , p ~ y ) = ⌊ p R ⌋ \widetilde p=(\widetilde p_x,\widetilde p_y)=\lfloor \frac {p}{R}\rfloor p =(p x,p y)=Rp
R R R 为下采样因子,论文采用下采用数为 R = 4 R=4 R=4 。进一步将 GT 关键点通过高斯核分散到热力图上:
Y x y c = e x p ( − ( x − p ~ x ) 2 + ( y − p ~ y ) 2 2 σ p 2 ) Y_{xyc}=exp\left(\frac{-(x-\widetilde p_x)^2+(y-\widetilde p_y)^2}{2\sigma^2_p} \right) Yxyc=exp(2σp2(xp x)2+(yp y)2)
式中 σ p \sigma_p σp 是目标尺度-自适应 的标准方差,热力图值的范围是0-1,即 Y ∈ [ 0 , 1 ] W R × H R × C Y \in [0,1]^{\frac {W}{R}×\frac {H}{R}×C} Y[0,1]RW×RH×C, 值为1时,代表此点为目标的中心点,也就是要预测要学习的点,如果对于同个类 c c c (同个关键点或是目标类别)有两个高斯函数发生重叠,选择元素级最大的,得到热力图如下:


3.2 关键点损失如何计算?

论文中关键点损失定义如下:
L k = − 1 N ∑ x y c { ( 1 − Y ^ x y c ) α ⋅ l o g ( Y ^ x y c ) 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_{xyc} \begin{cases} (1-\hat Y_{xyc})^{\alpha}\cdot log(\hat Y_{xyc}) & Y_{xyc}=1\\ (1-Y_{xyc})^{\beta}\cdot (\hat Y_{xyc})^{\alpha} \cdot log(1-\hat Y_{xyc}) & otherwise\end{cases} Lk=N1xyc{ (1Y^xyc)αlog(Y^xyc)(1Yxyc)β(Y^xyc)αlog(1Y^xyc)Yxyc=1otherwise

式中: Y ^ x y c \hat Y_{xyc} Y^xyc为预测的关键点热力图值; Y x y c Y_{xyc} YxycGT关键点热力图值; α \alpha α β \beta β 为权重。

(1) 情况 Y x y c = 1 Y_{xyc}=1 Yxyc=1

当前坐标正好位于GT中心点上,当前坐标点为正样本,目标是让 Y ^ x y c \hat Y_{xyc} Y^xyc 越大越好:

( 1 − Y ^ x y c ) α (1-\hat Y_{xyc})^{\alpha} (1Y^xyc)α的作用:

  • Y ^ x y c = 1 \hat Y_{xyc}=1 Y^xyc=1时, ( 1 − Y ^ x y c ) α = 0 (1-\hat Y_{xyc})^{\alpha}=0 (1Y^xyc)α=0 ,损失为0,这是最理想的情况;

  • 0 ≤ Y ^ x y c < 1 0\leq\hat Y_{xyc}<1 0Y^xyc<1时, Y ^ x y c \hat Y_{xyc} Y^xyc 值越大,权重 ( 1 − Y ^ x y c ) α (1-\hat Y_{xyc})^{\alpha} (1Y^xyc)α 越小,损失越小,即会鼓励 Y ^ x y c \hat Y_{xyc} Y^xyc 值增大。

(2) 其他情况:

Y x y c ≠ 1 Y_{xyc}\neq1 Yxyc=1 表示当前坐标点为负样本,目标是让 Y ^ x y c \hat Y_{xyc} Y^xyc 越小越好。

( Y ^ x y c ) α (\hat Y_{xyc})^{\alpha} (Y^xyc)α 的作用:

  • Y ^ x y c \hat Y_{xyc} Y^xyc 越小,权重 ( Y ^ x y c ) α (\hat Y_{xyc})^{\alpha} (Y^xyc)α 也越小,即让损失越小,减小惩罚;
  • Y ^ x y c \hat Y_{xyc} Y^xyc 越大,权重 ( Y ^ x y c ) α (\hat Y_{xyc})^{\alpha} (Y^xyc)α 也越大,即让损失增大,增大惩罚;

( 1 − Y x y c ) β (1-Y_{xyc})^{\beta} (1Yxyc)β 的作用:

  • 当关键点远离GT中心点, Y x y c Y_{xyc} Yxyc =0,此时 ( 1 − Y x y c ) β = 1 (1-Y_{xyc})^{\beta}=1 (1Yxyc)β=1 ,对关键点损失没有影响;

  • 当关键点处于GT中心点的高斯圆范围内, 0 < Y x y c < 1 0<Y_{xyc}<1 0<Yxyc<1,此时 0 < ( 1 − Y x y c ) β < 1 0<(1-Y_{xyc})^{\beta}<1 0<(1Yxyc)β<1 ,即让关键点损失减小;

    可见 ( 1 − Y x y c ) β (1-Y_{xyc})^{\beta} (1Yxyc)β 用于弱化GT中心点附近(高斯圆范围内)的负样本损失,而惩罚那些远离GT中心点的预测关键点。

3.3 为何要将目标中心点处理成高斯圆分布?

下图左图中,是不做高斯圆的情形,虽然绿点2更加靠近GT关键点,但是对于网络而言,红点1和绿点2处的关键点损失是一样的,所以网络没有优化方向;

下图右图中,是做一个高斯圆的情形,红点1处于高斯圆之外,将受到惩罚;而绿点在高斯圆内,越往中心,关键点损失越小,即鼓励网络学习到让预测关键点更加靠近GT中心点。

在这里插入图片描述

3.4 Loss的设计

CenterNet 总体Loss为:
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
式中: L k L_k Lk 为上节中的关键点损失, L o f f L_{off} Loff 为偏置损失, L s i z e L_{size} Lsize为尺寸损失。

偏置损失和尺寸损失的解释如下:

偏置损失:

因为CenterNet网络对图像进行了 R = 4 R=4 R=4 的下采样,将特征图重新映射到原始图像上时会带来误差,因此需要每个关键点 p ~ \widetilde p p 预测一个偏置 O ^ ∈ R W R × H R × 2 \hat O \in R^{\frac {W}{R}×\frac {H}{R}×2} O^RRW×RH×2。偏置损失使用L1 loss,定义如下:
L o f f = 1 N ∑ p ∣ O ^ p ~ − ( p R − p ~ ) ∣ L_{off}=\frac{1}{N}\sum_p|\hat O_{\widetilde p}-(\frac{p}{R}-\widetilde p)| Loff=N1pO^p (Rpp )

式中: O ^ p ~ \hat O_{\widetilde p} O^p 表示关键点坐标的预测偏置; p p pGT关键点坐标; R R R 为下采样因子; p ~ \widetilde p p 为预测的关键点坐标。

尺寸损失:

对每个关键点预测其宽高尺寸 S ^ p k ∈ R W R × H R × 2 \hat S_{p_k} \in R^{\frac {W}{R}×\frac {H}{R}×2} S^pkRRW×RH×2,尺寸损失使用L1 loss
L s i z e = 1 N ∑ k = 1 N ∣ S ^ p k − S k ∣ L_{size}=\frac{1}{N}\sum_{k=1}^N|\hat S_{p_k}-S_k| Lsize=N1k=1NS^pkSk
式中: S k S_k SkGT关键点宽高尺寸。

4 CenterNet 性能效果

在COCO数据集上,CenterNet 使用 Hourglass-104基础网络可以取得较好的检测性能,42.2% AP (7.8 FPS),比较而言,CornerNet性能为 40.5% AP(4.1 FPS),ExtremeNet性能为 40.3% AP(3.1 FPS),可见无论是精度还是速度,CenterNet都有很大的优势。

在这里插入图片描述

在这里插入图片描述

5 总结

CenterNet 论文的主要贡献包括以下几点:

  • CenterNet 提出的anchor-free算法摆脱了NMS后处理复杂计算,更加简单高效。
  • CenterNet 可以扩展应用到 3D检测,姿态估计等任务上,为实时目标识别任务提高了新的思路。
  • CenterNet 的改进版参见博客:目标检测:一文读懂 TTFNet (CVPR2020)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46142822/article/details/123941990