使用原yolov8模型训练模型代码如下:
import time
from ultralytics import YOLO
# yolov8n模型训练:训练模型的数据为'A_my_data.yaml',轮数为100,图片大小为640,设备为本地的GPU显卡,关闭多线程的加载,图像加载的批次大小为4,开启图片缓存
model = YOLO('yolov8n.pt') # load a pretrained model (recommended for training)
# results = model.train(data='A_my_data.yaml', epochs=100, imgsz=640, device=[0,], workers=0, batch=4, cache=True) # 开始训练
results = model.train(data='A_interact_data.yaml', epochs=100, imgsz=640, device=[0,], workers=0, batch=4, cache=True) # 开始训练
time.sleep(10) # 睡眠10s,主要是用于服务器多次训练的过程中使用
想用修改之后的模型来训练,以yolov8-cls.yaml为例,只添加了model = YOLO("yolov8-cls.yaml")
这一行代码(尝试过去掉yolov8n.pt预训练权重文件运行不通过),修改后训练文件如下:
import time
from ultralytics import YOLO
model = YOLO("yolov8-cls.yaml")
# If a pre-trained model is available, use it instead
# model = YOLO("model.pt")
# Display model information
model.info()
# yolov8n模型训练:训练模型的数据为'A_my_data.yaml',轮数为100,图片大小为640,设备为本地的GPU显卡,关闭多线程的加载,图像加载的批次大小为4,开启图片缓存
model = YOLO('yolov8n.pt') # load a pretrained model (recommended for training)
# results = model.train(data='A_my_data.yaml', epochs=100, imgsz=640, device=[0,], workers=0, batch=4, cache=True) # 开始训练
results = model.train(data='A_interact_data.yaml', epochs=100, imgsz=640, device=[0,], workers=0, batch=4, cache=True) # 开始训练
time.sleep(10) # 睡眠10s,主要是用于服务器多次训练的过程中使用
运行失败,报错信息如下:
Traceback (most recent call last):
File "D:/pyx/YOLO/yolov8-42/42_demo/start_other_train.py", line 9, in <module>
results = model.train(data='A_interact_data.yaml', epochs=100, imgsz=640, device=[0,], workers=0, batch=4, cache=True) # 开始训练
File "D:\pyx\YOLO\yolov8-42\ultralytics\engine\model.py", line 805, in train
self.trainer = (trainer or self._smart_load("trainer"))(overrides=args, _callbacks=self.callbacks)
File "D:\pyx\YOLO\yolov8-42\ultralytics\models\yolo\classify\train.py", line 38, in init
super().init(cfg, overrides, _callbacks)
File "D:\pyx\YOLO\yolov8-42\ultralytics\engine\trainer.py", line 134, in init
self.trainset, self.testset = self.get_dataset()
File "D:\pyx\YOLO\yolov8-42\ultralytics\engine\trainer.py", line 535, in get_dataset
raise RuntimeError(emojis(f"Dataset '{clean_url(self.args.data)}' error ❌ {e}")) from e
RuntimeError: Dataset 'A_interact_data.yaml' error Download failure for https://ultralytics.com/assets/A_interact_data.yaml.zip. Retry limit reached.
仔细看了报错信息之后,发现yolov8-cls这个模型其实是用于目标分类的,需要的数据类型yaml文件和目标检测模型的不一样,yaml文件格式应该如下所示:
train: path/to/train/images
val: path/to/val/images
nc: number_of_classes
names: ['class1', 'class2', ...]
所以我们再换一个模型进行测试,修改后的训练文件代码如下所示:
运行成功!