gpt4 book ai didi

machine-learning - 以YOLO为例进行微调和迁移学习

转载 作者:行者123 更新时间:2023-11-30 08:37:41 28 4
gpt4 key购买 nike

我有一个关于微调和迁移学习的一般性问题,当我试图弄清楚如何最好地让 yolo 检测我的自定义对象(手)时,出现了这个问题。

对于可能包含大量虚假信息的长文本,我深表歉意。如果有人有耐心阅读它并帮助我消除困惑,我会很高兴。

经过大量谷歌搜索,我了解到许多人认为微调是迁移学习的子类,而其他人则认为他们采用不同的方法来训练模型。与此同时,人们区分在自定义数据集上仅重新训练模型的最后一个分类器层与重新训练模型的其他层(并且可能添加一个全新的分类器而不是重新训练?)。两种方法都使用预先训练的模型。

我最后的困惑就在这里:我遵循了这些说明:https://github.com/thtrieu/darkflow要通过 darkflow 训练tiny yolo,请使用以下命令:

# 从 yolo-tiny 初始化 yolo-new,然后在 100% GPU 上训练网络:
flow --model cfg/yolo-new.cfg --load bin/tiny-yolo.weights --train --gpu 1.0
但这里发生了什么?我想我只重新训练分类器,因为说明说要更改配置文件中最后一层的类数。但话又说回来,还需要更改倒数第二层(卷积层)中的滤波器数量。

最后,说明提供了替代培训的示例:# 完全初始化 yolo-new 并使用 ADAM 优化器对其进行训练
flow --model cfg/yolo-new.cfg --train --trainer adam
我根本不明白这与不同的迁移学习方式有何关系。

最佳答案

如果您使用 AlexeyAB 的 darknet 存储库(不是 darkflow),他建议通过在 cfg 文件中设置此参数来进行微调而不是迁移学习:stopbackward=1

然后输入./darknetpartial yourConfigFile.cfg yourWeightsFile.weights outPutName.LastLayer# LastLayer#如:

./darknet partial cfg/yolov3.cfg yolov3.weights yolov3.conv.81 81

它将创建yolov3.conv.81并卡住下层,然后您可以使用权重文件yolov3.conv.81而不是原始进行训练>darknet53.conv.74

引用文献:https://github.com/AlexeyAB/darknet#how-to-improve-object-detection , https://groups.google.com/forum/#!topic/darknet/mKkQrjuLPDU

关于machine-learning - 以YOLO为例进行微调和迁移学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55118883/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com