我可以使用更多训练和测试图像从最终重量继续训练吗?

Can I continue to training from final .weight with more train and test images?

我用 darknet yolov3 训练了我的自定义对象检测,直到平均损失降低到 0.06,但现在我想用 more 训练和测试图像来训练它(可能 还删除了 一些图像文件)。我可以执行这些步骤并继续使用最终的 .weights 文件进行训练,还是应该从头开始?

是的,您可以使用当前训练的模型(.weights 文件)作为新训练课程的预训练模型。例如,如果您使用 AlexeyAB repository,您可以通过这样的命令训练您的模型:

darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74

其中 darknet53.conv.74 是预训练模型。

在新的训练课程中,您可以添加或删除图像。但是,基本配置应该是正确的(如类的数量等)。

根据我提到的页面:

in the original repository original repository the weights-file is saved only once every 10 000 iterations

打开.cfg,发现max_batches代码可能在第22行,设置较大的值:

max_batches = 500200

max_batches与tranning迭代相同

How to continute training after 50000 iteration? #2633

如果你恢复,你需要指定更多的纪元。例如,如果你训练到 300/300,那么 resume 也会训练到 300(从 300 开始),除非你指定更多的 epochs..

python train.py --简历

您可以从之前保存的自定义模型权重中恢复训练。
使用“yolov3_custom_last.weights”而不是预训练的默认权重。
如果您发现恢复存在一些问题,请尝试更改批量大小。

这应该可以工作并使用新的图像集恢复您的模型训练:)

如果您刚刚修改了数据集,但对更改模型架构不感兴趣,可以直接使用AlexeyAB/darknet中的DarkNet从之前保存的模型中恢复。例如,

darknet.exe detector train cfg/obj.data cfg/yolov3.cfg yolov3_weights_last.weights -clear -map

clear 标志将重置保存在权重中的迭代,这适用于数据集更改的情况。那是因为学习率通常取决于迭代次数,您可能不想更改配置。