写点什么

真 Anchor Free 目标检测:CenterNet 详解

  • 2019-07-14
  • 本文字数:3240 字

    阅读完需:约 11 分钟

真Anchor Free目标检测:CenterNet详解

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

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


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


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

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


本文转载自公众号 SIGAI(ID:SIGAICN)


原文链接


https://mp.weixin.qq.com/s/CEcN5Aljvs7AyOLPRFjUaw


2019-07-14 08:007976

评论

发布
暂无评论
发现更多内容

2024 年 2 月公链行业研报

Footprint Analytics

比特币 公链 defi Layer 2

多模态 + 大模型会带来哪些 “化学反应”?

京东科技开发者

全栈开发与自动化测试高薪私教班,带你从0到1拿到高薪Offer

测试人

软件测试

2款办公必备的ai制作ppt软件,一键生成专业精致PPT!

彭宏豪95

PPT 在线白板 办公软件 AIGC AI生成PPT

利用阿里巴巴中国站1688商品详情API:电商开发者的必备指南

技术冰糖葫芦

API 接口 API 测试

为什么投递的简历无响应?

王磊

Java 面试

新经济时代企业财务管理系统的新需求解读

智达方通

业财融合 财务管理 企业财务预算管理

结合微帧编码引擎,从视频编解码角度对Sora浅析

微帧Visionular

全栈开发与自动化测试高薪私教班,带你从0到1拿到高薪Offer

霍格沃兹测试开发学社

SD-WAN怎样提高网络管理的效率?

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

SD-WAN解决企业在工业互联网时代的新困境

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

PlayBook 详解

不在线第一只蜗牛

Linux 网络 服务器

解锁区块链游戏数据解决方案

Footprint Analytics

链游

京东ES支持ZSTD压缩算法上线了:高性能,低成本

京东科技开发者

【AAAI 2024】解锁深度表格学习(Deep Tabular Learning)的关键:算术特征交互

阿里云大数据AI技术

人工智能 机器学习 架构 算法

了解 x-www-form-urlencoded 及实践

Liam

程序员 前端 Web HTTP x-www-form-urlencoded

5G与SD-WAN的结合为企业网络注入新活力

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

电商场景下 ES 搜索引擎的稳定性治理实践

字节跳动云原生计算

搜索引擎 云原生 云搜索

在专业iPaaS厂商与大型软件企业间如何选择

谷云科技RestCloud

解决方案 数据集成 ipaas

一文详解前端发展趋势

不在线第一只蜗牛

前端 前端开发 前端框架

Sora Opera:天图万境联合华为云共筑AI生成式视频音效新高度

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 视频配音 AI生成式视频音效

华为吴辉:强健“伙伴+华为”体系,让数智世界一触即达

新消费日报

站群云服务器租用攻略,让你的网站运行更稳定更快速

一只扑棱蛾子

站群服务器 站群云服务器租用 站群云服务器

2024Java笔试真题,java虚拟机面试题

阿里、莫言

Java java面试 金三银四 Java 面试题

真Anchor Free目标检测:CenterNet详解_软件工程_Johnny_InfoQ精选文章