我正在我的自定义数据集上使用Yolov3训练一个对象检测器。传统上,在Yolo中,您有各种各样的对象类,因此可以很好地混合锚。在我的例子中,我只有一个对象类,它有非常相似的维度。所以当我用K-均值对尺寸进行聚类时,我得到了9个大小相当相似的锚.这似乎适得其反。
事实上,我尝试了一些随机锚大小,但并不都是相似的,并得到了更好的结果比9个类似的锚。所以我想知道,对于1类目标检测器来说,锚的最佳策略是什么?
发布于 2020-07-25 14:37:55
这就是作者对锚盒这里的看法。
只有当你是神经检测网络的专家-重新计算你的数据集的宽度和高度的锚从cfg文件: darknet.exe检测器calc_anchors数据/obj.data -num_of_clusters 9 -width 416 -height 416然后在你的cfg文件中的3个yolo层中设置相同的9个锚。但是您应该为每个yolo层更改锚masks=的索引,因此对于
YOLOv4,第一层的锚小于30x30,第二个小于60x60,第三层为YOLOv3,反之亦然。另外,您应该在每个yolo层之前更改filters=(类+ 5)*。如果许多计算出来的锚不适合于适当的层,那么只需尝试使用所有默认的锚.
因此,为了训练单级对象检测器,在对象维度上非常相似的地方,那么:
random=0中使用cfg要理解锚盒概念,请通过这讨论。
另外,既然Yolov4现在可用了,那么建议您使用它来获得更好的accuracy/mAP。如果您想坚持使用Yolov3,可以使用Yolov3-spp或Yolov3来改进结果。
https://stackoverflow.com/questions/63074959
复制相似问题