【YOLOv11】目标检测任务-实操过程
目录
- 一、torch环境安装
- 1.1 创建虚拟环境
- 1.2 启动虚拟环境
- 1.3 安装pytorch
- 1.4 验证cuda是否可用
- 二、yolo模型推理
- 2.1 下载yolo模型
- 2.2 创建模型推理文件
- 2.3 推理结果保存路径
- 三、labelimg数据标注
- 3.1 安装labelimg
- 3.2 解决浮点数报错
- 3.3 labelimg UI界面介绍
- 3.4 数据标注案例
- 四、dataset划分
- 4.1 创建数据集划分文件
- 五、yolo模型训练
- 5.1 创建模型训练文件
- 5.2 创建数据配置文件
- 5.3 训练结果展示
- 5.3.1 出现报错:
- 5.3.2 解决方案:
- 5.3.4 成功训练:
一、torch环境安装
1.1 创建虚拟环境
conda create -n yolov11 python=3.11
1.2 启动虚拟环境
conda activate yolov11
1.3 安装pytorch
去官网寻找对应版本
官网:Previous PyTorch Versions | PyTorch
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.4 -c pytorch -c nvidia
1.4 验证cuda是否可用
python
import torch
torch.cuda.is_available()
二、yolo模型推理
2.1 下载yolo模型
去官网寻找对应版本
官网:ultralytics/ultralytics at v8.3.94
2.2 创建模型推理文件
在根目录新建一个python文件,取名为:detect.py
# -*- coding: utf-8 -*-
"""
@Auth : HP-Succinum@File :detect.py
@IDE :PyCharm
"""
import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO if __name__ == '__main__': # Load a model model = YOLO(model=r'E:\yolo\ultralytics-8.3.94\runs\train\exp4\weights\best.pt') model.predict(source=r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images\train\coffee-cat.jpg', save=True, show=True, )

2.3 推理结果保存路径

三、labelimg数据标注
3.1 安装labelimg
pip install labelimg
3.2 解决浮点数报错
labelimg 打框就闪退 TypeError: setValue(self, int): argument 1 has unexpected type ‘float‘_in scrollrequest bar.setvalue(bar.value() + bar.si-CSDN博客
3.3 labelimg UI界面介绍


3.4 数据标注案例
![![[科研/人因工程/ERCP横向/yolo模型部署/5.png]]](https://i-blog.csdnimg.cn/direct/ccb6b931a7e54495af026b424adafd0c.png)
![![[科研/人因工程/ERCP横向/yolo模型部署/6.png]]](https://i-blog.csdnimg.cn/direct/b2fd3e71ab7c459f9ec3dbff7f8f353f.png)
四、dataset划分
4.1 创建数据集划分文件
在根目录新建一个python文件,取名为:train_test_split.py
import os
import shutil
from sklearn.model_selection import train_test_split # 设置参数
val_size = 0.2
test_size = 0.2
postfix = 'jpg'
imgpath = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images'
txtpath = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\labels' output_train_img_folder = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images/train'
output_val_img_folder = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images/val'
output_test_img_folder = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images/test'
output_train_txt_folder = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\labels/train'
output_val_txt_folder = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\labels/val'
output_test_txt_folder = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\labels/test' # 创建输出文件夹
os.makedirs(output_train_img_folder, exist_ok=True)
os.makedirs(output_val_img_folder, exist_ok=True)
os.makedirs(output_test_img_folder, exist_ok=True)
os.makedirs(output_train_txt_folder, exist_ok=True)
os.makedirs(output_val_txt_folder, exist_ok=True)
os.makedirs(output_test_txt_folder, exist_ok=True) # 获取标签文件列表
listdir = [i for i in os.listdir(txtpath) if 'txt' in i] # 划分数据集
train_val, test = train_test_split(listdir, test_size=test_size, shuffle=True, random_state=0)
train, val = train_test_split(train_val, test_size=val_size / (1 - test_size), shuffle=True, random_state=0) # 定义文件复制函数
def copy_files(file_list, img_src_folder, txt_src_folder, img_dst_folder, txt_dst_folder): for i in file_list: try: img_source_path = os.path.join(img_src_folder, '{}.{}'.format(i[:-4], postfix)) txt_source_path = os.path.join(txt_src_folder, i) img_destination_path = os.path.join(img_dst_folder, '{}.{}'.format(i[:-4], postfix)) txt_destination_path = os.path.join(txt_dst_folder, i) shutil.copy(img_source_path, img_destination_path) shutil.copy(txt_source_path, txt_destination_path) except FileNotFoundError: print(f"文件 {img_source_path} 或 {txt_source_path} 未找到。") except Exception as e: print(f"复制文件时发生错误: {e}") # 复制训练集文件
copy_files(train, imgpath, txtpath, output_train_img_folder, output_train_txt_folder) # 复制验证集文件
copy_files(val, imgpath, txtpath, output_val_img_folder, output_val_txt_folder) # 复制测试集文件
copy_files(test, imgpath, txtpath, output_test_img_folder, output_test_txt_folder)
print("数据集划分完成!")
将数据集的图像和标签信息路径输入:
imgpath = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images'txtpath = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\labels'
五、yolo模型训练
5.1 创建模型训练文件
在根目录新建一个python文件,取名为:train.py
# -*- coding: utf-8 -*-
"""
@Auth : HP-Succinum
@File :detect.py
@IDE :PyCharm
""" import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO if __name__ == '__main__': # model.load('yolo11n.pt') # 加载预训练权重,改进或者做对比实验时候不建议打开,因为用预训练模型整体精度没有很明显的提升 model = YOLO(model=r'E:\yolo\ultralytics-8.3.94\ultralytics\cfg\models\11\yolo11.yaml') model.train(data=r'data.yaml', imgsz=640, epochs=50, batch=4, workers=0, device='', optimizer='SGD', close_mosaic=10, resume=False, project='runs/train', name='exp', single_cls=False, cache=False, )

5.2 创建数据配置文件
训练数据配置文件,在根目录创建一个data.yaml文件
# train images (relative to 'path') 8 images
train: E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images\train # val images (relative to 'path') 4 images
val: E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images\val # number of class
nc: 1 # class names
names: ['cat']

5.3 训练结果展示
5.3.1 出现报错:
训练进程因 OpenMP 库的初始化问题而终止,最终退出代码为 3
日志里的错误信息 OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized. 表明,程序尝试多次初始化 OpenMP 运行时库 libiomp5md.dll,这往往是因为多个 OpenMP 运行时库被链接到程序里,可能会使性能下降或者产生错误的结果。

5.3.2 解决方案:
在train.py文件的开头加入以下代码
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'
故当前train.py文件为:
# -*- coding: utf-8 -*-
"""
@Auth : HP-Succinum@File :detect.py
@IDE :PyCharm
""" import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE' if __name__ == '__main__': model = YOLO(model=r'E:\yolo\ultralytics-8.3.94\ultralytics\cfg\models\11\yolo11.yaml') # 加载预训练权重,改进或者做对比实验时候不建议打开,因为用预训练模型整体精度没有很明显的提升 model.load('yolo11n.pt') model.train(data=r'data.yaml', imgsz=640, epochs=50, batch=4, workers=0, device='', optimizer='SGD', close_mosaic=10, resume=False, project='runs/train', name='exp', single_cls=False, cache=False, )
5.3.4 成功训练:

相关文章:
【YOLOv11】目标检测任务-实操过程
目录 一、torch环境安装1.1 创建虚拟环境1.2 启动虚拟环境1.3 安装pytorch1.4 验证cuda是否可用 二、yolo模型推理2.1 下载yolo模型2.2 创建模型推理文件2.3 推理结果保存路径 三、labelimg数据标注3.1 安装labelimg3.2 解决浮点数报错3.3 labelimg UI界面介绍3.4 数据标注案例…...
C++_STL之vector篇
一、vector的常见用法 注:C中若使用vector需包含头文件<vector>. 1.vector的构造函数 int n 10,ret1;vector<int> nums(n,ret); //n表示vector初始的容量 ret表示vector中初始化的值for (auto e : nums)cout << e << " "; 扩展…...
Imgui处理glfw的鼠标键盘的方法
在Imgui初始化时,会重新接手glfw的键盘鼠标事件。也就是遇到glfw的键盘鼠标事件时,imgui先会运行自己的处理过程,然后再去处理用户自己注册的glfw的键盘鼠标事件。 看imgui_impl_glfw.cpp源码的安装回调函数部分代码 void ImGui_ImplGlfw_In…...
【松子悲剧的七层本质】
松子悲剧的七层本质 核心命题:松子的悲剧是人性与社会结构的双重绞杀,本质是“爱的异化”与“自我消解”的终极悖论。 第一层:家庭缺爱的童年烙印 现象:松子因父亲对病弱妹妹的偏爱,长期处于情感匮乏状态,…...
sqli-labs靶场 less 9
文章目录 sqli-labs靶场less 9 时间盲注 sqli-labs靶场 每道题都从以下模板讲解,并且每个步骤都有图片,清晰明了,便于复盘。 sql注入的基本步骤 注入点注入类型 字符型:判断闭合方式 (‘、"、’、“”…...
2-1 MATLAB鮣鱼优化算法ROA优化LSTM超参数回归预测
本博客来源于CSDN机器鱼,未同意任何人转载。 更多内容,欢迎点击本专栏目录,查看更多内容。 目录 0.ROA原理 1.LSTM程序 2.ROA优化LSTM 3.主程序 4.结语 0.ROA原理 具体原理看原文,但是今天咱不用知道具体原理,只…...
fircrawl本地部署
企业内部的网站作为知识库给dify使用,使用fircrawl来爬虫并且转换为markdown。 git clone https://github.com/mendableai/firecrawl.gitcd ./firecrawl/apps/api/ cp .env.example .env cd ~/firecrawl docker compose up -d 官方: https://githu…...
Labview学习记录
1.快捷键 ctrlR 运行 ctrlB 去除断线 ctrlH 即时帮助 ctrlE 前后面板切换 2.画面移动 ctrlshift鼠标左键...
【Golang】第八弹----面向对象编程
🔥 个人主页:星云爱编程 🔥 所属专栏:Golang 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 前言:Go语言面向对象编程说明 Golang也支持面向对…...
java基础以及内存图
java基础 命名: 大驼峰:类名 小驼峰:变量名方法名等其他的 全部大写:常量名字.. // 单行注释 /**/ 多行注释 变量类型 变量名 一、基本类型(8个) 整数:byte-8bit short-16bit int 32-b…...
【嵌入式学习3】TCP服务器客户端 - UDP发送端接收端
目录 1、TCP TCP特点 TCP三次握手(建立TCP连接): TCP四次握手【TCP断开链接的时候需要经过4次确认】: TCP网络程序开发流程 客户端开发:用户设备上的程序 服务器开发:服务器设备上的程序 2、UDP 为…...
Linux之基础知识
目录 一、环境准备 1.1、常规登录 1.2、免密登录 二、Linux基本指令 2.1、ls命令 2.2、pwd命令 2.3、cd命令 2.4、touch命令 2.5、mkdir命令 2.6、rmdir和rm命令 2.7man命令 2.8、cp命令 2.9、mv命令 2.10、cat命令 2.11、echo命令 2.11.1、Ctrl r 快捷键 2…...
llamafactory微调效果与vllm部署效果不一致如何解决
在llamafactory框架训练好模型之后,自测chat时模型效果不错,但是部署到vllm模型上效果却很差 这实际上是因为llamafactory微调时与vllm部署时的对话模板不一致导致的。 对应的llamafactory的代码为 而vllm启动时会采用大模型自己本身设置的对话模板信息…...
Python控制结构详解
前言 一、控制结构概述 二、顺序结构 三、选择结构(分支结构) 1. 单分支 if 2. 双分支 if-else 3. 多分支 if-elif-else 4.实际应用: 四、循环结构 1. for循环 2. while循环 3. 循环控制语句 五、异常处理(try-except)…...
Mysql-经典实战案例(11):深度解析Sysbench压测(从入门到MySQL服务器性能验证)
引言 如何用Sysbench压测满足mysql生产运行的服务器? Sysbench返回的压测结果如何解读? 别急,本文会教大家如何使用并且如何解读压测的结果信息,如何对mysql服务器进行压测! 一、Sysbench核心功能全景解析 1.1 工…...
WebSocket通信的握手阶段
1. 客户端建立连接时,通过 http 发起请求报文,报文表示请求服务器端升级协议为 WebSocket,与普通的 http 请求协议略有区别的部分在于如下的这些协议头: 上述两个字段表示请求服务器端升级协议为 websocket 协议。 2. 服务器端响…...
分布式ID服务实现全面解析
分布式ID生成器是分布式系统中的关键基础设施,用于在分布式环境下生成全局唯一的标识符。以下是各种实现方案的深度解析和最佳实践。 一、核心需求与设计考量 1. 核心需求矩阵 需求 重要性 实现难点 全局唯一 必须保证 时钟回拨/节点冲突 高性能 高并发场景…...
dom0运行android_kernel: do_serror of panic----failed to stop secondary CPUs 0
问题描述: 从日志看出,dom0运行android_kernel,刚开始运行就会crash,引发panic 解决及其原因分析: 最终问题得到解决,发现是前期在调试汇编阶段代码时,增加了汇编打印的指令,注释掉这些指令,问题得到解决。…...
HarmonyOS NEXT——【鸿蒙原生应用加载Web页面】
鸿蒙客户端加载Web页面: 在鸿蒙原生应用中,我们需要使用前端页面做混合开发,方法之一是使用Web组件直接加载前端页面,其中WebView提供了一系列相关的方法适配鸿蒙原生与web之间的使用。 效果 web页面展示: Column()…...
HTML输出流
HTML 输出流 JavaScript 中**「直接写入 HTML 输出流」**的核心是通过 document.write() 方法向浏览器渲染过程中的数据流动态插入内容。以下是详细解释: 一、HTML 输出流的概念 1. 动态渲染过程 HTML 文档的加载是自上而下逐行解析的。当浏览器遇到 <script&…...
std::countr_zero
一 基本功能 1 作用 std::countr_zero 是 C++20 标准引入的位操作函数,用于计算无符号整数的二进制表示中末尾零(Trailing Zeros)的数量。 定义:位于 <bit> 头文件中,是标准库的一部分。 2 示例 #include <bit> unsigned int x = 12; // 二进…...
优选算法的慧根之翼:位运算专题
专栏:算法的魔法世界 个人主页:手握风云 一、位运算 基础位运算 共包含6种&(按位与,有0就是0)、|(按位或有1就是1)、^(按位异或,相同为0,相异为1)、~(按位取反,0变成1,1变成0)、<<(左…...
图论问题集合
图论问题集合 寻找特殊有向图(一个节点最多有一个出边)中最大环路问题特殊有向图解析算法解析步骤 1 :举例分析如何在一个连通块中找到环并使用时间戳计算大小步骤 2 :抽象成算法注意 实现 寻找特殊有向图(一个节点最多…...
【数据结构】栈 与【LeetCode】20.有效的括号详解
目录 一、栈1、栈的概念及结构2、栈的实现3、初始化栈和销毁栈4、打印栈的数据5、入栈操作---栈顶6、出栈---栈顶6.1栈是否为空6.2出栈---栈顶 7、取栈顶元素8、获取栈中有效的元素个数 二、栈的相关练习1、练习2、AC代码 个人主页,点这里~ 数据结构专栏,…...
实时目标检测新突破:AnytimeYOLO——随时中断的YOLO优化框架解析
目录 一、论文背景与核心价值 二、创新技术解析 2.1 网络结构革新:Transposed架构 2.2 动态路径优化算法 三、实验结果与性能对比 3.1 主要性能指标 3.2 关键发现 四、应用场景与部署实践 4.1 典型应用场景 4.2 部署注意事项 五、未来展望与挑战 一、论文背景与核心…...
Redis设计与实现-哨兵
哨兵模式 1、启动并初始化sentinel1.1 初始化服务器1.2 使用Sentinel代码1.3 初始化sentinel状态1.4 初始化sentinel状态的master属性1.5 创建连向主服务器的网络连接 2、获取主服务器信息3、获取从服务器的信息4、向主从服务器发送信息5、接受主从服务器的频道信息6、检测主观…...
C++进阶——封装哈希表实现unordered_map/set
与红黑树封装map/set基本相似,只是unordered_map/set是单向迭代器,模板多传一个HashFunc。 目录 1、源码及框架分析 2、模拟实现unordered_map/set 2.1 复用的哈希表框架及Insert 2.2 iterator的实现 2.2.1 iteartor的核心源码 2.2.2 iterator的实…...
第4.1节:使用正则表达式
1 第4.1节:使用正则表达式 将正则表达式用斜杠括起来,就能用作模式。随后,该正则表达式会与每条输入记录的完整文本进行比对。(通常情况下,它只需匹配文本的部分内容就能视作匹配成功。)例如,以…...
【算法day25】 最长有效括号——给你一个只包含 ‘(‘ 和 ‘)‘ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。
32. 最长有效括号 给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 https://leetcode.cn/problems/longest-valid-parentheses/ 2.方法二:栈 class Solution { public:int longestValid…...
Jenkins + CICD流程一键自动部署Vue前端项目(保姆级)
git仓库地址:参考以下代码完成,或者采用自己的代码。 南泽/cicd-test 拉取项目代码到本地 使用云服务器或虚拟机采用docker部署jenkins 安装docker过程省略 采用docker部署jenkins,注意这里的命令,一定要映射docker路径,否则无…...
