前言
初步学习YoLo模型运用,知道了YoLo模型的基础运用方式,实现了图片、视频的物体识别,以及使用自己数据集来训练自己的YoLo模型并进行运用识别。
一、YoLo模型如何运用
YoLo模型下载好后,可通过PyCharm软件,调用ultralytics库的Yolo类,使用相关方法。举例如下:
1)实现对一张图片的识别
from ultralytics import YOLO
#加载YoLo预处理模型
model = YOLO(r'D:\PythonProjects\ultralytics-main\yolov8n.pt')
#检测目标 show 显示检测后的结果 save 保存检测后的结果
# 网络地址图片和本地图片都能目标检测
#(网址图片需填写相应网址,如:https://i0.hdslb.com/bfs/new_dyn/8329f0625a9a642d4412c90f91859c6d33583817.jpg)
#model('1.png', show=True, save=True)
2)实现对一个视频的识别(与图片方法一致)
from ultralytics import YOLO
#加载YoLo预处理模型
model = YOLO(r'D:\PythonProjects\ultralytics-main\yolov8n.pt')
#检测目标 show 显示检测后的结果 save 保存检测后的结果
# 网络地址视频和本地视频都能目标检测
#model('v1.mp4', show=True, save=True)
二、如何训练自己模型
概括
学习YoLo模型运用后,总结了AI模型运用总体思路逻辑。
1)需要自己的数据集(专攻于哪方面的数据识别)
2)将数据标注(数据有视频、图片、文字等,需进行标注,让模型知道去识别哪些点。)
3)数据预处理(将数据处理成模型能够识别的方式)
4)训练模型(使用模型方法,设置相关数据,如:学习轮次、一次学习多少图)
5)评估模型(是否符合预期结果,如不符合,需在此基础上,使用新数据集继续训练。)
流程图如下:
1.数据集整理
需将自己需要训练模型的相关图片、视频等信息进行整理(尽量找需要检测的场景下的图片,训练效果最好),标准的数据集分为训练集、验证集、测试集,按6:2:2比例存入三个文件夹,我这里只搞了两个,训练集train、验证集val。
2.数据预处理
数据主要有三种,视频、图片、文字,因此需要分为三种处理方式。
数据源 | 处理方式 |
---|---|
视频 | 可以处理成视频关键帧图 |
文字 | 清洗、分词、向量化等处理 |
图片 | 标注(打标签或者边界框) |
这里主要讲的是图片的标注处理。
图片标注
YoLo模型数据格式:
- 图像文件(.jpg、.png常用图片格式)
- 标签文件(.txt文件,有五个值,分为类型下标、目标中心点X与整体图的比例、目标中心点Y与整体图的比例、目标宽与整体宽的比例、目标高与整体高的比例)
手动标注
常用的标注是矩形标注,这里可以使用标注工具labelimg进行标注,因为有YoLo格式,能直接使用,安装也很简单,在Anaconda虚拟Python环境中,直接使用指令下载
pip install labelimg
#使用labelimg,直接输入labelimg
注意:labelimg的python环境建议使用python3.8,往上版本使用会闪退
Labelimg具体使用以及更详细了解YoLo模型可参考:使用Labelimg制作自己的YOLO数据集
原文链接:https://blog.csdn.net/ECHOSON/article/details/143207213
自动标注
需先通过几十张图片训练生成一个训练模型,然后通过软件将训练模型加载进来,自动标注。缺点:自动标注会有差错,需要人工查错并修正。常用工具有:X-AnyLabeling、JieLabel、Label Studio等。
数据集配置文件
说明:配置一个yaml格式文件,配置数据集信息。
path: D:\PythonProjects\learn\test #数据集根目录
train: images/train # 训练集图片路径
val: images/val #验证集图片路径
nc: 2 #类别数量
names: ['王五', '赵四'] # 类别名称
3、训练模型
调用ultralytics 库YoLo类方法,进行训练
from ultralytics import YOLO
# 加载预训练模型
model = YOLO(r'D:\PythonProjects\ultralytics-main\yolov8n.pt')
# 开始训练模型
model.train(
data='test.yaml', # 数据集配置文件路径
epochs=100, # 训练轮次
imgsz=640, # 输入图片尺寸 官方推荐640
batch=32, # 每次训练的批量
device='cpu' # GPU= 0 CPU= 'cpu'
)
这里建议使用yolov8n.pt,应为后面“s”、“m”、“l”模型有点大,数据集没有100张,运行不成功,会报页面文件太小
训练完成后会生成2个模型:best(最优模型)、last(最后学习模型)
4、检测模型
使用训练最优模型去检测需识别的视频或图片
from ultralytics import YOLO
#模型训练完毕自动保存到:runs\detect\train\weights
model = YOLO(r'D:\PythonProjects\learn\runs\detect\train3\weights\best.pt')
model('v1.mp4',show=True, save=True)
如觉得还不够好,可用新的数据集去训练最后模型last.pt,代码跟3步骤一样。
具体操作也可以观看大发老师的视频2025最新YOLO目标检测训练/开发教程
总结
通过学习YoLo模型,可以使用YoLo模型判断一些瑕疵、有无等检测工作,具体实现可将瑕疵、黑点等明显特征标注为坏品,通过代码将图片识别坏品类别大于50%的为残次品,来判断好坏,目前也只是初步运用,继续学习~~。