anchor设置 yolo_目标检测中Anchor(先验框)的作用

800749c190e1e88905c2416a443f9ead.png

目标检测网络(Faster RCNN、SSD、YOLO v2&v3等)中,均有先验框的说法,Faster RCNN中称之为anchor(锚点),SSD称之为prior bounding box(先验框),实际上是一个概念。Anchor设置的合理与否,极大的影响着最终模型检测性能的好坏。

1. 什么是Anchor?

一句话概括——提前在图像上预设好的不同大小,不同长宽比的框,先验框示意如下:

ca25a3881a29e50d9656d7d126257d2a.png
同一位置设置多个不同尺度先验框

2. 为什么引入Anocher?

使得模型更容易学习。

目标检测中模型不仅需要学习目标的类别,更需要学习到目标的位置和大小,这不是一个简单的任务。举个简单的例子。

YOLOv1是较早的one-stage目标检测方法(YOLOv1没有设计Anocher),它最后采用全连接层直接对边界框进行预测,由于各个图片中存在不同尺度和长宽比(scales and ratios)的物体,使得YOLOv1在训练过程中学习适应不同物体的形状比较困难,这也导致YOLOv1在精确定位方面不如Faster R-CNN,如下:

5020e64bf8a46df2b742370497eab6a6.png

使用anchor boxes之后,YOLOv2的召回率大大提升,所以在Yolo之后的版本中,均保留了先验框。

3. Anocher为什么要使用不同尺寸和长宽比?

为了得到更大的交并比(intersection over union, IOU)。

通过设置不同的尺度的先验框,就有更高的概率出现对于目标物体有良好匹配度的先验框(体现为高IoU)。

如下所示:

c1db7d6f786966c9f1ff477aa201c85e.png
左图我们更希望模型选择红色的先验框,右图希望模型选择蓝色的先验框,这样使得模型更容易学习。

4. Anochor Box的尺寸该怎么选择?

anchor一般都是通过人工设计的。例如,在SSD、Faster-RCNN中,设计了9个不同大小和宽高比的anchor。然而,通过人工设计的anchor存在一个弊端,就是并不能保证它们一定能很好的适合数据集,如果anchor的尺寸和目标的尺寸差异较大,则会影响模型的检测效果。目前anchor box的选择主要有三种方式:

  • 人为经验选取
  • k-means聚类
  • 作为超参数进行学习

在论文YOLOv2中提到了这个问题,作者建议使用K-means聚类来代替人工设计,通过对训练集的bounding box进行聚类,自动生成一组更加适合数据集的anchor,可以使网络的检测效果更好。

Instead of choosing priors by hand, we run
k-means clustering on the training set bounding boxes to automatically find good priors. If we use standard k-means withEuclidean distance larger boxes generate more error than smaller boxes. However, what we really want are priors that lead to good IOU scores, which is independent of the size of the box.

虽然设置更多的先验框,IOU能获得一定的提升,但模型的复杂度随之增加,如下图,为了平衡模型的准确度和复杂度,YOLOv2的作者最终选择了K=5个先验框。

f4301f6f3f5a2f7a8d543bfb30e2a955.png

参考:

YOLO9000: Better, Faster, Stronger​arxiv.org
动手学CV-Pytorch​datawhalechina.github.io

版权声明:本文为CSDN博主「岩不言」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_34693059/article/details/112179549

岩不言

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

单目3D目标检测调研

单目3D目标检测调研 一、 简介 现有的单目3D目标检测方案主要方案主要分为两类,分别为基于图片的方法和基于伪雷达点云的方法。   基于图片的方法一般通过2D-3D之间的几何约束来学习,包括目标形状信息&#xff0

YOLO算法之YOLOv3精讲

目录 YOLOv3的改进 1. YOLOv3的第一个改进是网络的结构的改变 2. YOLOv3的第二个改进是多尺度训练 YOLOv3代码实战 1. 数据集标注 2. 数据预处理 YOLO系列总结 大家好,我是羽峰&#