yolo训练自己数据集anchors的选择

项目场景:

在训练yolo网络检测目标时,需要根据待检测目标的位置大小分布情况对anchor进行调整,使其检测效果尽可能提高。我们这时候不能直接使用COCO的anchors,自己可以重新聚类9组anchors。


问题描述:

Yolo为了训练COCO数据集准备了三组anchors,其对COCO数据集的检测有了提升。
./models/yolo.yaml

anchors:
  #- [5,6, 7,9, 12,10]      # P2/4
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32
如果训练自己的数据集,自己的数据量没有coco数据集那么多,且数据信息没有那么丰富,并且anchor大小尺寸的分布不如coco数据集那样规律,比如:小目标检测,多目标检测。建议根据自己的数据集去聚类一份新的适合自己数据集的anchors。 ./utils/autoanchor.py/kmean_anchors
def kmean_anchors(path='./data/coco.yaml', n=9, img_size=640, thr=4.0, gen=1000, verbose=True):
按照coco.yaml新建配置一个“目标.yaml”文件,里面设置好训练集路径;n=9,表示聚类9个点,这个不要改,img_size训练集图像大小,thr训练集目标长宽比例,可根据自己的待检测目标进行调整。

解决方案:

调整完成之后运行autoanchor.py发现并无输出,其原因是直接写入了模块,并没有显示出来。

在这里插入图片描述

我们可以打断点将其debug出来,打开./models/yolo.py找到其m.anchors,对其进行断点标注,然后debug yolo.py,步入cutoanchor.py文件,在调试器找到autoanchor.py,在变量中找到m的参数,其
anchor_grid为作者为COCO数据集设置的anchors。
在这里插入图片描述
然后data中的变量为聚类自己数据集的anchors。
在这里插入图片描述将其保存替换yolo.yaml文件中的anchors。

anchors:
#  - [5,6, 7,9, 12,10]      # P2/4
#  - [10,13, 16,30, 33,23]  # P3/8
#  - [30,61, 62,45, 59,119]  # P4/16
  #- [116,90, 156,198, 373,326]  # P5/32
  - [ 1.25000,  1.62500,2.00000,  3.75000,4.12500,  2.87500]
  - [ 1.87500,  3.81250,3.87500,  2.81250,3.68750,  7.43750]
  - [ 3.62500,  2.81250,4.87500,  6.18750,11.65625, 10.18750]
然后继续训练即可。
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值