Python Yolov3中的自定义锚

Python Yolov3中的自定义锚,python,tensorflow,keras,object-detection,yolo,Python,Tensorflow,Keras,Object Detection,Yolo,我正在我的自定义数据集上使用Yolov3训练一个对象检测器。传统上,在Yolo中,您有多种对象类,因此可以很好地混合使用锚。在我的例子中,我只有一个对象类,它的维度非常相似。所以当我用K-均值聚类维度时,我得到了9个大小非常相似的锚。。。这似乎适得其反 事实上,我尝试了一些随机的锚定尺寸,它们并不都是相似的,并且得到了比9个相似锚定更好的结果。所以我想知道,对于1类对象检测器,锚的最佳策略是什么?这是作者关于锚框的看法: 只有当你是神经检测网络的专家-重新计算 从cfg文件中为数据集定位宽度和高

我正在我的自定义数据集上使用Yolov3训练一个对象检测器。传统上,在Yolo中,您有多种对象类,因此可以很好地混合使用锚。在我的例子中,我只有一个对象类,它的维度非常相似。所以当我用K-均值聚类维度时,我得到了9个大小非常相似的锚。。。这似乎适得其反


事实上,我尝试了一些随机的锚定尺寸,它们并不都是相似的,并且得到了比9个相似锚定更好的结果。所以我想知道,对于1类对象检测器,锚的最佳策略是什么?

这是作者关于锚框的看法:

只有当你是神经检测网络的专家-重新计算 从cfg文件中为数据集定位宽度和高度: darknet.exe检测器计算锚定数据/obj.data-簇数9 -宽度416-高度416然后在cfg文件中的3个[yolo]层中的每个层中设置相同的9个锚。但是您应该更改 锚定掩码=对于每个[yolo]-层,因此对于
YOLOv4
第一层-[YLO]-层的锚固件小于30x30,第二层小于 60x60,剩余的第三个,反之亦然。你也应该 在每次更改之前更改过滤器=(类+5)* [约罗]-层如果许多计算的锚不适合 适当的层-然后尝试使用所有默认锚定。

因此,要训练单类目标探测器,其中目标尺寸非常相似,那么:

  • 如上所述,使用默认锚定框
  • cfg
  • 要理解锚箱概念,请进行讨论


    另外,由于现在可以使用,建议您使用它以获得更好的
    准确性
    /
    地图
    。如果您想坚持使用
    Yolov3
    ,请使用或以获得更好的结果。

    谢谢,我实际上正在使用自定义的Yolov3 Keras实现。我试过使用默认的锚,但效果不太好。@MikeAzatov我明白了!当谈到Keras Yolov3时,我用过这个。对我来说,默认锚和生成的锚都工作得很好,但它适用于多个类,不过我还没有尝试使用这个repo的单类检测器。对于单个类,我们已经使用了这个,并且与默认锚很好地配合。谢谢你提供的信息。我正在使用这个:。我取得了不错的成绩,但只是想达到最佳状态。目前正试图弄清楚Yolov4。你知道好的回购协议吗?最好是在Keras?啊,好吧!我为Yolov4遇到的唯一Keras回购是一家。如果您可以不使用Keras,那么我前面提到的回购在灵活性、功能和支持方面是最好的。谢谢,我来试一试。到目前为止,我一直在努力使Yolov4的官方tensorlfow实现正常工作。