前言

本文记录一下yolov8训练目标检测模型的过程,以及其中的一些需要注意的地方。本人是yolov5直接使用的yolov8,因此本文也记录了与yolov5的训练过程不一样的地方。

原创声明:如有转载请注明文章来源。码字不易,如对卿有所帮助,欢迎评论、点赞、收藏。

1 下载yolov8(网址

在这里插入图片描述

2 配置conda环境

这边说一下,pip这里会自动安装cpu版本的torch。因此安装torch要去官网下载,不注意的话后面训练模型会超级慢。

Prompt终端
1、创建一个新的环境,终端输入:
conda create -n YOLOV8_1 python=3.9 
2、激活环境:
conda activate YOLOV8_1
3、转到YOLOV8所在文件夹:
cd /d D:\python_set\ultralytics-yolov8-main
4、安装requirements.txt中的包
pip install -r requirements.txt

3 用pycharm打开文件

打开之后你可能会觉得yolov5文件包里面啥都有,怎么yolov8里面好像啥也没有,连个train.py都没有,还怎么用呀!其实这就是工程化代码的特点,你可以基于这个框架自己创建一个train,只要几行代码就可以训练好了。不会再是yolov5一个train文件看得头大。

  • 在ultralytics中加入创建dataset文件夹,子文件夹code_inspection是本人的项目。里面存档你的images、lables和yaml文件
    在这里插入图片描述
  • images

在这里插入图片描述

  • labels

在这里插入图片描述

  • yaml文件,这个是从coco128中改的(coco128.yaml路径为:ultralytics/cfg/datasets/coco8.yaml)

在这里插入图片描述

3 训练自己的YOLOV8数据集

  • 打开终端

在这里插入图片描述输入如下:

# 相关参数需要自己修改一下,这个应该很好理解
yolo detect train data=datasets/code_inspection/code_inspection.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=200 batch=8 lr0=0.01 resume=True

运行之后会出现一个询问:wanna会询问你要不要使用wandb记录训练结果,这个时候需要你点击进入链接,创建一个wandb的账号,账号会自动生成一个号码(20个字符作用的一个号码),就可以用wandb了。
在这里插入图片描述

yolov5yolov8
有train detect文件没有train detect文件,最好用终端训练
没有wandb有wandb

4 run下运行完了之后没有best.pt文件

yolov8的训练的文件会放在网络端,当然也是有办法放在本地的。我是没有的。
在这里插入图片描述
点击进入最上面的链接
在这里插入图片描述
按照如下顺序点击即可下载模型。反正我觉得不是很方便。
在这里插入图片描述
啊这,过了个小时,run文件下权重文件直接就出现了。可能是我重启之后的效果。
在这里插入图片描述

5 导出为onnx文件

这个倒是很方便的。创建一个文件,赋值下面代码就可以了。

from ultralytics import YOLO

# Load a model
model = YOLO('best.pt')  # load a custom trained model

# Export the model
model.export(format='onnx')

6 yolov8应用完整案例(免费且包含源代码、数据集)

大图像中的小目标检测——基于YOLOV8+OnnxRuntime部署+滑动窗口+Zbar的条码检测研究

总结

入门yolov8目标检测的步骤:

  1. 环境配置
  2. 标注数据集,标注的报错点在这里
    (以YOLO标注为例)labelimg标注闪退的几种情况详解,报错IndexError: list index out of range
  3. 熟悉训练过程。由于yolov8加入了一些可视化的东西,用过yolov5之后再来看yolov8会有反应不过来wandb的用法。
  4. 找一个案例练习,在这里给大家提供一个超级赞的案例,工业产线上的目标检测案例。
    大图像中的小目标检测——基于YOLOV8+OnnxRuntime部署+滑动窗口+Zbar的条码检测研究
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐