目标检测-yolo2 锚框(先验框)predefined anchors(anchors box)

介绍

YOLOv1

输入图片最终被划分为 7x7 网格,每个单元格预测2个边界框。YOLOv1最后采用的是全连接层直接对边界框进行预测,其中边界框的宽与高是相对整张图片大小的,而由于各个图片中存在不同尺度和长宽比(scales and ratios)的物体,YOLOv1在训练过程中学习适应不同物体的形状是比较困难的,这也导致YOLOv1在精确定位方面表现较差。

YOLOv2

借鉴了Faster R-CNN中RPN网络的先验框(anchor boxes,prior boxes,SSD也采用了先验框)策略

当经过 darknet19,输出是 13x13 的特征图,每个点,都有以该点为中心的5个anchor box,相当于备选框,如下图:

预测

预测的是 目标 与 anchor boxes 的偏差

输入图片大小

在检测模型中,YOLOv2不是采用 448x448 图片作为输入,而是采用 416x416 大小。因为YOLOv2模型下采样的总步长为 32 ,对于 416x416 大小的图片,最终得到的特征图大小为 13x13维度是奇数,这样特征图恰好只有 一个中心位置

对于一些大物体,它们中心点往往落入图片中心位置,此时使用特征图的一个中心点去预测这些物体的边界框相对容易些。

所以在YOLOv2设计中要保证最终的特征图有奇数个位置。

YOLOv2使用了anchor boxes之后,每个位置的各个anchor box都单独预测一套分类概率值

anchor boxes 宽高

anchor boxes的宽高往往是手动设置的,在训练过程中网络也会学习调整boxes的宽高维度,最终得到准确的边框(bounding boxes)。

但是,如果一开始就选取 更合适的 anchor boxes宽高,那么模型就更容易学,更好的预测位置。

K-means 聚类方法

anchor boxes 的 宽高 也是通过 K-means 聚类方法得出,是与数据集相关

  • COCO:
    (0.57273, 0.677385), (1.87446, 2.06253), (3.33843, 5.47434), (7.88282, 3.52778), (9.77052, 9.16828)
  • VOC:
    (1.3221, 1.73145), (3.19275, 4.00944), (5.05587, 8.09892), (9.47112, 4.84053), (11.2364, 10.0071)

数据来源:
https://github.com/pjreddie/darknet/tree/master/cfg

anchor boxes 数量

作者使用了K-means聚类方法,对 训练集 中的边界框做了聚类分析,可以自动找到更好的boxes的 数量 和 宽高。

从上图可知,平衡复杂度和IOU之后,最终得到k值为5,作者选择了5种大小的box维度来进行定位预测。


原文出处:https://malaoshi.top/show_1EF6Qtvrumck.html