【YOLOv8训练和验证教程】

前言

本次是2024.0429最新更新。YOLOv8经过一年的沉淀,也已经逐渐成熟。YOLOv8论文还没出,猜测U神团队没打算写论文。目前最新的论文是YOLOv9,但v9需要的算力太高了,普通人还是抱以欣赏态度吧。

代码下载

目前最新版本的YOLOv8公开版是8.2.0版本
官方Github下载地址:https://github.com/ultralytics/ultralytics
在这里插入图片描述

YOLOv8结构图

图片来源于:https://blog.csdn.net/qq_37706472/article/details/128679699
在这里插入图片描述

YOLOv8实操过程

(1)安装环境依赖,输入命令 :

pip install ultralytics

(2) 训练train

数据集格式跟v5相同,数据集这里不多赘述,不懂的可以搜一下。
主讲一下需要注意的地方:
第一,第一次用v8的童鞋们,可能找不到train.py在哪。v8的根目录不像v5直接有train.py
在v8中,要先进入路径:ultralytics/models/yolo/v8/detect,就可以看到train.pyval.py文件;

第二,直接输入命令python train.py或者直接运行tarin.py都是不行的。而且,v8的train.py找不到类似v5那种参数设置,如batchsize、workers等。
如何解决?
YOLOv8将超参数和其他参数的设置全部集成到了ultralytics/yolo/cfg/default.yaml(注意看清路径,别找半天找不到);
其中,default.yaml文件的参数如下:
注意黄色框的几个参数,task是选择训练任务类型,detect是目标检测,segment是分割任务;mode参数,train是训练,val是验证,predict是推理测试;model是使用的网络结构;data是数据集的设置;

在这里插入图片描述

第三,参数都设置好之后,可以直接输入命令,即可开始训练:
yolo cfg=ultralytics/yolo/cfg/default.yaml (没看错,不用怀疑,就是这个命令,不用什么.py)

重点!!!重点!!!重点!!!
以上训练命令,改参数太麻烦了,还费劲。
推荐使用以下方式:
直接自己在根目录下新建一个**train.py**文件,内容如下:

from ultralytics import YOLO

# Load a model
model = YOLO("ultralytics/cfg/models/v8/yolov8n.yaml")  # build a new model from scratch
model = YOLO("yolov8n.pt")  # load a pretrained model 不使用预训练权重,就注释这一行即可
# train
model.train(data='dataset/data.yaml',
                cache=False,
                imgsz=640,
                epochs=100,
                batch=16,
                close_mosaic=0,
                workers=4,
                device='0',
                optimizer='SGD', # using SGD
                amp=False, # close amp
                project='runs/train',
                name='exp',
                )

然后,直接在命令窗口输入python train.py或者直接运行train.py即可

(3)验证val

注意,这里直接写推荐的方式。
直接根目录新建一个val.py文件,直接运行即可:

from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('runs/train/exp/weights/best.pt') # 自己训练结束后的模型权重
    model.val(data='dataset/data.yaml',
              split='val',
              imgsz=640,
              batch=16,
              save_json=True, # if you need to cal coco metrice
              project='runs/val',
              name='exp',
              )

下面讲解一下参数,以及什么叫“验证”。部分新手不理解这个程序的作用。

首先,在训练时和训练结束后,我知道会直接输出mAP值。但是,这不是最终结果,不能直接用,也不能说这是验证的结果,这些说法都是错的。

什么叫做验证?就是训练完后的模型权重,用val.py跑一遍,才叫验证。(别懒,必须得跑)
我知道,有人会说,val.py之后的mAP结果和训练完后的mAP结果一样,或者相差很小,也有相差大的时候(都不重要,别管,以val.py跑出来的结果为准)
这是因为,你val.py里面split参数设置的是val,代表此时调用的是验证集图像,跑出来的就是验证集mAP结果
如果split参数设置是test,则代表此时调用的是测试集图像,跑出来的就是测试集mAP的结果

还有重要的一点,不知道大家听懂了没。没有什么test.py,验证和测试都是这个val.py这个程序,只是有的人叫法不同。
split参数设置为val,代表测的就是验证集结果,大家就习惯叫成验证结果
split参数设置为test,代表测的就是测试集结果,大家就习惯叫成测试结果
它们两个共用一个程序!!!没有什么所谓的test.py,别被迷惑了!!!
在这里插入图片描述

以上,大家常说的,验证集结果和测试集结果是多少。它们都是用这一个程序val.py跑出来的,split参数不同代表调用的数据集不同。

还有,问的比较多的一点,没有测试集怎么办??没有就不用呗,就把split参数设置为val

  • 73
    点赞
  • 404
    收藏
    觉得还不错? 一键收藏
  • 44
    评论
对于修改yolov8训练方式,有两种方法可以选择。第一种方法是通过命令行输入指令来开始训练。你可以使用以下命令:`yolo task=detect mode=train model=models/v8/yolov8n.yaml data=data/coco.yaml batch=8 epochs=300 workers=2`。第二种方法是通过修改default.yaml文件来进行修改。主要需要修改以下三个参数:将mode从train改为val,将model改为你自己训练后的权重,同时将split设置为test或val,分别表示测试集或验证集。 此外,还有一种训练方式是使用yolov8s进行训练,该训练方式需要进行2000轮的训练。在第一次训练中,map50的结果为0.915。在第二次训练中,同样进行了2000轮的训练,得到的map为0.91,其中map相差了0.5个点。 希望以上信息对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [YOLOv8自用训练教程——训练、测试、推理](https://blog.csdn.net/retainenergy/article/details/129199116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [关于yolov8一些训练的情况](https://blog.csdn.net/zhangdaoliang1/article/details/128691837)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值