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

1. 什么是Anchor?

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

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

2. 为什么引入Anocher?

结论:使得模型更容易学习。

锚框的作用:在进行目标检测任务的基本思路:通过设定众多的候选框,然后针对候选框进行分类和微调,找到目标中最接近的真实框,实现目标检测。这里的候选框也就是锚框。

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

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

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

YOLOV1中称为先验框(应该是固定值),之后不全了解,读者自鉴。

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

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

如下所示:

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

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个先验框。

本文转自 [https://blog.csdn.net/weixin_34693059/article/details/112179549),如有侵权,请联系删除。

YOLO-先验框/anchor(锚点)相关推荐

  1. 锚框(anchor box)/先验框(prior bounding box)概念介绍及其生成

    一.锚框(anchor box)/先验框(prior bounding box) 在众多经典的目标检测模型中,均有先验框的说法,有的paper(如Faster RCNN)中称之为anchor(锚点), ...

  2. 3.3 锚框 or 先验框

    3.3.1 关于先验框 在众多经典的目标检测模型中,均有先验框的说法,有的paper(如Faster RCNN)中称之为anchor(锚 点),有的paper(如SSD)称之为prior boundi ...

  3. 动手学CV-目标检测入门教程3:锚框(anchor)

    3.3 锚框 or 先验框 本文来自开源组织 DataWhale

  4. 饭后时间(四)---SSD先验框的尺寸及计算源码(含代码ssd_anchor.py)

    b站:连翘春风冻傻抱蚁人https://www.bilibili.com/video/av45660456 net-> ssd_vgg_300.py 本文研究核心 准备先验框的尺寸:因为SSD在 ...

  5. Fasterrcnn代码个人精细解读(先验框生成部分)

    import numpy as np def generate_anchor_base(base_size=16, ratios=[0.5, 1, 2], scales=[8, 16, 32]):·生 ...

  6. anchor iview 悬浮_iView3.x Anchor(锚点)组件 导航锚点

    iView3.x Anchor(锚点)组件 导航锚点 iview 3.x框架中新添了一个Anchor(锚点组件),用这个组件去做页面的分类导航正好合适,但是苦于官方文档太过抽象研究了一整天,才勉强可以 ...

  7. 《动手学深度学习》(七) -- 边界框和锚框

    1 边界框 在目标检测中,我们通常使用边界框(bounding box)来描述对象的空间位置.边界框是矩形的,由矩形左上角的以及右下角的xxx和yyy坐标决定.另一种常用的边界框表示方法是边界框中心的 ...

  8. 6--目标检测和边界框和锚框

    很多时候图像里有多个目标,不仅想知道它们的类别,还想得到它们在图像中的具体位置. 在计算机视觉里,这类任务称为目标检测(object detection). 6.1 边界框  边界框(bounding ...

  9. anchor锚点 antvue_浅谈vue 锚点指令v-anchor的使用

    如下所示: export default { inserted: function(el, binding) { el.onclick = function() { let total; if (bi ...

最新文章

  1. 去掉[]中的英文(正则表达式)C#
  2. activemq高级客户端选项
  3. 虚拟机增强工具的安装
  4. 网页去重||SimHash(高效的文本相似度去重算法)——适合大批量文档的相似度计算
  5. 《Effective C#》Part I:第一部分总结
  6. Java学习--多态
  7. hihocoder-Week173--A Game
  8. 金叉成功率_一个非常强烈的买卖信号:三金叉见顶,三死叉见底,短短10字,但是成功率却远超“金叉买,死叉卖”...
  9. [转]这才是真正的3D显示!Leap Motion推出次毫米级3D手动控制技术,让人手和影像融为一体...
  10. 2018级C语言大作业 - 黄金矿工
  11. phpmyadmin的安装和使用
  12. 一步步学习SPD2010--第十四章节--在Web页面使用控件(2)--使用标准ASP.NET服务器控件...
  13. [转]WCF RIA Services
  14. 电子书下载:Pro ASP.NET MVC2 Framework 2nd
  15. 软件设计原则(三) 依赖倒置原则
  16. Multisim 13.0.1 安装教程
  17. 超级简单图解, 轻松设置三级域名泛解析,免hosts设置访问web项目
  18. 呼叫中心_VOIP技术介绍
  19. HIVE函数集合(全)
  20. Phoenix FD Maya 软件插件

热门文章

  1. simscape动力学仿真注意事项
  2. 王者荣耀选手退役后转行Python,自学的那种!网友:中国版“阿甘”
  3. 在线客服系统的功能有哪些是非常重要的?
  4. 共享服务中心建设原则-《企业IT架构转型之道-阿里巴巴中台战略思想与架构实战》
  5. Linux安装yum(红帽子)rpm
  6. 关于如何调用苹果自带的地图APP
  7. Latex Table 合并行/列详解
  8. 万兴pdf编辑解压后打不开_PDF文档无法编辑的原因和解决方案
  9. [实践篇]13.12 教你读懂QNX座舱方案里的高频术语
  10. pom文件配置阿里云仓库 转