目录

一、前期准备+所需环境配置 

1.1. 虚拟环境创建

1.2 下载yolov8源码,在pycharm中进行配置

1.2.1 下载源码

1.2.2 在pycharm终端中配置conda

1.3 在pycharm的terminal中激活虚拟环境 

1.4 安装requirements.txt中的相关包

1.5 pip安装其他包

1.6 预训练权重的下载 

1.7 验证环境配置是否成功

二、数据集的准备 

2.1 coco128数据集下载

 2.2 coco128数据集格式

2.2.1 数据集文件夹

2.2.2 coco数据集的yaml文件

2.3 自建数据集 

2.3.1 数据集格式

2.3.2 yaml文件

三、训练自己的数据集

3.1 输入运行命令

3.2 训练结果

 ​编辑

3.3 验证


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错误可以参考如下文章解决,我的错误就是根据这个解决的

CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘. If using_aoimono的博客-CSDN博客

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

 可以看到模型完成预测,标注出来了所属的类别、位置并且给出了概率值。

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐