我已经使用原始数据集和custom yolov4 configuration file训练了YOLOv4模型,我将其称为“基础” YOLOv4模型。
现在,我想使用我创建的基本模型来使用我手动增强的图像再次训练模型。我正在尝试重新训练我的模型,以尝试增加mAP和AP。因此,我想使用基本模型中的权重来使用手动增强的图像训练新的yolov4模型。
我在YOLOv4 wiki page上看到使用stopbackward = 1
冻结了图层,因此这些图层中的权重不会被更新,但是这降低了准确性。另外,我在./darknet partial cfg/yolov4.cfg yolov4.weights yolov4.conv.137 137
takes out the first 137 layers处阅读了另一条信息。这是否意味着前137层冻结在网络中,或者这意味着您仅在137层上进行训练?
我的问题是:
提前谢谢!
答案 0 :(得分:1)
要回答您的问题:
如果要使用转移学习,则无需冻结任何层。您应该只从第一次跑步就开始使用已存储的重量开始训练。因此,您可以运行darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137
来代替darknet.exe detector train data/obj.data yolo-obj.cfg backup/your_weights_file
。权重存储在备份文件夹build\darknet\x64\backup\
中。因此,例如,命令可能如下所示:darknet.exe detector train data/obj.data yolo-obj.cfg backup/yolov4_2000.weights
冻结层可以节省训练期间的时间。好的解决方案是,首先冻结第一层的模型,然后再解冻这些层以微调您的学习。我不确定第一次运行时可以冻结多少层,也许您可以通过试验和错误对其进行测试。