YOLOv4 迁移学习/微调

His*_*sho 1 object-detection deep-learning darknet yolo transfer-learning

我使用原始数据集和自定义 yolov4 配置文件训练了 YOLOv4 模型,我将其称为我的“基本”YOLOv4 模型。

现在,我想使用我创建的这个基本模型,使用我手动增强的图像再次训练模型。我正在尝试重新训练我的模型以尝试增加 mAP 和 AP。因此,我想使用基本模型中的权重来训练带有手动增强图像的新 yolov4 模型。

我在YOLOv4 wiki 页面上看到,使用stopbackward = 1冻结层,因此这些层中的权重不会更新,但这会降低准确性。我还读到了另一条信息,其中./darknet partial cfg/yolov4.cfg yolov4.weights yolov4.conv.137 137 删除了前 137 层。这是否意味着前 137 层被冻结在网络中,或者这是否意味着您仅在 137 层上进行训练?

我的问题是:

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

先感谢您!

Y.Y*_*not 5

回答您的问题:

  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. 冻结图层可以节省训练时间。一个好的解决方案是首先在冻结第一层的情况下训练模型,然后解冻各层以微调您的学习。我不确定第一次运行时要冻结的层数是多少,也许您可​​以通过反复试验来测试它。