摘要
- 提出Corner Net。
- 使用paired key points代替anchor box。
- 引入corner pooling。
- 效果COCO上one-stage中目前最好。
1 引言
Anchor box两个缺点:
- 框框多,训练过程中positive和negative不平衡,导致训练无效率,得到次优解。(在文章Focal loss(Retina-Net)中提出,被本文引用)
- 参数多,不好调。
so改Anchor
Corner-Net输出是两张heatmap——top-lift corner和bottom-right corner。
corner pooling层用同一张feature map分别进行以行、列向量为单位的max pooling,~~用得到的两张图相加(猜测)~~得到一个corner。
corner pooling层为什么有可能更好?
基于两点假设:
- 确定中心需要考虑4条边,而确定角落只需要两条。
- 时间相比anchor更优。( O ( w h ) , O ( w 2 h 2 ) O(wh), O(w2h2) O(wh),O(w2h2))
2 相关工作
两级目标检测器。RCNN; SPP, Fast-RNN; Faster-RCNN; R-FCN;
单级目标检测器。YOLO, SSD; YOLO9000; DSSD; RON; |Retina-Net; Re fine-Det
DeNet。一个不使用anchor的两级目标检测器,定位边界框的四个角。
Associative Embedding。Corner-Net灵感的来源,它把一组关节一组关节做成一组embedding vector,计算embedding的距离来计算姿态的相似度(猜测)。
- Corner-Net是目前第一个在目标检测任务上同时进行检测和把角落分组~~(角落分组,可能就是把左上角和右下角配对(猜测))~~两项任务的。
- 提出Corner pooling。
- 修改沙漏结构,添加我们修改过的Focal Loss,使网络更容易训练。
3 Corner-Net
3.1 概览
- 使用key-points。
- CNN预测两张corner的heatmap
- CNN预测Embedding Vector(embedding有可能是用来配对的)
- CNN预测偏移量,微调corner位置,使边界框尽量的小。(How?)
- 最后使用一个后处理算法(后处理算法?)获得最终的边界框。
- 使用hourglass network(漏斗网络,人体姿态估计的一个网络结构)作为Corner-Net的骨架。
- hourglass由两个模块组成,左上角和右下角。在输出三个结果(heatmap,embedding,offset)之前,有分别有各自的corner pooing层。
- 不使用不同分辨率的feature map来进行目标检测。只是用hourglass的两个模块的输出。(Why?)
3.2 检测角落
- heatmap ——H×W×C(C:categories)。每个channel以***二进制掩码***的形式表示。
- ground-truth 中角落只是一个点是positive其他的都是negative,为了平衡,扩大这个点为一个圆形区域作为positive。只要靠近ground truth,仍然可以与物体框大部分重合。圆的半径有物体的大小决定以确保圈内的点所产生的与真实的标注至少有0.7的IOU。
- 惩罚的减小的数量是一个非标准的二维正态分布,中心在ground-truth,标准差是1/3。(没懂)
3.3 组合角
- 使用一维embedding。
- 使用pull loss和push loss。pull loss用来训练网络来配对,push loss事角分离。
3.4 Corner Pooling
_need-to-know
- paired key-points灵感源自于associative embedding (一篇人体姿态估计的文章)。可以去相同问题的不同领域寻找灵感。
- 待更