首先要卸载pip uninstall ultralytics
不用自带的库进行运行
一、要改yolov8/ultralytics/yolo/engine/model.py
1、首先在开头导入
import torch
from ultralytics.yolo.utils.torch_utils import intersect_dicts
2、在def _new(self,cfg:str,task=None,erbose=True):处,在self.model.task=self.task后,添加代码
ckpt = torch.load('yolov8n.pt')
csd = ckpt['model'].float().state_dict()
csd = intersect_dicts(csd,self.model.state_dict())
self.model.load_state_dict(csd,strict=False)
print(f"Transferred {len(csd)}/{len(self.model.state_dict())} items')
3、在def train(self,**kwargs)处,在self.trainer=TASK_MAP下面的三行代码注释掉,并添加self.trainer.model = self.model
#if not overrides.get("resume"):
# self.trainer.model = self.trainer.get_model(weights=self.model if self.ckpt else None,cfg=self.model.yaml)
# self.model = self.trainer.model
self.trainer.model = self.model
二、然后打开yolov8/ultralytics/yolo/cfg/default.py,再复制一份,命名 default1.yaml,然后改data,复制你自己数据集的yaml的路径,改训练次数等等
三、在yolov8文件下建main.py文件,这里是让yolov8运行起来的命令
from ultralytics import YOLO
model = YOLO("ultralytics/models/v8/yolov8n.yaml").train(**{'cfg':'ultralytics/yolo/cfg/default1.yaml'})
注意:这里的yolov8n.yaml要和在model.py添加的v8权重要统一,都是n
就可以运行啦
$ python3 main.py