浅谈 OKR 与 KPI:okr和kpi的定义和应用场景(浅谈辄止)
1032
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操作,这样同一个水平和垂直方向上就包含了该方向的物体边界信息。
以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小时内删除侵权内容。