【玩转全栈】----YOLO8训练自己的模型并应用

devtools/2025/1/24 17:44:06/

继上篇:

【玩转全栈】---基于YOLO8的图片、视频目标检测-CSDN博客

        相信大家已经可以训练一些图片和视频了,接下来我将为大家介绍如何训练自己的特定模型,并用其进行检测

目录

准备数据

图片数据

标识数据

配置文件

运行

测试训练结果

存在的问题

准备数据

图片数据


首先要准备一些图片数据,其中包含一些相同的要素,这里我就拿王者荣耀进行演示。

我在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 YOLOimport 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 YOLOimport 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)

静静等待训练结束。

训练结果:

YOLO8识别王者荣耀视频

存在的问题

可以看到训练结果很一般,主要有以下几个原因:

1、王者荣耀技能特效太花,英雄动作太多,影响检测;

2、训练图片量比较少;

3、贪图时间,一些参数调得较小。

4、(个人因素)我也是训练完才发现,我的配置文件表和标注软件上的设置标注顺序不一样,这就导致只有千年老茧和赵云是符合的,其他的英雄顺序都乱了,希望大家能注意到这点。

下篇博客将更新一些更高阶的玩法,敬请期待。

感谢您的三连!!!


http://www.ppmy.cn/devtools/153194.html

相关文章

VMware虚拟机克隆或复制linux后无法上网的解决方案

1.首先转移虚拟机到另一台电脑 【虚拟机转移】超详细的将虚拟机(ubuntu)从一台电脑复制到另一台电脑教程_虚拟机复制到另一台电脑-CSDN博客 1.先把虚拟机整个文件拷贝到另一台电脑 2。打开vmware,选择打开虚拟机,选择 .vmx 就可…

工业相机 SDK 二次开发-Halcon 插件

本文介绍了 Halcon 连接相机时插件的使用。通过本套插件可连接海康 的工业相机。 一. 环境配置 1. 拷贝动态库 在 用 户 安 装 MVS 目 录 下 按 照 如 下 路 径 Development\ThirdPartyPlatformAdapter 找到目录为 HalconHDevelop 的文 件夹,根据 Halcon 版本找到对…

Flutter:搜索页,搜索bar封装

view 使用内置的Chip简化布局 import package:chenyanzhenxuan/common/index.dart; import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:get/get.dart; import package:tdesign_flutter/tdesign_flutter.dart;import i…

qml Dialog详解

1、概述 Dialog是QML(Qt Modeling Language)中用于显示对话框的组件,它提供了一个模态窗口,通常用于与用户进行重要交互,如确认操作、输入信息或显示警告等。Dialog组件具有灵活的布局和样式选项,可以轻松…

docker使用笔记

安装 sudo apt update #更新apt的软件列表 sudo apt-get install ca-certificates curl gnupg lsb-release software-properties-common #安装 安装docker时需要的工具,如果没有这些工具,下面的一些命令会执行失败 curl -fsSL https://download.docker.com/linux/…

webrtc入门系列(五)amazon-kinesis-video-streams-webrtc-sdk-c编译

《webrtc入门系列(一)easy_webrtc_server 入门环境搭建》 《webrtc入门系列(二)easy_webrtc_server 入门example测试》 《webrtc入门系列(三)云服务器coturn环境搭建》 《webrtc入门系列(四&…

【MySQL】存储引擎有哪些?区别是什么?

频率难度60%⭐⭐⭐⭐ 这个问题其实难度并不是很大,只是涉及到的相关知识比较繁杂,比如事务、锁机制等等,都和存储引擎有关系。有时还会根据场景选择不同的存储引擎。 下面笔者将会根据几个部分尽可能地讲清楚 MySQL 中的存储引擎&#xff0…

一个基于Python+Appium的手机自动化项目~~

本项目通过PythonAppium实现了抖音手机店铺的自动化询价,可以直接输出excel,并带有详细的LOG输出。 1.excel输出效果: 2. LOG效果: 具体文件内容见GitCode: 项目首页 - douyingoods:一个基于Pythonappium的手机自动化项目,实现了…