【AI理论浅谈Anchor-Free based目标检测(一)

网友投稿 1076 2022-05-30

目前主流的目标检测方法大体分为两类:single-stage和two-stage。

single-stage典型方法有SSD系列、YOLO系列、RetinaNet等,two-stage方法有RCNN系列、Mask-RCNN、R-FCN。其他各种各样的SOAT方法基本是这两类方法的拓展和延伸。这两类方法的共同点就是anchor-based,在检测过程中都需要先生成anchor,基于这些先验区域分别做分类和位置回归。anchor-based方法近年来在工业界取得了巨大成功,目标检测算法在很多领域发挥出了不可替代的作用。然而还有另一类方法,虽然不是主流,但依然能取得SOTA的性能,这就是anchor-free的方法,代表算法有CornerNet、ExtremeNet、FSAF(CVPR2019)等。

最近又重新细读了CornerNet和ExtremeNet,梳理了一下逻辑和思路。

模型的整体结构如下图,backbone采用hourglass network以得到高质量的feature map,接两个分支分别预测top-left Corner 和bottom-right Corner,两个分支的结构完全一样。

Heatmap分支的设计

heatmap的尺寸大小为(H,W,C),C是类别数,一个channel对应一类物体。H和W和输入图片 一般满足关系:  ,文中Stride为4。

heatmap对应的loss函数如下,采用了focal loss的变体形式,其中  是位置为(i,j)的输出类别为c的scores,  是对应的gt值,这个gt值被penalty reduction进行惩罚。

Offset分支的设计

由上面的介绍,heatmap和原图输入有一个stride大小的比例关系,在将heatmap上的点映射到原图尺寸上时会有位置误差。假设原图上位置为(i,j)的点,在heatmap上对应的位置变为  ,n是下采样stride。这样在映射的过程中会产生  的误差。因此,模型除了预测heatmap,还同时预测了弥补映射过程中带来的误差offset分支

,  是offset,  ,  是object k对应的corner。并且offset分支对所有类别共享,采用smooth l1函数进行训练。

Grouping Corner的设计

假设object k的top-left Corner对应的embedding vector是  ,bottom-rightCorner对应的embedding vector是  ,embedding vector的训练目的就是使得同一个object的距离越来越近,不同object的距离越来越远,即类似于“类间间距大,类内间距小”,因此最后的loss函数如下:

Corner Pooling 的设计

ground-truth对应的Corner必然会存在不在物体上面的情况,这种情况下,Corner周围都是背景区域,对Corner的预测很不利。从本质上来说,左上角和右下角的Corner其实根据object的边界信息得到,ExtremeNet就很好的利用了这一点。为了利用物体边界信息,需要一个操作可以将物体边界信息聚合到Corner点上,因此就有了pooling操作。

pooling操作很简单,对每个点,向水平和垂直方向进行pooling操作,这样同一个水平和垂直方向上就包含了该方向的物体边界信息。

【AI理论】浅谈Anchor-Free based目标检测(一)

以top-left Corner为例

实验效果

基于CornerNet预测bounding box的一对左上角-右下角Corner思路,ExtremeNet直接预测object的左-下-右-上边界,再通过预测的边界点得到bounding box,思路更加直接。

ExtremeNet的思路很简单,首先预测5个边界点(extreme point),分别对应左-下-右-上4个点和位置中心点。然后对每一类边界点根据score进行排序,取最大的k个(文中k=40),这样就得到了40x40x40x40个组合排列,遍历每一个排列方式,计算其中心点的位置,然后得到中心点的score,若这个score值大于阈值,则接受这个组合下的边界点得到一个bounding box。

Center grouping

ExtremeNet的center grouping相对于CornerNet的Corner grouping操作更加简单直接,就是采用遍历的思路逐个判断边界点组合是否符合条件。

ExtremeNet的loss函数设计也参考了CornerNet

Ghost box suppression

所谓ghost box就是一个大的False positive box包含多个小的True positive box,由于在center grouping的过程中,这个False positive box的位置中心点有可能落在True positive box的中心点或附近,因为比较大的score,导致False positive box。

实验效果

ExtremeNet在COCO上取得了新的SOTA效果,在同样的backbone和input resolution下,single-scale比CornerNet略差,但multi-scale比CornerNet要好。

总结

Anchor free based method一般采用bottom-up的思路,先生成带有类别信息和位置信息的feature map,再根据这些feature map得到最后的bounding boxes。总结起来,其关键部分包含一下几方面:

如何生成高质量的feature map,这是得到精准的bounding boxes的前提,主要是backbone的设计。众所周知,CNN的多层stride会损失很多位置信息,而这些信息对于pixel-level的任务至关重要。

因为没有提前设定feature map上哪些points负责预测哪个ground-truth box,需要一个grouping操作将属于同一个object的points划分到一起。

训练过程loss的设计。loss函数既需要考虑预测的feature map能学到discriminative的类别置信度,还需要输出准确的位置信息。

CornerNet和extremeNet都尝试从keypoint的角度做detection,摆脱了anchor的繁琐设置,以及先验anchor带来的bias。从标注成本的角度来讲,CornerNet只需要bounding box标注,ExtremeNet需要instance segmentation mask的标注,标注成本相对较高。同时,keypoint需要更细节的位置信息,对backbone的要求较高,所以hourglass network这类对keypoint较友好的网络成为了第一选择,带来的问题是检测速度较慢。

另外CVPR2019的Feature Selective Anchor-Free Module for Single-Shot Object Detection也从anchor-free的角度改进了RetinaNet,取得了不错效果,具体的解读可以参考我的另一篇ywsun:[CVPR2019]:FSAF for Single-Shot Object Detection

目前anchor-free的文章越来越多,很多人开始考虑从keypoint、segmentation的角度入手做detection,但想要取得像Faster R-CNN、SSD、RetinaNet的实用性和效果还有很长的路要走。

参考文献:

Associative embedding: End-to-end learning for joint detection and grouping

Deep extreme cut: From extreme points to object segmentation

转自:https://zhuanlan.zhihu.com/p/58183628

EI 人工智能 AI

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:国家远程医疗中心:让医疗更及时、更温暖
下一篇:Android使用NDK(从java调用本地函数'JNI')
相关文章