1. Anchor定义
就是一个多尺度的滑动窗口,在特征图上的每个cell上生成不同尺寸、不同高宽比的Anchor,也叫先验框
为什么要引入多种比例的Anchor?
物体检测:一些候选区域进行分类和回归的问题。检测目标的大小、形状各不相同
2. Anchor工作过程
- 以YOLOv5为例,利用k-means根据数据集中目标主要分布的长宽尺度聚类出来的一组Anchor。
- anchor4个值: x1,y1,x2,y2表矩形左上和右下角点坐标。
- 聚类生成3种尺度,每组尺度有3种长宽比为:1:1,1:2,2:1 ,共9个Anchor。
- 跨Anchor预测:每个GroundTruth中心点所在cell和周围4个cell都可以负责预测GroundTruth和这5个cell里的所有Anchor进行匹配,得到K个Anchor (YOLOv5:基于宽高比,其他:IoU)
- K个Anchor负责预测这个GT,计算偏移量,生成K个预测框(正样本)
3. YOLOv1~YOLOv5的Anchor
4.FasterRCNN: RPN网络
- 在特征图进行anchor生成,anchor:多尺度、大小固定
- 生成anchors -> softmax分类器提取positvie anchors -> bbox reg回归positive anchors -> Proposal Layer生成proposals
- YOLOv2的Anchor基于RPN提出的
- 缺点:坐标x,y,w,h的预测是基于整张图片的,可能在左上角的cell产生的预测框跑到了右下角,不行
5. Anchor存在问题
- 超参数难调
- 正负样本不均衡
- 与GT匹配的过程耗时严重
- 对小目标不友好
6.Anchor-Free机制
- 基于关键点:
- 先检测目标左上角和右下角点
- 再通过角点配对以及角点位置的偏移量来输出预测框
- 基于中心点
- 直接检测物体的中心点和边界偏移量信息
- 分类子网、回归子网
7.基于关键点:CornerNet
- 沙漏结构:特征提取
- 角点池化:特征的池化方式,将信息整合到左上角点或者右下角点
- 预测输出:
- 预测角点出现的位置 Heatmaps
- 角点的配对 Embeddings
- 角点位置的偏移 Offsets