关于Fine-tuning和预训练和from scratch训练
yolo命令行model的参数的说明既可以选择 yolov8n.pt, 也可以选择 yolov8n.yaml, 区别是:
- model=yolov8n.pt, 即为Fine-tuning训练, yolov8n.pt 模型文件已经包含了 yolo v8网络结构、超参数、训练参数、 权重参数信息, 它是官方的pre-trained 模型文件, 官方基于大规模数据集(coco 数据集)的80个类别训练而成. 如果我们的检测类型不在 coco 数据集中, 比如游戏人物, 就需要重新训练模型(from scratch), 即使用 yaml格式的模型定义文件作为yolo命令行model的参数.
- model=yolov8n.yaml pretrained=yolov8n.pt, 这是一个全新模型配置文件 + 预训练模型文件的组合, 训练过程将使用yaml模型配置文件, 包含模型的网络结构, 超参数和训练参数等信息, 但初始权重使用预训练的yolov8n.pt, 这样收敛速度较快, 训练过程比完整的from scratch要会短一些.
- model=yolov8n.yaml pretrained=False ,这是from scratch 训练, yolov8n.yaml文件包含模型的网络结构, 超参数和训练参数等信息, 我们可以基于这样的模型定义+自定义数据集训练出自己的模型权重文件, 用于后续的预测. 训练耗时最长.
cd myEnv\Scripts
# 基于预训练 yolov8n.pt 进行自有数据的training, 换句话说, 是针对自有数据进行模型的 fine-tuning, 训练耗时较短.
.\yolo task=detect mode=train data=coco8.yaml model=yolov8n.pt
# 使用 yolov8n.yaml 模型定义文件重新训练, 并使用预训练的 yolov8n.pt 作为初始权重值, 训练耗时较长.
# pretrained参数可以设置成bool值, 也可以设置为一个pt文件
.\yolo task=detect mode=train data=coco8.yaml model=yolov8n.yaml pretrained=yolov8n.pt
# 使用 yolov8n.yaml 模型定义文件进行完全重新训练, 训练耗时最长.
.\yolo task=detect mode=train data=coco8.yaml model=yolov8n.yaml pretrained=False
标签:训练,pt,模型,YoloV8,yaml,yolov8n,从零开始,model
From: https://www.cnblogs.com/harrychinese/p/17963995