anchor设置 yolo_目标检测算法之YOLO系列算法的Anchor聚类代码实战

本文介绍了YOLO系列算法中Anchor的获取方法,重点讲解了使用K-means聚类算法对训练集边界框进行聚类分析的过程,并提供了代码实现。通过实例展示了对VOC2007和自定义数据集的测试,验证了聚类效果。
摘要由CSDN通过智能技术生成

前言

之前已经讲了一些目标检测原理性的东西了,今天讲一个偏工程一点的东西,就是如何在使用YOLO算法的时候针对自己的数据集获得合适的Anchor?

原理

Anchor如何获得?

如何获得Anchor的算法在前面讲解YOLOv2原理的时候已经说清楚了,推文地址如下:https://mp.weixin.qq.com/s/4PPhCpdna4AWgbEWhunNTQ 。我们再复习一下Anchor的获得策略。

在Faster-RCNN中,Anchor都是手动设定的,YOLOv2使用k-means聚类算法对训练集中的边界框做了聚类分析,尝试找到合适尺寸的Anchor。另外作者发现如果采用标准的k-means聚类,在box的尺寸比较大的时候其误差也更大,而我们希望的是误差和box的尺寸没有太大关系。所以通过IOU定义了如下的距离函数,使得误差和box的大小无关: 

Fig2展示了聚类的簇的个数和IOU之间的关系,两条曲线分别代表了VOC和COCO数据集的测试结果。最后结合不同的K值对召回率的影响,论文选择了K=5,Figure2中右边的示意图是选出来的5个box的大小,这里紫色和黑色也是分别表示两个不同的数据集,可以看出其基本形状是类似的。而且发现聚类的结果和手动设置的anchor box大小差别显著。聚类的结果中多是高瘦的box,而矮胖的box数量较少,这也比较符合数据集中目标的视觉效果。e3a00df5f79866f5470f5630e146c38f.png

在结果测试时,YOLOv2采用的5种Anchor可以达到的Avg IOU是61,而Faster-RCNN采用9种Anchor达到的平均IOU是60.9,也即是说本文仅仅选取5种Anchor就可以达到Faster-RCNN中9种Anchor的效果。如Table1所示:b5bfa1f134c063261f737dfda4e5ee8d.png

K-means聚类

聚类指的是把集合,分组成多个类,每个类中的对象都是彼此相似的。K-means是聚类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值