前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >真Anchor Free目标检测----CenterNet详解

真Anchor Free目标检测----CenterNet详解

作者头像
SIGAI学习与实践平台
发布2019-07-10 18:45:37
9.1K0
发布2019-07-10 18:45:37
举报
文章被收录于专栏:SIGAI学习与实践平台

SIGAI特约作者

Johnny

研究方向:计算机视觉

最近anchor free的目标检测方法很多,尤其是centernet,在我心中是真正的anchor free + nms free方法,这篇centernet对应的是"Objects as Points",不是另外一篇"CenterNet- Keypoint Triplets for Object Detection"。作者xinyi zhou也是之前ExtremeNet的作者。

CenterNet 厉害的地方在于他不仅可以做2D目标检测,只需要少量扩展就可以迁移到3D目标检测和人体关键点检测上。

引言

CenterNet属于anchor-free系列的目标检测,相比于CornerNet做出了改进,使得检测速度和精度相比于one-stage和two-stage的框架都有不小的提高,尤其是与YOLOv3作比较,在相同速度的条件下,CenterNet的精度比YOLOv3提高了4个左右的点。

在coco 上用resnet18作为backbone可以达到精度28.1 速度142FPS,用hourglass做backbone可以达到精度45.1速度1.4FPS。可谓是实现了速度和精度的平衡。

CenterNet相比One Stage和Two Stage算法的区别

那CenterNet相比于之前的one-stage和two-stage的目标检测有什么区别?

区别主要来自两个方面:

1)CenterNet没有anchor这个概念,只负责预测物体的中心点,所以也没有所谓的box overlap大于多少多少的算positive anchor,小于多少算negative anchor这一说,也不需要区分这个anchor是物体还是背景 - 因为每个目标只对应一个中心点,这个中心点是通过heatmap中预测出来的,所以不需要NMS再进行来筛选。

2)CenterNet的输出分辨率的下采样因子是4,比起其他的目标检测框架算是比较小的(Mask-Rcnn最小为16、SSD为最小为16)。之所以设置为4是因为centernet没有采用FPN结构,因此所有中心点要在一个Feature map上出,因此分辨率不能太低。

看下图可以比较直观的看出centernet的建模方法

总体来说,CenterNet结构十分简单,直接检测目标的中心点和大小,是真正意义上的anchor-free。

网络结构

论文中CenterNet提到了三种用于目标检测的网络,这三种网络都是编码解码(encoder-decoder)的结构:

1. Resnet-18 with up-convolutional layers : 28.1% coco and 142 FPS

2. DLA-34 : 37.4% COCOAP and 52 FPS

3. Hourglass-104 : 45.1% COCOAP and 1.4 FPS

每个网络内部的结构不同,但是在模型的最后输出部分都是加了三个网络构造来输出预测值,默认是80个类、2个预测的中心点坐标、2个中心点的偏置。

三种网络结构如下图所示

在整个训练的流程中,CenterNet学习了CornerNet的方法。对于每个标签图(ground truth)中的某一类,我们要将真实关键点(true keypoint) 计算出来用于训练,中心点的计算方式如下

,对于下采样后的坐标,我们设为

,其中 R 是文中提到的下采样因子4。所以我们最终计算出来的中心点是对应低分辨率的中心点。

然后我们对图像进行标记,在下采样的[128,128]图像中将ground truth point以下采样的形式,用一个高斯滤波

来将关键点分布到特征图上。

损失函数

中心点的损失函数如下:

其中 α 和 β 是Focal Loss的超参数, N 是图像 I 的的关键点数量,用于将所有的positive focal loss标准化为1。在这篇论文中 α 和 β 分别是2和4。这个损失函数是Focal Loss的修改版,适用于CenterNet。

看一下官方的这张图可能有助于理解:传统的基于anchor的检测方法,通常选择与标记框IoU大于0.7的作为positive,相反,IoU小于0.3的则标记为negative,如下图a。这样设定好box之后,在训练过程中使positive和negative的box比例为1:3来减少negative box的比例(例如SSD没有使用focal loss)。

而在CenterNet中,每个中心点对应一个目标的位置,不需要进行overlap的判断。那么怎么去减少negative center pointer的比例呢?CenterNet是采用Focal Loss的思想,在实际训练中,中心点的周围其他点(negative center pointer)的损失则是经过衰减后的损失(上文提到的),而目标的长和宽是经过对应当前中心点的w和h回归得到的:

目标中心的偏置损失

因为上文中对图像进行了 R=4 的下采样,这样的特征图重新映射到原始图像上的时候会带来精度误差,因此对于每一个中心点,额外采用了一个local offset 去补偿它。所有类 c 的中心点共享同一个offset prediction,这个偏置值(offset)用L1 loss来训练:

这个偏置损失是可选的,我们不使用它也可以,只不过精度会下降一些。

目标大小的损失

我们假设 (X1(k), Y1(k), X2(k), Y2(k)) 为为目标 k ,所属类别为c ,它的中心点为

我们使用关键点预测 Y^ 去预测所有的中心点。然后对每个目标 K 的size进行回归,最终回归到

Sk = (X2(k)-X1(k), Y2(k)-Y1(k)) ,这个值是在训练前提前计算出来的,是进行了下采样之后的长宽值。

作者采用L1 loss 监督w,h的回归

整体的损失函数为物体损失、大小损失与偏置损失的和,每个损失都有相应的权重。

在论文中 size 和 off的系数分别为0.1和1 ,论文中所使用的backbone都有三个head layer,分别产生[1,80,128,128]、[1,2,128,128]、[1,2,128,128],也就是每个坐标点产生 C+4 个数据,分别是类别以及、长宽、以及偏置。

测试阶段

在预测阶段,首先针对一张图像进行下采样,随后对下采样后的图像进行预测,对于每个类在下采样的特征图中预测中心点,然后将输出图中的每个类的热点单独地提取出来。具体怎么提取呢?就是检测当前热点的值是否比周围的八个近邻点(八方位)都大(或者等于),然后取100个这样的点,采用的方式是一个3x3的MaxPool,类似于anchor-based检测中nms的效果。

下图展示网络模型预测出来的中心点、中心点偏置以及该点对应目标的长宽:

那最终是怎么选择的,最终是根据模型预测出来的

,也就是当前中心点存在物体的概率值,代码中设置的阈值为0.3,也就是从上面选出的100个结果中调出大于该阈值的中心点作为最终的结果。

扩展

关键点回归任务和3D任务:

这里在原来的分支上额外多出一两个任务即可将centernet扩展到关键点和3D上。

对于关键点,coco每个人有17个关键点,可以直接通过中心点预测出17个关键点的offset,然后再预测一个heatmap做match,因为直接回归关键点没有heatmap准。

对于3D,只需要多回归3Dsize,depth和orientation即可。

具体信息如下图所示:

可视化结果

centernet在不同任务上都取得了不过的表现,潜力很大,具体效果见下图所示。

可以看到无论是在2D检测,3D检测还是keypoint任务上都取得了不错的效果。

总结

CenterNet的优点如下:

1. 设计模型的结构比较简单,一般人也可以轻松看明白,不仅对于two-stage,对于one-stage的目标检测算法来说该网络的模型设计也是优雅简单的。

2.该模型的思想不仅可以用于目标检测,还可以用于3D检测和人体姿态识别,虽然论文中没有是深入探讨这个,但是可以说明这个网络的设计还是很好的,我们可以借助这个框架去做一些其他的任务。

3. 虽然目前尚未尝试轻量级的模型,但是可以猜到这个模型对于嵌入式端这种算力比较小的平台还是很有优势的。

当然说了一堆优点,CenterNet的缺点也是有的,那就是:

1.在实际训练中,如果在图像中,同一个类别中的某些物体的GT中心点,在下采样时会挤到一块,也就是两个物体在GT中的中心点重叠了,CenterNet对于这种情况也是无能为力的,也就是将这两个物体的当成一个物体来训练(因为只有一个中心点)。同理,在预测过程中,如果两个同类的物体在下采样后的中心点也重叠了,那么CenterNet也是只能检测出一个中心点,不过CenterNet对于这种情况的处理要比faster-rcnn强一些的,具体指标可以查看论文相关部分。

2. 有一个需要注意的点,CenterNet在训练过程中,如果同一个类的不同物体的高斯分布点互相有重叠,那么则在重叠的范围内选取较大的高斯点。

本文为SIGAI原创

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SIGAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档