本专栏主要是提供一种国产化图像识别的解决方案,专栏中实现了YOLOv5/v8在国产化芯片上的使用部署,并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。
B站配套视频:https://www.bilibili.com/video/BV1or421T74f
数据准备
v8的数据准备在我们做分类和检测任务时候其实可以和v5的数据准备结果共享。此处我们就不过多说明标注相关工作了。
环境准备
当然有的教程里面会让你使用pip install ultralytics,强烈不推荐使用这种方法,我们在使用过程中是需要修改源码文件的。
yolov8的使用方法和v5差异比较大,当然内核是一样的。
在docker环境中使用我们之前的image镜像再创建一个容器。
docker run --gpus all -it --name yolov8_env -v $(pwd):/app nvcr.io/nvidia/pytorch:22.03-py3
从github仓库中下载yolov8项目,进入项目目录,然后安装相关依赖,这里就没有requestments.txt了
git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics
pip install -e .
训练
需要进行训练的数据集摆放路径和v5的基本一致
. v8项目路径
├── datasets
│ └── project_dataset
│ ├── images
│ │ ├── train
│ │ │ └── demo_001.jpg
│ │ └── val
│ │ └── demo_002.jpg
│ └── labels
│ ├── train
│ │ └── demo_001.txt
│ └── val
│ └── demo_002.txt
└── 其他文件、文件夹
之后就是创建我们的yaml文件了,此处v5和v8就开始有差异了。v8的数据集yaml文件是需要自己创建的,当然官网(https://docs.ultralytics.com)上也可以下载到,这里以我的数据集为例子。这个文件可以摆放在项目中的任意位置,只要最后训练时候可以指向到。
# 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: /app/docs/yolov8/ultralytics/datasets/bz_754 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)
# Classes (80 COCO classes)
names:
0: noemal
1: error
其次就是描述模型的yaml文件,这个文件所在位置也发生了变化,在./ultralytics/cfg/models/v8/yolov8.yaml目录下面。并且官方已经把n、s、m、l、x模型都合并到一个描述文件里面了。
接下来就可以编写训练脚本了,这也是v5和v8的不同,当然官方也提供了相关的脚本编写模板。
from ultralytics import YOLO
# 加载模型
# model = YOLO('weights/yolov8s.pt')
model = YOLO('yolov8s.yaml')
results = model.train(data='datasets/bz_754/bz_754.yaml', epochs=200, imgsz=640, workers=0, batch=36, name='train-RELU-s-200-754' )
模型导出
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom trained model
# Export the model
model.export(format="onnx")