当前位置: 首页 > news >正文

浅谈yolov5中的anchor

默认锚框

在这里插入图片描述

YOLOv5的锚框设定是针对COCO数据集中大部分物体来拟定的,其中图像尺寸都是640×640的情况。

anchors参数共3行:

第一行是在最大的特征图上的锚框

第二行是在中间的特征图上的锚框

第三行是在最小的特征图上的锚框

在目标检测中,一般希望在大的特征图上去检测小目标,因此锚框设定较小。一般希望在小的特征图上去检测大目标,因此锚框设定较大。

YOLOv5的作者发现相同类别的目标实例具有相似的gt长宽比,因此从数据集中预先准备几个几率比较大的bounding box,再以它们为基准进行预测。

思考一个问题:我们自己的数据集和COCO数据集中的物体情况相似程度如何呢?默认anchors还能否适应我们的需求呢?

很显然是不能的!

因此YOLOv5中提出了一个自适应锚框的思想,根据目标的特征图上的分布情况自适应地调整锚框的大小和尺度。

思想:传统的目标检测方法通常使用固定大小和尺度的锚框来进行目标检测,但这会导致在处理不同尺度、不同大小的目标时效果不佳。而自适应锚框的思想是在目标检测网络中引入一些机制,使得模型能够根据目标在特征图上的分布自动适应地调整锚框的大小和尺度。

  • K-means聚类算法

在无标签数据集上执行的最直接任务之一,是在数据集中找到彼此相似的数据组。

K-means存储用于定义聚类的k个质心。如果哪一个点离着哪个质心最接近,则该点被视为位于哪个聚类中。

K-means通过交替进行下面两步来找到最佳质心:

1、根据当前质心将数据点划分到某聚类中

2、根据当前数据点计算聚类的质心

在这里插入图片描述

先初始化k个质心,将各个点划分到现有的簇,然后将所有簇取平均值确定新的质心,迭代之前的操作。

在这里插入图片描述

YOLOv5锚框生成过程:

在YOLOv5模型训练时,默认的做法是它会自动去计算下默认的anchors与你数据集中所有目标的best possible recall,如果小于0.98就会根据你自己数据集的目标去重新聚类生成anchors,反之使用默认的anchors。

具体来说,YOLOv5会首先根据训练集的目标框尺寸信息,选择一个K值,表示聚类的簇数。然后使用K-means或其他聚类算法对目标框的尺寸进行聚类,将相似尺寸的目标框聚到同一个簇中。每个簇的中心点就成为了一个anchor,使用这些重新聚类得到的anchors作为候选框的基准。

通过重新聚类anchor,可以更好地适应当前训练集的目标分布,提高模型的检测性能。但是训练过程中重新聚类anchor是一个耗时的操作。

kmeans_anchor函数:
在这里插入图片描述

http://www.lryc.cn/news/182072.html

相关文章:

  • RabbitMQ-工作队列
  • 网站安全防护措施
  • C++的继承基础和虚继承原理
  • 第三章:最新版零基础学习 PYTHON 教程(第十三节 - Python 运算符—Python 中的运算符函数 - 套装2)
  • Linux网络编程:详解https协议
  • LLVM IR 文档 专门解释 LLVM IR
  • 免费服务器搭建网盘教程,给电脑挂载500G磁盘
  • 【Java】微服务——Nacos配置管理(统一配置管理热更新配置共享Nacos集群搭建)
  • QT基础入门——信号和槽机制(二)
  • 黑豹程序员-架构师学习路线图-百科:JavaScript-网页三剑客
  • 三、互联网技术——IP子网划分
  • TinyWebServer学习笔记-log
  • 【kubernetes】CRI OCI
  • 竞赛 机器视觉opencv答题卡识别系统
  • Youtube视频下载工具分享-油管视频,音乐,字幕下载方法汇总
  • 【算法练习Day11】滑动窗口最大值前 K 个高频元素
  • 华为云HECS云服务器docker环境下安装nginx
  • GET 和 POST的区别
  • 机器学习(监督学习)笔记
  • 科普rabbitmq,rocketmq,kafka三者的架构比较
  • 加密货币交易技巧——地利(二)
  • 服务网关Gateway_微服务中的应用
  • 2G大小的GPU对深度学习的加速效果如何?
  • intel 一些偏门汇编指令总结
  • python 多个proto文件import引用时出现ModuleNotFoundError错误
  • C语言图书管理系统
  • 归并排序及其非递归实现
  • 【kubernetes】kubernetes中的Controller
  • RabbitMQ-死信队列
  • ElasticSearch - 基于 DSL 、JavaRestClient 实现数据聚合