前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >目标检测(object detection)系列(十三)CenterNet:no Anchor,no NMS

目标检测(object detection)系列(十三)CenterNet:no Anchor,no NMS

作者头像
chaibubble
发布2020-07-06 14:14:00
1.7K0
发布2020-07-06 14:14:00
举报

简介

CenterNet的论文是《Objects as Points》,其实从名字就可以很直观的看出,CenterNet是将目标检测问题看做对于目标中心点的检测,它是继CornerNet之后的又一个Anchor-free方法,它们之间也有比较多的相似之处,区别在于CornerNet是找目标的角点,而CenterNet是找目标的中心点。

CornerNet原理

Motivation

CenterNet的出发点和RetinaNet,CornerNet都是差不多的,对于one-stage的目标检测器,大量的anchor导致正负样本的不平衡,网络训练时loss会被大批量负样本所左右。同时又由于检测器是one-stage的,一旦预设了anchor,没办法二次筛选它。所以RetinaNet提出了Focal loss,在计算损失时弱化负样本的影响。而CornerNet和CenterNet则是直接弃用了anchor,除了上面的原因,还有一个就是anchor的设计是完全先验的,有大量的超参数,比如如何选择尺度,比例,多少个分支等等,每个层放几个等等,每个结构都不一样。

Inference

对于一个目标检测任务,一个backbone最后会输出三个分支,分别是Heatmap,Center offset和Box size,如下:

  1. Heatmap:C×H×WC\times H\times WC×H×W,最大值即为目标中心
  2. Center offset: 2C×H×W2C\times H\times W2C×H×W, 预测中心与真值的偏移量
  3. Box size: 2C×H×W2C\times H\times W2C×H×W,每个目标中心处,包含BBox大小的信息

也可以表示为下图的过程,Heatmap作为最核心的输出,表示物体的中心点,而由于下采样造成的不对称,CenterNet使用中心点的offset来修正它,确定中心点后,根据size分支的输出最后确定bbox。

而上面的C,就是目标检测任务的类别数量了,对于COCO就是80,相当于把不同类别的目标放到不同的channel上做。

相比于CornerNet,CenterNet的中心点Heatmap极大的简化了算法的复杂程度,因为一个目标用一个heatmap就可以表示出来,不再需要左上角和右下角两张heatmap,也就不涉及判断哪两个角点属于一个目标的问题。

至于CornerNet认为的“目标的中心点不好定义,目标角点更为清晰明确”这个观点,在CNN的拟合能力面前,看起来是不成问题的。

Train

CenterNet对于目标检测的分支有三个,所以对应的损失也是三个,分别是Heatmap损失,offset损失和size损失:

Heatmap loss:

offset and size loss:

其中CenterNet的Heatmap loss参考的是CornerNet,包括高斯映射,Focal loss的使用都是这样。大家可以直接看之前的文章,在这里就不重复了,而offset loss也是和CornerNet相似的,只是CornerNet使用的smoothL1,而CenterNet直接用了L1,CornerNet预测了左上角和左下角点,所以不需要再预测size,而CenterNet的size loss和offset loss是差不多的,也是L1。

Other

no NMS

CenterNet的结构是可以不做NMS的,本质上其实也是因为no Anchor,这意味着没有大量的先验预设框,不需要过NMS进行滤除,这让CenterNet的后处理变得比较简单,并且更加接近于end-to-end。

关于下采样

此外还有一个很有意思的地方,Anchor free方法的目标检测网络,主干网络的在设计的时候,下采样倍率普遍比较小,CenterNet的倍率是4,CornerNet的下采样倍率是5,而Anchor base的方法,下采样倍率就要大的多,比如YOLOv3是在16的基础上构建三个scale,分别是8,16,32。

也就是YOLOv3最小的倍率也是CenterNet的2倍,这说明Anchor Free方法越来越接近将目标检测任务抽象成类似图像分割(语义,实例),姿态估计,人脸对齐这样的对于点的回归任务来做,而不是像之前的对Anchor修正的方式。所以Anchor Free需要一个更大尺寸的feature map来支撑这个任务,反而feature map厚度变小了,而Anchor base方法的feature map厚度普遍都比较大。

人体关键点预测

CenterNet由于其简洁的结构,使它非常容易的扩展到其他任务上,比如人体姿态估计,也可以成为CenterPose,以coco的17点姿态估计为例,CenterPose的输出为:

  1. Center Heatmap:1×H×W1\times H\times W1×H×W,最大值即为目标中心
  2. Center offset: 2×H×W2\times H\times W2×H×W, 预测中心与真值的偏移量
  3. Center Box size: 2×H×W2\times H\times W2×H×W,每个目标中心处,包含BBox大小的
  4. Center Points offset:34×H×W34\times H\times W34×H×W,最大值即为目标中心
  5. Points Heatmap: 17×H×W17\times H\times W17×H×W, 预测中心与真值的偏移量
  6. Points offset: 34×H×W34\times H\times W34×H×W,每个目标中心处,包含BBox大小的

CenterPose一共有六个分支的输出,前四个定义了单类的目标检测任务和17个点关于中心点的偏移,这是一套17个关键点的预测,后两个定义了17点的预测以及它们各自的offset,这又是一套17个关键点的预测,所以CenterPose一共预测了两套关键点,这样冗余的设计是有意义的:

首先直接对于点的预测可信度应该是更高的(分支5),但是它没办法关联成一个person,这个关联要考分支4,因为分支1、2、3定义了一个person,分支4的offset可以估计出17个点,这17个点可以根据距离关联到5、6预测的17个点上,而对于同样5、6没有预测到的点,可以使用4的点来输出。

当然CenterPose的损失就需要有6个了。

CenterNet性能评价

首先对于backbone的对比,CenterNet也使用了Hourglass-104,由于它比DLA-34大很多,所以效果也在变好,而这里提及的ResNet也不是原版的ResNet结果,而是带了转置卷积和可形变卷积的,这些主干网络其实是在参考语义分割和姿态估计任务。

最后这张表很有说服力,上面是two-stage方法,下面是one-stage方法,其中包括anchor base和anchor free,anchor base里的YOLOv3被拉开了一大截,而另一个Anchor Free的CornerNet,由于是Hourglass-104的backbone,效率也没办法了CenterNet比,所以综合效率和性能,CenterNet还是很不错的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • CornerNet原理
    • Motivation
      • Inference
        • Train
        • Other
          • no NMS
            • 关于下采样
              • 人体关键点预测
              • CenterNet性能评价
              相关产品与服务
              图像识别
              腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档