【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]]

![[科研/人因工程/ERCP横向/yolo模型部署/6.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 成功训练:

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/75157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索 Vue 中的多语言切换:<lang-radio /> 组件详解!!!

探索 Vue 中的多语言切换&#xff1a;<lang-radio /> 组件详解 &#x1f30d; 嗨&#xff0c;大家好&#xff01;&#x1f44b; 今天我们来聊聊如何在 Vue 项目中实现一个优雅的多语言切换功能——<lang-radio /> 组件。这是一个小而美的组件&#xff0c;出现在登…

grafana 配置页面告警

添加告警规则 1.登录grafana 点击 Alerting > Alert rules 点击 New alert rule 2.填写告警规则名字 3.配置告警规则 选择数据源为 Loki 单机 Builder 单机Label brower 单机 node_name 标签&#xff0c;选择一个主机&#xff0c;选好后单机 Show logs 这时候查询语…

关于JVM和OS中的栈帧的区别和内存浅析

关于JVM和OS中的栈帧的区别和内存浅析 刚看了黑马JVM中的栈帧的讲解&#xff0c;感觉和自己理解的栈帧有一定出入&#xff0c;查询资料研究了一下发现的确有天壤之别&#xff0c;可惜黑马并没有讲。 故写下这篇文章巩固一下, OS的栈帧&#xff1a; ​ OS的栈帧会在调用一个函…

Python FastApi(7):请求体

1 多个参数 1.1 混合使用 Path、Query 和请求体参数 首先&#xff0c;毫无疑问地&#xff0c;你可以随意地混合使用 Path、Query 和请求体参数声明&#xff0c;FastAPI 会知道该如何处理。你还可以通过将默认值设置为 None 来将请求体参数声明为可选参数&#xff1a; from ty…

告别枯燥工作,走向自动化

嘿&#xff0c;小伙伴们&#xff01;今天给你们介绍两款超实用的RPA办公自动化软件&#xff0c;用它们&#xff0c;再也不用像机器一样做重复劳动啦&#xff0c;超省时间&#xff01; 工具名称&#xff1a;影刀RPA&#xff08;类似产品&#xff0c;八爪鱼 RPA&#xff0c;操作上…

一种C# Winform的UI处理

效果 圆角 阴影 突出按钮 说明 这是一种另类的处理&#xff0c;不是多层窗口 也不是WPF 。这种方式的特点是比较简单&#xff0c;例如圆角、阴影、按钮等特别容易修改过。其实就是html css DirectXForm。 在VS中如下 圆角和阴影 然后编辑这个窗体的Html模板&#xff0c…

HarmonyOS-ArkUI Navigation (导航组件)-第一部分

导航组件主要实现页面间以及组件内部的界面跳转&#xff0c;支持在不同的组件间进行参数的传递&#xff0c;提供灵活的跳转栈操作&#xff0c;从而便捷的实现对不同页面的访问和复用。 我们之前学习过Tabs组件&#xff0c;这个组件里面也有支持跳转的方式&#xff0c;Navigati…

华为开源自研AI框架昇思MindSpore应用案例:基于MindSpore框架实现PWCNet光流估计

如果你对MindSpore感兴趣&#xff0c;可以关注昇思MindSpore社区 1 环境准备 1.进入ModelArts官网 云平台帮助用户快速创建和部署模型&#xff0c;管理全周期AI工作流&#xff0c;选择下面的云平台以开始使用昇思MindSpore&#xff0c;可以在昇思教程中进入ModelArts官网 创建…

虚幻基础:UI

文章目录 控件蓝图可以装载其他控件蓝图可以安装其他蓝图接口 填充&#xff1a;相对于父组件填充水平框尺寸—填充—0.5&#xff1a;改变填充的尺寸填充—0.5&#xff1a;改变与父组件的距离 锚点&#xff1a;相对于父组件的控件坐标系原点&#xff0c;屏幕比例改变时&#xff…

监控平台——SkyWalking部署

一、环境准备 先下载SkyWalking安装包&#xff0c;需要注意的是SkyWalking 版本在10.X以上使用的nacos-client是2.X&#xff0c;如果安装的Nacos版本是1.X就会存在兼容性的问题。由于本人使用的SpringBoot项目是2.7.X版本&#xff0c;安装的Nacos版本只能是1.X版本的&#xff…

热门索尼S-Log3电影感氛围旅拍LUTS调色预设 Christian Mate Grab - Sony S-Log3 Cinematic LUTs

热门索尼S-Log3电影感氛围旅拍LUTS调色预设 Christian Mate Grab – Sony S-Log3 Cinematic LUTs 我们最好的 Film Look S-Log3 LUT 的集合&#xff0c;适用于索尼无反光镜相机。无论您是在户外、室内、风景还是旅行电影中拍摄&#xff0c;这些 LUT 都经过优化&#xff0c;可为…

自动化工作流工具的综合对比与推荐

最近收到很多朋友私信我说&#xff1a;“刷短视频的时候&#xff0c;总是刷到自动化工作流的工具&#xff0c;有好多直播间都在宣传&#xff0c;不知道哪款工具好”。我花了点时间&#xff0c;做了一下测试&#xff0c;大家可以参考一下&#xff0c;以下内容&#xff1a; 以下…

fircrawl本地部署

企业内部的网站作为知识库给dify使用&#xff0c;使用fircrawl来爬虫并且转换为markdown。 ​ git clone https://github.com/mendableai/firecrawl.gitcd ./firecrawl/apps/api/ cp .env.example .env cd ~/firecrawl docker compose up -d 官方&#xff1a; https://githu…

day17 学习笔记

文章目录 前言一、数组的增删改查1.resize函数2.append函数3.insert函数4.delete函数5.argwhere函数6.unique函数 二、统计函数1.amax&#xff0c;amin函数2.ptp函数3.median函数4.mean函数5.average函数6.var&#xff0c;std函数 前言 通过今天的学习&#xff0c;我掌握了num…

CentOS 8 Stream 配置在线yum源参考 —— 筑梦之路

CentOS 8 Stream ISO 文件下载地址&#xff1a;http://mirrors.aliyun.com/centos-vault/8-stream/isos/x86_64/CentOS-Stream-8-20240603.0-x86_64-dvd1.isoCentOS 8 Stream 网络引导ISO 文件下载地址&#xff1a;http://mirrors.aliyun.com/centos-vault/8-stream/isos/x86_6…

网络原理-TCP/IP

网络原理学习笔记&#xff1a;TCP/IP 核心概念 本文是我在学习网络原理时整理的笔记&#xff0c;主要涵盖传输层、网络层和数据链路层的核心协议和概念&#xff0c;特别是 TCP, UDP, IP, 和以太网。 一、传输层 (Transport Layer) 传输层负责提供端到端&#xff08;进程到进…

EF Core 执行原生SQL语句

文章目录 前言一、执行查询&#xff08;返回数据&#xff09;1&#xff09; 使用 FromSqlRaw或 FromSqlInterpolated 方法&#xff0c;适用于 DbSet<T>&#xff0c;返回实体集合。2&#xff09;结合 LINQ 查询3&#xff09;执行任意原生SQL查询语句&#xff08;使用ADO.N…

Unity LOD Group动态精度切换算法(基于视锥+运动速度)技术详解

一、动态LOD技术背景与核心挑战 1. 传统LOD系统的局限 静态阈值切换&#xff1a;仅基于距离的切换在动态场景中表现不佳 视觉突变&#xff1a;快速移动时LOD层级跳变明显 性能浪费&#xff1a;静态算法无法适应复杂场景变化 对惹&#xff0c;这里有一个游戏开发交流小组&…

MyBatis复杂查询——一对一、一对多

目录 &#xff08;一&#xff09;复杂查询&#xff1a;1对1关系 【任务】数据库里有学生表(student)和学生证信息表(student_card)&#xff0c;表结构如下所示&#xff0c;要求使用MyBatis框架查询所有的学生信息以及每位学生的学生证信息 解决方案1&#xff1a;关联查询实现…

【服务端】使用conda虚拟环境部署Django项目

写在开头 为了与客户端的Deep search配合&#xff0c;需要整一个后台管理来保存和管理deep search的数据资料。选择前端框架Vue-Vben-Admin Django后台服务来实现这个项目。 废话结束&#xff0c;从零开始。。。。 一、环境搭建 1. 安装 Anaconda 下载 Anaconda&#xff1…