培训Darknet立即完成

lhk*_*lhk 6 machine-learning computer-vision neural-network darknet

我想将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
# Training
batch=32
subdivisions=8
Run Code Online (Sandbox Code Playgroud)

现在,培训过程已经进行了许多小时,并且使我的GPU保持温暖。

这是训练暗网的预定方法吗?如何在不中断训练的情况下正确使用预训练的权重?

是否有任何设置可以创建检查点或了解进度?

Pin*_*Jin 8

-clear 1在训练命令的末尾添加将清除此模型在以前的训练中看到的图像的统计信息。然后,您可以根据新数据(集)微调模型。

您可以在以下函数签名void train_detector(char *datacfg, char *cfgfile, char *weightfile, int *gpus, int ngpus, int clear) 中找到有关用法的更多信息 :https://github.com/pjreddie/darknet/blob/b13f67bfdd87434e141af532cdb5dc1b8369aa3b/examples/detector.c

我怀疑增加最大迭代次数是一个好主意,因为学习率通常与当前的迭代次数相关。当我们要恢复由于达到最大迭代次数而结束的先前训练任务时,通常会增加最大迭代次数,但是我们相信,如果迭代次数越多,结果就会越好。

仅供参考,当您的数据集较小时,从头开始或从分类网络进行训练可能不是一个好主意。您可能仍然想重用来自在大型数据集(如Coco或ImageNet)上训练的检测网络的权重。


小智 6

这是一个老问题,所以我希望您现在能得到答案,但是这里是我的答案,以防万一。

在与Darknet合作约一个月之后,我遇到了人们在论坛上提出/发布的大多数障碍。在您的情况下,我可以肯定地说是因为已经对砝码进行了最大批次的培训,并且当在Darknet中读取预训练的砝码时,就假定已经进行了训练。

相关的个人经验:当我使用一个预训练的权重文件时,它从迭代40101开始,一直运行到40200,然后才中断。

如果您有自定义数据,我将坚持从头开始进行培训,但是如果您想再次尝试预先训练的权重,则可能会发现更改cfg文件中的最大批次会有所帮助。