我想使用yolo架构进行目标检测。在用我的自定义数据训练网络之前,我按照以下步骤在Pascal VOC数据集上进行了训练: https://pjreddie.com/darknet/yolo/
说明非常清晰。但在最后一步之后
./darknet detector train cfg/voc.data cfg/yolo-voc.cfg darknet19_448.conv.23
darknet立即停止训练并宣布权重已写入backups/
目录中。
起初我以为预训练效果太好,停止标准立即达到了。所以我使用了./darknet detect
命令,在data/dog
的测试图像上使用这些权重。什么也没找到。
如果我不使用任何预训练权重,网络确实会进行训练。我编辑了cfg/yolo-voc.cfg以使用
# Testing#batch=1#subdivisions=1# Trainingbatch=32subdivisions=8
现在训练过程已经运行了好几个小时,并且让我的GPU保持温暖。
这是训练darknet的预期方式吗?我如何正确使用预训练权重,而不让训练中断?
有没有设置可以创建检查点,或者了解进度的方法?
回答:
这是一个旧问题,所以我希望你现在已经有了答案,但以防万一,这里是我的回答,希望能帮到你。
在使用darknet大约一个月后,我遇到了大多数人在论坛上提问/发布的大多数障碍。在你的情况下,我相当确定这是因为权重已经训练到了最大批次数,当预训练权重被读取时,darknet认为训练已经完成。
相关个人经验:当我使用其中一个预训练权重文件时,它从第40101次迭代开始运行,直到第40200次迭代才停止。
如果你有自定义数据,我建议从头开始训练,但如果你想再次尝试使用预训练权重,你可能会发现更改cfg文件中的最大批次数会有所帮助。