yolov5的自适应锚框讲解

现在网路上关于yolov5的自适应锚框策略都是一笔带过,今天专门来说一下这个

像之前的 YOLOv3、YOLOv4,对于不同的数据集,都会计算先验框 anchor。然后在网络训练时,网络会在 anchor 的基础上进行预测,然后输出预测框,再和标签框进行对比,最后就进行梯度地反向传播。

在 YOLOv3、YOLOv4 中,训练不同的数据集时,是使用单独的脚本进行初始锚框的计算,在 YOLOv5 中,则是将此功能嵌入到整个训练代码里中。所以在每次训练开始之前,它都会根据不同的数据集来自适应计算 anchor。

如果你觉得计算的锚框效果并不好,那你也可以在代码中将此功能关闭。

自适应的计算具体过程:

1. 获取数据集中所有目标的宽和高。

2. 将每张图片中按照等比例缩放的方式到 resize 指定大小,这里保证宽高中的最大值符合指定大小。

3. 将 bboxes 从相对坐标改成绝对坐标,这里乘以的是缩放后的宽高。

4. 筛选 bboxes,保留宽高都大于等于两个像素的 bboxes。

5. 使用 k-means 聚类三方得到n个 anchors,与v3、v4 操作一样。

6. 使用遗传算法随机对 anchors 的宽高进行变异。倘若变异后的效果好,就将变异后的结果赋值给 anchors;如果变异后效果变差就跳过,默认变异1000次。这里是使用 anchor_fitness 方法计算得到的适应度 fitness,然后再进行评估。

posted @   海_纳百川  阅读(1912)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
本站总访问量
 
点击右上角即可分享
微信分享提示