简介
图1:论文原文
论文是2019年的一篇基于Anchor-Free的目标检测论文。CenterNet——顾名思义,其检测流程是先得到目标的中心点,再由中心点得到边界框,进而完成目标检测过程。(本文不介绍CenterNet在3D目标检测和人体姿态估计中的应用)
论文原文 源码
0. Abstract
论文指出大多数检测算法的做法是产生大量对目标位置的预测,但这类做法耗时低效且需要后处理。论文提出将目标检测转化为检测边界框中心点的方法。实验结果为在MS COCO数据集上的AP为28.1%、速度为142FPS,37.4%、52FPS,45.1%、1.4FPS。
论文贡献:(一)提出一种新的Anchor-Free目标检测方法;(二)论文方法稍加改动即可用于3D目标检测和人体姿态估计等相关检测任务。
1. Introduction
当前大多数目标检测方法首先产生大量建议框,然后判别每个框内是否含有目标。然而,由于该类算法需要产生所有可能的建议框而常常需要大量重复的计算,进而影响了算法的精度和实时性。
图2:CenterNet使用一个中心点表示物体
论文提出了一种简单和高效的方法:使用边界框的中心点表示物体。将图像输入到一个全卷积网络得到一个热图,这个热图的峰值对应于目标的中心点,峰值周围的图像特征用于预测边界框的高和宽。在推理阶段,CenterNet使用单个网络进行前向传播,去掉NMS的后处理。CenterNet的实验结果结果见图3。
图3:CenterNet实验结果对比
2. Related Work
CenterNet方法同Anchor-Based的一阶段方法相关,一个中心点可以看做是单个形状不定的Anchor。不同之处在于:(1)CenterNet仅根据位置来分配 “ Anchor ” ,没有手动设置的用于前景和背景分类的阈值;(2)CenterNet仅含有一个正类“ Anchor ” ,不需要NMS处理;(3)CenterNet使用较大分辨率的输出,避免了使用多重Anchors。
图4:Anchor-Based方法同论文方法区别
图4中子图1是Anchor-Based方法。当预测框同标注框的IoU大于0.7时,则被视为正类,否则视为负类;图4中子图2是论文方法。通过预测中心点得到边界框。
3. Preliminary
首先定义几个变量。
I表示宽为
W,高为
H的输入图形;CenterNet产生关键点热图
Y^,
R表示输出的步长(下采样的倍数),
C是关键点的类别数(
C=80);
Y^=1表示检测的关键点,
Y^=0表示背景。
注:
I
∈RW×H×3、
Y^
∈[0,1]RW×RH×C
对于类别
c的标注关键点
p,计算其在下采样图中为
p~。然后使用高斯核
Yxyc将所有标注关键点分散到一个热图
Y上,
σ2表示标准差。如果同一类别的两个高斯计算结果相同,取较大值。
注:
p
∈R2、
p~=⌊Rp⌋、
Yxyc=exp(−2σp2(x−p~x)2+(y−p~y)2)、
Y∈[0,1]RW×RH×C
由此得到第一部分损失函数
Lk:
Lk=N−1xyc∑{(1−Y^xyc)αlog(Y^xyc)(1−Yxyc)β(Y^xyc)αlog(1−Y^xyc)ifYxyc=1otherwise(3.1)
这是Focal Loss的典型形式。
N表示图像
I中的目标数,
α=2,
β=2。
同时预测一个偏移
O^处理下采样后的图像中的关键点映射回原图所产生误差,由此得到第二部分损失函数
Loff:
Loff=N1p∑∣O^p~−(Rp−p~)∣(3.2)
注:
O^∈RRW×RH×2,
Loff只在
p~(预测为正类关键点)处使用,其他地方为零。
Loff为L1损失函数形式:
L1=∑∣yi−f(xi)∣
4. Objects as Points
首先定义几个变量。
(x1(k),y1(k),x2(k),y2(k))表示类别为
ck的目标
k的边界框,则其中心点的坐标为
pk=(2x1(k)+x2(k),2y1(k)+y2(k)))。使用上述定义的热图
Y^来预测所有的中心点。此外,对于每个目标
k,回归边界框的宽高
sk=(x2(k)−x1(k),y2(k)−y1(k))。同时,为了减少计算量,对每个类别使用同样的宽高预测
S^。由此得到第三部分损失函数
Lsize:
Lsize=N1k=1∑N∣S^pk−sk∣(4.1)
注:
S^∈RRW×RH×2,这里也是
L1损失函数的形式。
总的损失函数
Ldet定义为:
Ldet=Lk+λsizeLsize+λoffLoff(4.2)
网络同时预测
Y^(关键点热图)、
O^(位置偏移)、
S^(宽高预测),在每个像素点位置得到
C+4个输出。
图5:CenterNet用于目标检测
C+4对应于图5中三幅图。第一幅图中
C为类别数,第二图中2为预测的偏移,第三幅图中2为预测的宽高。
如何使用中心点生成边界框?
在推理阶段,独立地提取每个类别热图的峰值,判断峰值是否大于或等于其8-领域的值,最后保留前100个峰值。
P^c表示类别
c得到的
n个检测点,每个关键点的坐标为
(xi,yi),
Y^xiyic为其置信度。则得到边界框(左上角坐标和右下角坐标):
(x^i+δx^i−w^i/2,y^i+δy^i−h^i/2)
(x^i+δx^i+w^i/2,y^i+δy^i+h^i/2)
其中
P^c={(xi^,yi^)}i=1n,
(δxi^,δyi^)=O^xi^,yi^为偏移预测、
(w^i,h^i)=S^x^i,y^i为宽高预测。
由此产生的边界框不需要NMS等后处理方法。
5. Implementation Details
论文使用四种Backbone做实验,ResNet-18、ResNet-101、DLA-34、Hourglass-104。训练超参数设置和细节可参考论文原文。四种Backbone的结果对比:
图6:不同Backbone的对比
6. Experiments
图7:实验结果对比
7. Conclusion
论文提出了一种新的目标表示方法:点。CenterNet检测目标的中心,然后回归宽高;算法简单高效,不需要任何NMS等后处理。另:论文原文还给出了实验中所使用的Backbone以及消融实验等。
由于没有阅读源码,本文只总结了CenterNet的大体结构和信息,详细内容请阅读论文原文。
参考
- Zhou X, Wang D, Krähenbühl P. Objects as points[J]. arXiv preprint arXiv:1904.07850, 2019.
完