YOLOv4转移学习/微调

时间:2020-09-13 02:34:50

标签: deep-learning object-detection yolo transfer-learning darknet

我已经使用原始数据集和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层上进行训练?

我的问题是:

  1. 实际上哪个代码冻结了图层,所以我可以进行迁移学习 在我创建的基本YOLOv4模型上?
  2. 您建议冻结哪些层,第137个 在网络的第一个YOLO层之前?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

要回答您的问题:

  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

  2. 冻结层可以节省训练期间的时间。好的解决方案是,首先冻结第一层的模型,然后再解冻这些层以微调您的学习。我不确定第一次运行时可以冻结多少层,也许您可​​以通过试验和错误对其进行测试。