前言
继YOLOv5大成之后,原作者U神又开源了更强的YOLOv8,说是论文在写,不知道这次会不会吃帽子。
代码
Github地址:https://github.com/ultralytics/ultralytics
预训练权重下载地址:https://github.com/ultralytics/assets/releases
实验对比
COCO数据集实验对比,YOLOv8全面领先!
结构图
图片来源于:https://blog.csdn.net/qq_37706472/article/details/128679699
训练Train
环境配置不再赘述,数据集格式也跟v5相同,但训练方式跟v5略有不同。
第一,需要输入命令安装U神自己的库,里面是一些需要的三方库:pip install ultralytics
第二,第一次可能找不到train.py
在哪,要先进入路径:ultralytics/yolo/v8/detect
,就可以看到train.py
和val.py
第三,直接运行train是不行的,train.py找不到类似v5那种参数设置,如batchsize、workers等。
v8将这些参数设置集成到了ultralytics/yolo/cfg/default.yaml
(注意看清路径,别找半天找不到);
其中,default.yaml
文件的参数如下:
train:注意黄色框的几个参数,task
是选择任务,detect是目标检测,segment是分割任务;mode
参数,train是训练,val是验证,predict是推理测试;model
是使用的网络结构;data
是数据集的设置;
第四,参数都设置好之后,可以直接输入命令,即可开始训练:
yolo cfg=ultralytics/yolo/cfg/default.yaml
(没看错,就是这个命令,不用什么.py
)
还有第二种训练命令方式,直接命令行输入,也可以开始训练,看你喜欢哪种:
yolo task=detect mode=train model=models/v8/yolov8n.yaml data=data/coco.yaml batch=8 epochs=300 workers=2
有个点需要注意:
model应该是放预训练权重才对,但放预训练权重,网络yaml就没地方放了(弄懂后再更新);
yolov8n.yaml
这种网络结构,注意路径!!!路径看清楚在哪!!!
验证Val
输入命令:
第一种方法:
在default.yaml里修改,主要就是下面三个参数,mode
记得从train
改为val
,model
改成自己训练后的权重,要不然还是训练,还有split
设置,test是测试集,val是验证集;
第二种方法:
直接输入命令行
yolo task=detect mode=val model=runs/detect/train/weights/best.pt data=data/coco.yaml batch=8 workers=2