【发布时间】:2021-01-09 08:27:51
【问题描述】:
我使用 darknet 和 yolov4 为我的用例训练了一个自定义对象检测模型。我在 obj.name 文件中提到了 3 个类,如下所述:
# data/obj.names
no_helmet
helmet
vest
训练完成,检测也取得了不错的效果。
现在,我想在模型中添加 2 个新类,所以我用 2 个新类名更新了类文件:
# data/obj.names
no_helmet
helmet
vest
fire
smoke
我对配置文件进行了更改,并将所有[yolo] 层和之前的[convolutional] 层的classes=3 更新为classes=5 并将filter=24 更新为filter=30。
对于数据集,我只提供了 2 个新类(fire 和 smoke)的图像和注释。
然后我开始了暗网训练,对于权重参数,我提供了旧的 yolov4 训练权重。完成后,我进行了测试,但没有检测到图像中的任何内容。甚至旧课程也不行。
我哪里做错了?
我的感觉是,由于我没有为旧类提供数据集,因此模型忘记了这些。但是,那么它至少应该检测到新的类,对吧?还是我错了?
新编辑:
我再次使用组合数据集(旧的 3 个类和 2 个新类)对预训练的自定义权重(针对前 3 个类进行了训练)进行了训练,当我运行它进行测试时,仍然没有输出。
有人可以向我解释这里发生了什么吗?我在想它背后有一些我不知道的数学。
我每次都必须从头开始训练吗?
【问题讨论】:
标签: python machine-learning object-detection yolo darknet