【文前】本文所讲述的 CenterNet 为 [Objects as Points] (http://arxiv.org/abs/1904.07850))
有两篇 paper 都为 centernet(论文撞车,另一篇文章为CenterNet: Keypoint Triplets for Object Detection,基本思路异曲同工之妙,都是 anchor-free)
image.png
【论文】https://arxiv.org/pdf/1904.07850.pdf
【代码】https://github.com/xingyizhou/CenterNet
【result】
1、CenterNet 属于 anchor-free 系列的目标检测,相比于 CornerNet 做出了改进,使得检测速度和精度相比于 one-stage 和 two-stage 的框架都有不小的提高,尤其是与 YOLOv3 作比较,在相同速度的条件下,CenterNet 的精度比 YOLOv3 提高了 4 个左右的点。
各个模型效果对比
2、不仅可以做 2D 目标检测, 只需要少量扩展就可以迁移到 3D 目标检测和人体关键点检测上。
【anchor-base 方法痛点】
1、fastRCNN 依赖计算量高的 region proposal 方法,fasterRCNN RPN 网络需要单独训练 RPN生成anchor
2、featuremap 分辨率较低&#xff0c;后NMS 处理(正&#xff1a;IOU>0.7,负&#xff1a;IOU<0.3)计算量不小
【centernet 处理办法】
1、objects as points。所有的检测物体用中心点&#43;长宽表示。这一点从数学来思考&#xff1a;物体都是呈现几何形状&#xff0c;几何形状的中心点代表物体的关键点信息&#xff0c;大部分物体几何中心在物体本身上(特殊情况以及杠精除外)。
而且目前目标检测标注数据都是矩形框而不是像素级别&#xff0c;这样其实对于网络来说&#xff0c;模型傻傻的&#xff0c;当然认定人喂给网络的就是矩形框里的信息都是正信息&#xff0c;不会聪明到人眼睛看到那个真实物体的轮廓&#xff0c;在机器模型眼中&#xff0c;标注的矩形框就是模型认定的轮廓&#xff0c;模型再从所有同一类别下的矩形框自己学习共性&#xff0c;输出包含某一个类别共性的矩形框。所以这样的假定在数学上是可以理解的。(后续可以发展多个几何关键点作为代表&#xff0c;论文 idea&#xff01;&#xff01;&#xff01;)
image.png
关键点如何得到&#xff1f;采用 heatmap 极值点来表示。
网络训练完成后在 inference 阶段&#xff0c;输入图(WxHx3)经过网络在 feature map 上(
image.png
)其中R为相对于原图来说的 stride&#xff0c;C为最终分类数目&#xff0c;论文中 R&#61;4&#xff0c;C&#61;80(coco 数据集)&#xff0c;在每个 channel 类别通道上取像素峰值点(论文中100)&#xff0c;峰值点选取规则&#xff1a;比周围八个点都大的点&#xff0c;作为检测目标的中心点&#xff0c;再经过三个head&#xff1a;分类网络&#xff0c;中心点 offset 网络以及 W&#xff0c;H 回归网络。offset 说明&#xff1a;因为原图W/R 可能为小数&#xff0c;这样在 featuremap 位置对应会有偏差&#xff0c;用 offset 网络来弥补这个偏差(和 maskRCNN 的 roi align机制异曲同工之妙)
2、分辨率较低问题&#xff0c;因为 center 中心点在分辨率低的 feature map 上偏差很大&#xff0c;感受野较大&#xff0c;因此论文中网络采用卷积&#43;上采样的网络结构&#xff0c;论文中涉及三种网络
Resnet-18 with up-convolutional layers : 28.1% coco and 142 FPS
DLA-34 : 37.4% COCOAP and 52 FPS
Hourglass-104 : 45.1% COCOAP and 1.4 FPS
image.png
hourglass network architecture
yolo v3 network architecture
最终输出分辨率为&#xff1a;【W/R, H/R, C】(R&#61;4)&#xff0c;这样高分辨率下对小目标的检测效果较好&#xff0c;
NMS 问题&#xff1a;文中在 heatmap(和 feature map一致&#xff0c; 只是看问题重点不同&#xff0c;heatmap 着重像素值6高低而行程的像热力图那样的)进行取峰值点可类比于 anchor-base 方法中的 NMS 操作&#xff0c;都是取极值操作&#xff0c;只不过centernet在一维点 point 信息下&#xff0c;传统方法在二维ROI区域来说&#xff0c;属于降维打击&#xff0c;这样子计算量就大大降低(但是负样本数量就多了)
【训练过程】
先看 loss 设计
Loss function
1、分类采用 focal loss
focal loss
在 heatmap 上每个峰值点为预测为 Yba&#xff0c;真是 ground-truth 为 Y&#xff0c;非 Y 其他点都为负样本(因一个点为正&#xff0c;其他为负&#xff0c;这样子在相比于 roi 二维区域中&#xff0c;负样本数量大大升高)&#xff0c;直接计算 focal loss &#xff0c;1-Y&#61;0占大多数&#xff0c;模型学习会负样受本影响&#xff0c;怎么办呢&#xff1f;
文中在loss 计算时&#xff0c;ground-truth 映射到 W/R heatmap&#xff0c;以 ground-truth 中心点为中心使用高斯延展&#xff0c;中心点为1&#xff0c;其他地方不直接为0&#xff0c;而时比1小的数&#xff0c;具体延展陡峭程度由高斯核sigma 决定
image.png
2、offset loss
offset loss
3、size regression
image.png
size regression
【实验结果】
centernet 不同网络测试精确度以及速度比对&#xff0c;精度最高的时 hourglass 网络&#xff0c;但是其速度慢&#xff0c;在实际业务应用中采用的是 DLA34网络&#xff0c;可以达到精度与速度的均衡
image.png
image.png
image.png
其他3D 检测和 pose 检测此处略过。