2019年的论文
概述
-
要解决的问题
- 针对Anchor问题来进行思考的设计
-
采用的方法
- One stage
- 仿CornerNet,但是CornerNet是使用的 左上角和右下角两个点检测,而本论文是对top, left, bottom, right四个极端点,再加上一个center点来进行检测。
- 借鉴了DEXTR的极端点方法。
-
结果如何
- 在One-stage的方法上,COCO数据集表现是非常不错,state-of-the-art,可以看后面的结果
- on-par with the state-of-the-art region-based method
- 在COCO test-dev上bounding box的AP为43.2%。
- 此外,用这个方法还做了一些粗糙的分割,COCO Mask AP是18.9%,much better than the Mask AP of vanilla bounding boxes。甚至在后面的结果中,加上DEXTR可以使Mask AP提升到34.6%
-
Contributions
- 将几个方法结合起来用到了目标检测上吧。。。
细节
- 上图就是网络大致的结构图:
- backbone是Hourglass Network,最终生成的是的left,top, right, bottom的Extreme point heatmap,以及center point heatmap,的offset。
- offset是class-agnostic的,故通道数量为1,4是left,top,right,bottom,2表示x,y,没有对center的偏移预测。
- 虽然是仿CornerNet,但是还是有些改变,这里没有使用embedding来做点匹配,二十使用Center point来对四个极值点进行匹配。
- **上面的图就是Center Grouping算法,用来进行匹配的:**对于一个category,去除其中四个方位的heatmap,使用ExtractPeak算法去除其中大于阈值(实验中阈值为0.1)的pixel位置,对这四个集合中的点,进行简单的暴力方法遍历(为的复杂度),四个点组成一个框,然后满足基本的四个点的相对位置后,求出这四个点的中心点位置,那么如果这个中心点的center point heatmap上的值如果大于阈值(实验中阈值为0.1),那么就是一个合格的候选框,框的cls score就是五个点的heatmap值的均值。
- ExtremeNet使用的结构和CornerNet一样,loss呢也一样,只不过没有associative embedding部分而已,使用了center group取代了associative embedding。
Two problem
-
Ghost box suppression
- Q:下图也是比较好演示了这个问题是个什么样的情况,就是四个Extreme point组合起来的点框的范围太大了。但是刚好条件又比较符合。
- A:这里采用了soft-nms策略,具体的做法就是:如果在我们挑选出来的框,如果大框中的小框score之和是大框score的3倍,就把大框的score变为原来的。
-
Edge aggregation
- Q:另一个问题呢就是如果在选Extreme point点的时候,因为在top(or right, left, bottom)上图像的边缘平行于x or y轴,那么这样的话,网络预测出来的Extreme point就不会很好,甚至可能score低于阈值。
- A: 使用边缘聚合来处理这个问题:对于每一个extreme point来说,都是属于局部最大值,在某一个聚合方向(水平or垂直),在一个在某一个点开始的递减区间内,会进行score 的聚合。(就是把一定范围内的score带权重累加到初始点上,直到局部最小点处停止)
文章还有涉及到Instance segmentation,在results部分直接进行阐述
Results
| Params | Value |
|---|---|
| Base | CornerNet, DEXTR |
| Input & Output | 511x511&128x128 resolution |
| Data augment | flipping, random scaling between 0.6 and 1.3, random cropping, random color jittering |
| Optimizer | Adam |
| Learning rate | |
| Training info | 5 GPUs, 250k iters, batch size=24,在200k时下降learning rate 10x. |
| Test info | 在选择extreme point点时,只会选择40个top的left(or right, top,bottom) Extreme point,multi scale(0.5, 0.75, 1, 1.25, 1.5),Test time:3.1FPS(322ms per img, 168ms network forward, 130ms center grouping) |
-
以下这个实验就是一些条件在COCO 2017val的对比实验
- Edge aggregation带来了0.7% AP的提升。
- Ghost box suppression带来了0.3%AP的提升。
- 其中的gt表示使用ground truth的extreme point值来代替我们生成后得到的评估结果。
-
以下就是在COCO test-dev上的目标检测方法的效果对比
-
下面就是Instance segmentation的对比实验
-
BBox:直接使用由extreme point得到的bbox
-
octagon:
-
DEXTR: 这是另一篇论文所涉及到的方法, 同时也是这篇文章所借鉴的,具体就是利用本实验所生成的Extreme points来作为DEXTR网络的输入,利用DEXTR来产生更加好的分割结果。相当于组成一个二阶段的Instance Segmentation network。
-
BBox:直接使用由extreme point得到的bbox
-
效果图
Conclusion
》》》
Keypoint&Problems
-
目标检测AP和实例分割mask AP?
- 这里的目标检测应该就是指的一般的mAP,而分割的mask AP则是,mask IOU计算得到。
-
Extreme point ground truth标签的获取?
- 在COCO里是没有直接的extreme point标注的,但是有完整的分割标注,所以是利用分割标注来生成extreme point gt的,具体的做法就是:如果一个边平行于轴,且倾斜范围在以内,那么就取这个边界(这里的边界应该是指的物体的边缘)的中心作为extreme point。
- 在代码里,获取检测结果后,是直接运行另一部分的代码来进行实例分割的。