首先默认已经安装了cuda,cudnn和conda。新建conda环境的时候python>=3.7就行
conda create -n 环境名 python=想要的版本
先安装对应cuda版本的torch和torchvision,我的cuda版本是11.0,那么在conda环境中运行如下代码:
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
cuda为10.2的也可以运行上面的代码进行安装。其它版本对应关系需要自己去查一下。
然后去git hub上下载最新的yolov8项目:
我选择Download ZIP后找个合适的地方解压一下。
解压以后在conda环境中,cd到ultralytics-main文件中,安装依赖包。运行:
pip install -r requirements.txt
pip install ultralytics
#这个库用于通过python函数调用训练、检测等功能,是yolov8的新功能。但你也可以选择传统的方式。
然后在ultralytics-main文件中新建两个文件夹weight和datasets。weight文件中保存权重文件,datasets中保存数据集:
数据集的文件结构是:
datasets
|_____images
| |___train //该文件夹下存放用于训练的图片
| |___val //该文件夹下存放验证集
|
|_____labels
| |___train //该文件夹下存放训练集标注
| |___val //该文件夹下存放验证集标注
|
|_____class.yaml
class.yaml的内容是:
train: D:\yolov8v5\ultralytics-main\datasets\images\train # 训练集文件夹的路径
val: D:\yolov8v5\ultralytics-main\datasets\images\val # 验证集文件夹的路径
#你可以将验证集文件夹的路径设置成与训练集相同。这么做不会有过拟合评估,但也可以运行。
test: # 测试集文件夹的路径,可以没有
# Classes
nc: 2 # 训练集中物品的类别数量
names: ['dog', 'cat'] # 训练集中物品的类别名称
如果不知道如何标注数据集,可以查一下。或者我之后再写一篇关于标注数据集的文章。
weight文件夹下放权重文件,不用放这么多,反正每次只会用到一个:
weight
|__yolov8n.pt
|__yolov8s.pt
|__yolov8l.pt
|__yolov8x.pt
自此你具备了开始训练的一切条件。想要运行train操作,在ultralytics-main文件夹中新建.py文件,如train.py,复制以下代码:
from ultralytics import YOLO
model = YOLO("weights/yolov8n.pt") #用于迁移训练的权重文件路径
results = model.train(data="datasets/class.yaml",imgsz=320, epochs=100, batch=16, device=0, workers=0)
执行此文件可以开始训练。其中epochs参数表示迭代次数。workers参数不为0的话,性能较差的电脑可能会报错。其它各种参数以及其功能可以自行查找。
想要开始识别图片,也是新建.py文件,如detect.py,复制以下代码:
from ultralytics import YOLO
model = YOLO("weights/yolov8n.pt") #用于detect的权重文件路径
results = model.predict(source="ultralytics/assets", imgsz=320, show=True, save=True)
其中source参数表示等待检测的图片所在路径。
训练结果或者检测结果均会保存在ultralytics-main > runs文件夹中