【问题标题】:Custom anchors in Yolov3Yolov3中的自定义锚点
【发布时间】:2020-11-14 09:38:19
【问题描述】:

我正在使用 Yolov3 在我的自定义数据集上训练对象检测器。传统上,在 Yolo 中,您有多种对象类,因此您可以获得很好的锚点组合。就我而言,我只有一个对象类,它的尺寸非常相似。因此,当我使用 K-means 对维度进行聚类时,我得到了 9 个大小非常相似的锚点……这似乎适得其反。

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

【问题讨论】:

    标签: python tensorflow keras object-detection yolo


    【解决方案1】:

    这就是作者所说的锚框here

    仅当您是神经检测网络方面的专家时 - 重新计算 来自 cfg 文件的数据集宽度和高度的锚点: darknet.exe 检测器 calc_anchors 数据/obj.data -num_of_clusters 9 -width 416 -height 416 然后在 cfg 文件中的 3 个 [yolo] 层中的每一个中设置相同的 9 个锚点。但是你应该改变索引 为每个 [yolo] 层锚定掩码 =,因此对于 YOLOv4 1st-[yolo]-layer 的 anchors 小于 30x30,第二层小于 60x60,剩余第 3 个,反之亦然 YOLOv3。你也应该 在每个之前更改过滤器=(类+ 5)* [yolo]-层。 如果许多计算出的锚点不适合 适当的层 - 然后尝试使用所有默认锚点。

    所以要训练对象尺寸非常相似的单类对象检测器,那么:

    1. 如上所述使用默认锚框
    2. cfg 中使用random=0

    要了解锚框的概念,请通过this 讨论。

    另外,由于Yolov4 现在可用,建议您使用它以获得更好的accuracy/mAP。如果您想坚持使用Yolov3,请使用Yolov3-sppYolov3_5l 以获得更好的结果。

    【讨论】:

    • 谢谢,我实际上正在使用 Yolov3 的自定义 Keras 实现。我尝试使用默认锚点,但效果不佳。
    • @MikeAzatov 我明白了!说到 Keras Yolov3,我用过这个repo。对我来说,默认锚点和生成的锚点都运行良好,但它适用于多个类,虽然没有尝试使用这个 repo 的单类检测器。对于单个班级,已使用此 repo 并且与默认锚点配合良好。
    • 感谢您的信息。我正在使用这个:github.com/qqwweee/keras-yolo3。我得到了不错的结果,但只是想获得最佳结果。目前正在尝试找出 Yolov4。你知道一个好的回购吗?在 Keras 中更受欢迎?
    • 啊,好吧!我遇到的Yolov4 的唯一 Keras 存储库是 this 之一。如果您可以不使用Keras,那么我之前提到的repo 在灵活性、功能和支持方面是最好的
    • 谢谢,我会试一试。到目前为止,我一直在努力让 Yolov4 的官方 tensorfow 实现工作。
    猜你喜欢
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多