yolov5中的初始anchor值以及根据数据集中的目标进行聚类等计算得到自适应anchor
yolov5
yolov5 - Ultralytics YOLOv8的前身,是一个用于目标检测、图像分割和图像分类任务的先进模型。
项目地址:https://gitcode.com/gh_mirrors/yo/yolov5
免费下载资源
·
一、yolov5中的初始Anchor设定
在YOLOV5算法之中,针对不同的数据集,一般会预先设置固定的Anchor;
首先,在网络训练中,网络在初始锚框的基础上输出预测框,进而和Ground Truth进行比对,计算两者差距,再反向更新,迭代网络参数;
可以看出Anchor也是比较重要的一部分,比如Yolov5在Coco数据集上初始设定的锚框:
其中:
第1行是在最小的特征图上的锚框;
第2行是在中间的特征图上的锚框;
第3行是在最大的特征图上的锚框;
注:阅读其它人的博客发现,原来yolov5也可以不预设anchor,也可以直接写个3,此时yolov5就会自动按照训练集聚类anchor,如下:
# Parameters
nc: 80 # number of classes
depth_multiple: 1.0 # model depth multiple
width_multiple: 1.0 # layer channel multiple
anchors: 3 # AutoAnchor evolves 3 anchors per P output layer
二、自适应计算Anchor的流程
- 载入数据集,得到数据集中所有数据的wh;
- 将每张图片中wh的最大值等比例缩放到指定大小img_size,较小边也相应缩放;
- 将bboxes从相对坐标改成绝对坐标(乘以缩放后的wh);
- 筛选bboxes,保留wh都大于等于两个像素的bboxes;
- 使用k-means聚类得到n个anchors(掉k-means包 涉及一个白化操作);
- 使用遗传算法随机对anchors的wh进行变异,如果变异后效果变得更好(使用anchor_fitness方法计算得到的fitness(适应度)进行评估)就将变异后的结果赋值给anchors,如果变异后效果变差就跳过,默认变异1000次;
三、本文章来源
GitHub 加速计划 / yo / yolov5
575
37
下载
yolov5 - Ultralytics YOLOv8的前身,是一个用于目标检测、图像分割和图像分类任务的先进模型。
最近提交(Master分支:1 个月前 )
6981c274
Refactor code for speed and clarity
Co-authored-by: UltralyticsAssistant <web@ultralytics.com> 15 天前
f003c3df
This commit resolves an issue where the save-csv command did not write the CSV header. The code now correctly saves the header in the CSV file.
Signed-off-by: Ali Ghanbari <alighanbari446@gmail.com>
Co-authored-by: Glenn Jocher <glenn.jocher@ultralytics.com> 20 天前
更多推荐
已为社区贡献9条内容
所有评论(0)