继上篇:
相信大家已经可以训练一些图片和视频了,接下来我将为大家介绍如何训练自己的特定模型,并用其进行检测
目录
准备数据
图片数据
首先要准备一些图片数据,其中包含一些相同的要素,这里我就拿王者荣耀进行演示。
我在B站下载了个视频,对其中英雄形象比较明显的进行的截屏,截了25张:
截图:
标识数据
然后需要这25张图片的标识数据,需要用标识工具,我用的大发YOLO标注工具,他是要收费的,如果大家需要的话,找我私,我会发给你,我博客上面不好分享,怕被告。
使用也非常简单,先导入图片,勾出人物框,添加类型,确定类型,保存标注即可。这样,会自动创建该图片的标注文件,大家一张一张标注好即可。
配置文件
创建下图所示目录:
xun可以自己随便取
将图片数据分别复制进imgs中的train和val中,再将标记文件分别复制进labels中的train和val中。
再创建一个.yaml文件
内容如下:
path: D:\.idea\YOLO\Yolo8\yolo8_learn\xun #数据集根目录
train: images/train #训练集图片路径
val: images/val #验证集图片路径
nc: 10 #类别数量
names: ['千年老茧','周瑜','梦琪','百里守约','张飞','廉颇','赵云','海月','夏洛特','公孙离'] #类别名称
按要求写即可。
创建一个py文件,文件内容如下:
# 开始训练模型
from ultralytics import YOLO
import os
os.environ['CURL_CA_BUNDLE'] = ""
# 加载预训练模型
model = YOLO('yolo8l.pt')
# 开始训练模型
model.train(
data='data.yaml', #训练数据集
epochs=500, #训练轮次
imgsz=640, #输入图片尺寸(会转换为该尺寸)
batch=32, #每次训练的批量
device='cpu' #GPU更快
)
print("训练结束")
训练模型中的参数都是用的官方推荐参数,大家直接抄就行,具体参数解释也在后面。
当然,用CPU训练会非常满,尤其在一些参数还比较大的时候,我们测试用可以稍微调小点,比如这样:
model.train(
data='data.yaml', #训练数据集
epochs=100, #训练轮次
imgsz=320, #输入图片尺寸(会转换为该尺寸)
batch=32, #每次训练的批量
device='cpu' #GPU更快
)
运行
运行.py文件,出现以下画面:
这表示正在训练,Epach是进程。
训练结束后会得到一个训练文件:
在目录下的weights文件夹中的best.pt,就是训练完的最优模型(适用于最终运用)
last.pt 是训练的最后一轮模型(适用于继续训练),即可以放在这个位置:
# 开始训练模型
from ultralytics import YOLO
import os
# import certifi
# print(certifi.where())
os.environ['CURL_CA_BUNDLE'] = ""
# 加载预训练模型
model = YOLO('last.pt')
# 开始训练模型
model.train(
data='data.yaml', #训练数据集
epochs=500, #训练轮次
imgsz=320, #输入图片尺寸(会转换为该尺寸)
batch=8, #每次训练的批量
device='cpu' #GPU更快
)
print("训练结束")
测试训练结果
将best.pt作为训练模型,对该视频进行训练
# 检测模型结果
from ultralytics import YOLO
# 模型训练完自动保存到D:\.idea\YOLO\Yolo8\yolo8_learn\runs\detect\train6\weights
# best.pt 训练完的最优模型(适用于最终运用)
# last.pt 训练的最后一轮模型(适用于继续训练)
# 加载自己训练好的模型
model = YOLO(r'D:\.idea\YOLO\Yolo8\yolo8_learn\runs\detect\train6\weights\best.pt')
# 开始检测
model('2.mp4',show=True,save=True)
静静等待训练结束。
训练结果:
<iframe allowfullscreen="true" data-mediaembed="youku" frameborder="0" id="xaqP1KhX-1737551654709" src="https://player.youku.com/embed/XNjQ1MjI0NjYyNA=="></iframe>YOLO8识别王者荣耀视频
存在的问题
可以看到训练结果很一般,主要有以下几个原因:
1、王者荣耀技能特效太花,英雄动作太多,影响检测;
2、训练图片量比较少;
3、贪图时间,一些参数调得较小。
4、(个人因素)我也是训练完才发现,我的配置文件表和标注软件上的设置标注顺序不一样,这就导致只有千年老茧和赵云是符合的,其他的英雄顺序都乱了,希望大家能注意到这点。
下篇博客将更新一些更高阶的玩法,敬请期待。
感谢您的三连!!!
标签:----,pt,训练,模型,YOLO,YOLO8,全栈,train,model From: https://blog.csdn.net/2403_83182682/article/details/145305426