【无标题】如何使用yolo-v8 实现自定义目标检测

devtools/2024/10/25 11:54:43/

如何使用yolo-v8 实现自定义目标检测

  • 训练数据集准备
  • 搭建环境
    • 安装anaconda
    • 配置python虚拟环境
    • 安装yolo-v8以及labelimg图片标注工具
  • 编写配置文件和训练脚本文件
    • 编写yaml配置文件(文件名为dataset.yaml)
    • 编写模型训练代码(文件名称为yolotrain.py)
    • 运行训练数据集获得模型
  • 测试训练好的数据模型
    • 编写测试代码(文件名称yolotest.py)
    • 运行测试程序获取结果

训练数据集准备

在kaggle平台或者其他数据集的平台搜索相应的数据集,也可以自己拍摄大量的照片整理成数据集。
整理数据集的时候要注意数据标签的各式,必须是yolo-v8对应的格式,如果下载的数据集中自带的数据标签不是yolo-v8的格式(例如pascal voc),需要我们将数据格式转化为yolo-v8的格式

搭建环境

安装anaconda

下载anaconda,清华源下载链接:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
在下载目录下找到对应版本(linux、mac、windows)的anaconda软件进行下载,下载之后按照常规的安装步骤将软件安装到主机上。

配置python虚拟环境

打开anaconda 的“anaconda prompt”命令行窗口
创建python3.8的虚拟环境:conda create -n myenv python=3.8
激活创建的虚拟环境:conda activate myenv
退出创建的虚拟环境:conda deactivate

安装yolo-v8以及labelimg图片标注工具

打开"anaconda prompt"命令行窗口,进入虚拟环境:
conda activate myenv
切换镜像源到清华源:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
pip config set install trusted-host pypi.tuna.tsinghua.edu.cn
安装yolo-v8:
pip install ultralytics
安装labelimg图片标注工具:
pip install labelimg

编写配置文件和训练脚本文件

编写yaml配置文件(文件名为dataset.yaml)

# 训练数据路径
train: E:\Mypro\*****
# 验证数据路径
val: E:\Mypro\*****
# 测试数据路径
test: E:\Mypro\*****
# 目标种类数目
nc: 10
# 目标名称
# dog
# cat
# horse
names: ['dog','cat','horse']

编写模型训练代码(文件名称为yolotrain.py)

from ultralytics import YOLO  # 导入yolo模块
model = YOLO('yolov8n.pt')  # 用于加载yolo-v8的通用预训练模型
model.train(data='dataset.yaml',epochs=100)		# 加载上步编写的yaml配置文件,获取其中配置参数内容
model.val()		# 使用验证集验证效果

运行训练数据集获得模型

运行yolotrain.py开始训练模型,大概需要稍长时间具体由数据集大小而定,训练完成后会在当前目录下产生一个runs/detect/train目录,目录中weights目录中保存了训练好的模型文件best.pt和last.pt,一般使用best.pt进行目标识别应用。

测试训练好的数据模型

编写测试代码(文件名称yolotest.py)

from ultralytics import YOLO # 导入yolo模块
model = YOLO('best.pt')		# 加载训练好的模型
# 识别图片或者视频中的目标
model = predict('001.jpg',save=True)
model = predict('002.mp4', save=True)
# 只识别自己指定的0,1类别的目标,line_width表示识别框字体大小
model = predict('003.jpg',save=True,classes = [0,1],line_width = 30)
model = predict('004.mp4',save=True,classes = [0,1],line_width = 30)

运行测试程序获取结果

运行yolotest.py,识别结果保存在在当面目录下的runs/detect/predict中,打开图片或者视频文件就可以看到圈出来目标的图片或者视频文件。


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

相关文章

CICD 持续集成与持续交付

目录 一 CICD是什么 1.1 持续集成(Continuous Integration) 1.2 持续部署(Continuous Deployment) 1.3 持续交付(Continuous Delivery) 二 git工具使用 2.1 git简介 2.2 git 工作流程 三 部署git …

数理统计(第三章:假设检验的基本概念)

目录 假设检验:对母体的分布或者母体分布中的未知参数提出某种假设,由子样推断是否接受该种假设 假设检验的基本概念(概率性质的反证法) 假设检验:对母体的分布或者母体分布中的未知参数提出某种假设,由子…

NX二次开发---在保存时导出PDF并打开

该工程为在保存时执行开发的功能,函数入口点ufput。其他还有新建、打开、另存等都可以加入开发的操作,具体看UF_EXIT下的介绍。 用户出口是一个可选特性,允许你在NX中某些预定义的位置(或出口)自动运行Open C API程序。如果你进入其中一个出口,NX会检查你是否定义了指向Op…

Flutter按钮控件(六)

1、常见按钮 import package:flutter/material.dart;void main() {runApp(const MaterialApp(home: MyHomePage(title: "按钮控件"),)); }class MyHomePage extends StatelessWidget {const MyHomePage({super.key, required this.title});final String title;overr…

简述 C# 二维数据集合 List 的创建、遍历、修改、输出

简述 C# 二维数据集合 List 的创建、遍历、修改、输出 1、为什么要使用列表 List2、引入命名空间3、声明一维列表 List4、声明创建一个二维列表 List,数据类型 int5、 简单访问二维 List 元素或值6、遍历二维列表,控制台输出7、遍历二维列表,…

vscode离线状态ssh连接不断输入密码登不上:配置commit_id

如题,vscode在一个离线服务器上,通过remote-ssh登录远程服务器,不断弹出密码框,总是进不去,后来了解到主要是不同vscode版本需要下载对应抑制commit-id的vscode-server-linux-x64.tar.gz包。 1)vscode, 点…

【多类别分类中的准确率召回率平均策略】

文章目录 1. 机器学习中的微平均策略(Micro Average Strategy)2. 机器学习中的宏平均策略(Macro Average Strategy)3、weighted 平均策略 1. 机器学习中的微平均策略(Micro Average Strategy) 在机器学习和…

业务开发常见问题-并发工具类

hello,大家好,本讲我们一起聊一下常见的几个并发工具类的使用和坑! 在日常工作中,我们经常会遇到多线程并发问题,比如ThreadLocal、锁、ConcurrentHashMap、CopyOnWriteArrayList等。那么如何正常的使用呢?…