目录
yolov8源码下载地址:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite
yolov8使用文档:
Home - Ultralytics YOLOv8 Docs
教学视频参考: 包会!YOLOv8训练自己的数据集_哔哩哔哩_bilibili
一、前期准备+所需环境配置
1.1. 虚拟环境创建
先用conda prompt创建一个虚拟环境,我的叫yolov8, python版本用3.10
conda create -n yolov8 python=3.10
1.2 下载yolov8源码,在pycharm中进行配置
1.2.1 下载源码
源码地址:
GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite
下载好解压之后用pycharm进行打开,然后把interpreter设置为刚刚创建的虚拟环境
1.2.2 在pycharm终端中配置conda
关于如何在pycharm终端中配置虚拟环境可以看这篇:
pycharm终端配置,使用Anaconda_pycharm设置terminal打开anaconda的命令行窗口显示找不到本地终端-CSDN博客
具体:把settings-> Tools -> Terminal中的shell path换成你的conda prompt的位置
- 在属性中找到anaconda prompt的目标位置,把cmd.exe开始的后面所有内容都复制下来
- 粘贴到shell path中的对应位置,重启就OK啦
PS: 如果还是出现了CommandNotFoundError错误可以参考如下文章解决,我的错误就是根据这个解决的
1.3 在pycharm的terminal中激活虚拟环境
使用conda activate命令激活虚拟环境,激活成功的标志就是命令行前面的(base)换成了你的虚拟环境的名字
1.4 安装requirements.txt中的相关包
pip install -r requirements.txt
1.5 pip安装其他包
安装代码运行所需的ultralytics和yolo包
pip install ultralytics
pip install yolo
1.6 预训练权重的下载
源码下载界面中的readme文件中往下翻,找到yolovn8的预训练权重,点击下载,然后把下载好的文件放在项目代码的根目录下。
把权重文件放在根目录处
1.7 验证环境配置是否成功
复制下面的代码来验证一下是否可以运行
yolo predict model=yolov8n.pt source='ultralytics/assets/bus.jpg'
PS:我在运行过程中遇到了ImportError: cannot import name '***' from 'collections'和No such command 'predict'两个问题,都已经解决了,解决方案如下:
[解决] 问题:ImportError: cannot import name ‘Callable‘ from ‘collections‘-CSDN博客
YOLOv8报错Error: No such command ‘predict‘.-CSDN博客
运行命令后可以实现检测,结果保存在runs->detect->predict文件夹下
可以看到已经完成了目标框和类别概率的显示和绘制
二、数据集的准备
2.1 coco128数据集下载
下载coco128文件:
https://ultralytics.com/assets/coco128.zip
下载之后再跟根目录下新建一个datasets文件夹,然后把coco128数据集放在下面。
2.2 coco128数据集格式
2.2.1 数据集文件夹
- images:下面的子文件夹为train2017,存放所有的训练图片;
- labels:下面的子文件夹为labels2017,存放所有的标注标签。
自己的数据集的命名和排列方式也要按这个格式来。
2.2.2 coco数据集的yaml文件
coco128数据集的yaml文件如下所示,可以看到给出了数据集的路径、训练集和验证集所在的位置,所以仿照该文件写一个我们自己的yaml文件;
2.3 自建数据集
2.3.1 数据集格式
我使用了一个苹果树叶数据集,一共有4个病害类[insert,mlb,mossaic],使用labelimg标注了103张图片,然后存放在Apple文件夹下
- 图像如下所示:
- 标签文件如下所示:
2.3.2 yaml文件
apple.yaml文件如下所示,存放在Apple数据集的根目录下
# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Example usage: yolo train data=coco128.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco128 ← downloads here (7 MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: E:\code_MWY\yolov8\ultralytics-main\datasets\Apple # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes
names:
0: alternaria
1: insert
2: mlb
3: mossaic
三、训练自己的数据集
3.1 输入运行命令
设置好需要训练的数据集路径、所使用的具体yolo模型要加载的预训练权重文件,并且设置所需的epoch数量。
- data = datasets/Apple/apple.yaml
- model = yolov8n.yaml
- pretrained = ultralytics/yolov8n.pt
- epoch = 100
在terminal中输入下面的命令 ;
yolo detect train data=datasets/Apple/apple.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=100 batch=4 lr0=0.01 resume=True
开始运行,等待结果。
3.2 训练结果
训练结束后训练结果都保存在runs这个文件夹下,可以看到有所有的指标曲线的可视化;
还有模型训练出来的权重,best.pt为训练的最好的一组权重,后面可以使用。
训练100个epoch后的结果如下所示:
可视化结果:
每一个epoch对应的损失值
3.3 验证
输入下面的命令进行模型的验证,这里的models为训练的最好的那一组权重;
yolo detect val data=datasets/Apple/apple.yaml model=runs/detect/train/weights/best.pt batch=4
结果如下所示:
3.4 预测结果
输入下面的命令预测如下名为insert的图片
yolo predict model=runs/detect/train/weights/best.pt source=insert.jpg
可以看到模型完成预测,标注出来了所属的类别、位置并且给出了概率值。