基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】

超详细教程系列在我前面的文章中也有不少的实践记录,感兴趣的话可以自行阅读即可:

《基于yolov7开发实践实例分割模型超详细教程》

《YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程》

《基于yolov5-v7.0开发实践实例分割模型超详细教程》

《轻量级模型NanoDet基于自己的数据集【接打电话检测】从零构建模型超详细教程》

《基于YOLOv5-v6.2全新版本模型构建自己的图像识别模型超详细教程》

《基于自建数据集【海底生物检测】使用YOLOv5-v6.1/2版本构建目标检测模型超详细教程》

《超轻量级目标检测模型Yolo-FastestV2基于自建数据集【手写汉字检测】构建模型训练、推理完整流程超详细教程》

YOLOv8出来也有一段时间了,但是由于这次改动的方式比较大,官方将其转化为了一个安装包的形式,其实我不是很习惯这种形式,所以就没有经常用到这里,最近正好在整理这块的内容,就想着把自己的实践记录整理记录下来。

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第1张图片

 github打开搜索YOLOv8,然后打开第一个项目,官方的项目地址在这里,如下所示:

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第2张图片

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第3张图片

 从yolov8开始,变成了一个可以直接导入使用的安装包形式了,客观来讲,单纯对于使用者来说上手肯定是更加方便了,但是对于从yolov3一路跟随发展到yolov7来说,肯定是不习惯的,包括如果自己想要去改一些代码的话肯定也是不如之前的版本来的直接的。

安装很简单如下所示:

pip install ultralytics

一条命令就可以了,当然了也可以升级到最新的版本如下所示:

pip install --upgrade ultralytics

就我的使用体验来说,最好使用最新的版本,不然容易报错这样那样的问题,尤其是一个属性缺失的问题。

从YOLOv8开始,官方其实推荐使用的就是终端命令行的形式来使用模型,训练也是如下如下所示:

# Build a new model from YAML and start training from scratch
yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640

# Build a new model from YAML, transfer pretrained weights to it and start training
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640

当然了也可以编写简单的脚本代码来使用,如下所示:

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.yaml')  # build a new model from YAML
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # build from YAML and transfer weights

# Train the model
model.train(data='coco128.yaml', epochs=100, imgsz=640)

就我自己来说更倾向于使用第二种方式。

这里就以焊缝质量检测场景为例来看下整体操作实践过程吧。

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第4张图片

 实例数据标注样例如下所示:

1 0.137019 0.134615 0.274038 0.269231
0 0.151442 0.533654 0.120192 0.442308
0 0.514423 0.548077 0.129808 0.475962
0 0.685096 0.143029 0.216346 0.286058

训练数据配置文件如下所示:

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第5张图片

 更前面各个系列不同,这里path、train、test、val各个字段的配置需要使用绝对路径才可以的不然的话会报错,如下所示:

RuntimeError: Dataset 'self.yaml' error
Dataset 'self.yaml' images not found , missing paths ['E:\\projects\\datasets\\images\\test']
Note dataset download directory is 'E:\pp-projects\datasets'. You can update this in ......

配置完成后就可以开始训练了,日志输出如下所示:

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第6张图片

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第7张图片

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第8张图片

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第9张图片

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第10张图片

 训练完成后结果目录文件详情如下所示:

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第11张图片

 直观来看结果文件跟之前的版本还是有所区别的。

首先就是混淆矩阵,这里同时提供了两种形式的混淆矩阵,一种是原始数值形式的混淆矩阵,一种是经过归一化处理后的混淆矩阵,如下所示:

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第12张图片

 其次就是results.png跟之前的版本样式差异还是比较明显的,如下所示:

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第13张图片

 接下来是评估指标相关的结果数据了。

【F1值曲线】

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第14张图片

 【Precision曲线】

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第15张图片

 【Recall曲线】

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第16张图片

 【PR曲线】

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第17张图片

 【Batch计算实例】

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第18张图片

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】_第19张图片

 整体来讲,YOLOv8的易用程度还是比较高的,相比于前面系列的模型来说新手上手的速度肯定更快,门槛更低,但是如果是想要灵活性的话感觉就不如之前的系列了。

你可能感兴趣的:(YOLO)