当前位置: 首页 > article >正文

YOLO11 使用入门

YOLO12 使用入门

  • 1. 源码下载
  • 2. 权重下载
  • 3. 环境配置
  • 4. 例程测试
    • 4.1. 目标检测
      • 4.1.1. 源文件 model
      • 4.1.2. 结果Results
      • 4.1.3. 边界框 Boxes
    • 2.2. 图像分割
      • 4.2.1. 推理 model.predict
      • 4.2.2. 掩码 Masks


1. 源码下载

之前介绍了《目标检测 YOLOv5 使用入门》
在这里插入图片描述

现在是 2024.12.20 目前已经出到了 YOLO11,提升还是明显的

这里整理了含例程的仓库(基于 ultralytics-v8.3.51

git clone https://gitee.com/JoveH-H/ultralytics-yolo11.git

官方源码放在 Github 上,这里用 Gitee 的同步仓库,国内快一点

git clone https://gitee.com/JoveH-H/ultralytics.git

2. 权重下载

当然也可以去 官方 和其他地方下载
在这里插入图片描述

含例程的仓库 ultralytics-yolo11 已经包含了说需要的 最小模型 yolo11n
重在了解如何使用,实际效果自己应用再琢磨,就以n模型举例就行了

在这里插入图片描述


3. 环境配置

官方建议python3.8以上,因为有些语法旧版本不支持
以python3.7为例,需要对 := 修改成先赋值再用于判断

还有就是在Python 3.8及以上版本中,importlib.metadata 是标准库的一部分
但在Python 3.7及以下版本中,它并不存在,需要通过 importlib_metadata 这个第三方包来支持

最后屏蔽每次提示版本过低就行了,烦


4. 例程测试


4.1. 目标检测

在自定义训练目标检测任务前,先让程序正常跑起来,新建个测试例程 test_det.py

from ultralytics import YOLO# 加载模型
model = YOLO("weights/det/yolo11n.pt")# 模型推理
results = model("ultralytics/assets/zidane.jpg")# 结果可视化
for i in range(len(results)):# 打印边框result_lists = results[i].boxes.data.tolist()for j in range(len(result_lists)):x1, y1 = round(result_lists[j][0]), round(result_lists[j][1])x2, y2 = round(result_lists[j][2]), round(result_lists[j][3])conf = round(result_lists[j][4], 2)cls = int(result_lists[j][5])print('Img{} det{}: {} conf:{} box:({}, {}) ({}, {})'.format(i+1, j+1, results[i].names[cls], conf, x1, y1, x2, y2))# 展示结果results[i].show()

利用 ultralytics/assets/zidane.jpg 的图片,推理检测,打印边框和展示结果

Img1 det1: person conf:0.84 box:(748, 42) (1148, 711)
Img1 det2: person conf:0.78 box:(149, 203) (1125, 715)
Img1 det3: tie conf:0.45 box:(361, 438) (525, 717)

在这里插入图片描述

结果和其他参数的更多说明参考 官方说明


4.1.1. 源文件 model

资料来源示例类型说明
图像‘image.jpg’str 或 Path单个图像文件。
网址‘https://ultralytics.com/images/bus.jpg’str图片的 URL。
截图‘screen’str截图
PILImage.open(‘image.jpg’)PIL.Image具有 RGB 通道的 HWC 格式。
OpenCVcv2.imread(‘image.jpg’)np.ndarray带有 BGR 频道的 HWC 格式 uint8 (0-255).
numpynp.zeros((640,1280,3))np.ndarray带有 BGR 频道的 HWC 格式 uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.Tensor带 RGB 通道的 BCHW 格式 float32 (0.0-1.0).
CSV‘sources.csv’str 或 Path包含图像、视频或目录路径的 CSV 文件。
视频‘video.mp4’str 或 PathMP4 和 AVI 等格式的视频文件
目录‘path/’str 或 Path包含图像或视频的目录路径。
球体‘path/*.jpg’str全局模式来匹配多个文件。使用 * 字符作为通配符。
YouTube‘https://youtu.be/LNwODJXcvt4’strYouTube 视频的 URL。
‘rtsp://example.com/media.mp4’str流媒体协议(如 RTSP、RTMP、TCP)的 URL 或 IP 地址。
多流‘list.streams’str 或 Path*.streams 文本文件,每行一个流 URL,即 8 个流将以 8 的批处理大小运行。
网络摄像头0int要进行推理的已连接摄像机设备的索引。

4.1.2. 结果Results

Results 对象具有以下属性

属性类型说明
orig_imgnumpy.ndarray原始图像的 numpy 数组。
orig_shapetuple原始图像的形状,格式为(高、宽)。
boxesBoxes, optional包含检测边界框的方框对象。
masksMasks, optional包含检测掩码的掩码对象。
probsProbs, optionalProbs 对象,包含分类任务中每个类别的概率。
keypointsKeypoints, optional关键点对象,包含每个对象的检测关键点。
obbOBB, optional包含定向包围盒的 OBB 对象。
speeddict每幅图像的预处理、推理和后处理速度字典,单位为毫秒。
namesdict类名字典。
pathstr图像文件的路径。

Results 对象有以下方法:

方法返回类型说明
update()None更新结果对象的方框、掩码和 probs 属性。
cpu()Results在CPU 内存中返回包含所有张量的 Results 对象副本。
numpy()Results返回结果对象的副本,其中所有张量均为 numpy 数组。
cuda()Results在GPU 内存中返回包含所有张量的 Results 对象副本。
to()Results返回带有指定设备和 dtype 上张量的 Results 对象副本。
new()Results返回一个具有相同图像、路径和名称的新结果对象。
plot()numpy.ndarray绘制检测结果。返回注释图像的 numpy 数组。
show()None在屏幕上显示带注释的结果。
save()None将注释结果保存到文件中。
verbose()str返回每个任务的日志字符串。
save_txt()None将预测结果保存到 txt 文件中。
save_crop()None将裁剪后的预测保存到 save_dir/cls/file_name.jpg.
summary()List[Dict]词典列表,每个词典都包含结果的摘要信息
to_df()DataFrame将结果转换为 Pandas 数据帧。
to_csv()str将结果转换为 CSV(逗号分隔值)格式。
to_xml()str将结果转换为 XML(可扩展标记语言)格式。
to_json()str将结果转换为 JSON 格式。
to_sql()None将结果转入 SQL 数据库。

4.1.3. 边界框 Boxes

Boxes 对象可用于索引、操作和将边界框转换为不同格式

名称类型说明
cpu()方法将对象移至CPU 内存。
numpy()方法将对象转换为 numpy 数组。
cuda()方法将对象移至CUDA 内存。
to()方法将对象移动到指定设备。
xyxy财产 (torch.Tensor)以 xyxy 格式返回方框。
conf财产 (torch.Tensor)返回方框的置信度值。
cls财产 (torch.Tensor)返回方框的类值。
id财产 (torch.Tensor)返回盒子的轨道 ID(如果有)。
xywh财产 (torch.Tensor)以 xywh 格式返回方框。
xyxyn财产 (torch.Tensor)以 xyxy 格式返回按原始图像大小归一化的方框。
xywhn财产 (torch.Tensor)以 xywh 格式返回按原始图像大小归一化的方框。

2.2. 图像分割

在自定义训练图像分割任务前,先让程序正常跑起来,新建个测试例程 test_seg.py

from ultralytics import YOLO
import numpy as np
import cv2# 加载模型
model = YOLO("weights/seg/yolo11n-seg.pt")# 模型预测
results = model.predict(source='ultralytics/assets/',imgsz=640,project='resources/predict/seg/examples',name='exp',save=True,conf=0.3,iou=0.7)# 打印边框
for i in range(len(results)):print()# 目标检测boxes_lists = results[i].boxes.data.tolist()# 图像分割masks_lists = results[i].masks.data.tolist()for j in range(len(boxes_lists)):# 打印边框x1, y1 = round(boxes_lists[j][0]), round(boxes_lists[j][1])x2, y2 = round(boxes_lists[j][2]), round(boxes_lists[j][3])conf = round(boxes_lists[j][4], 2)cls = int(boxes_lists[j][5])print('Img{} det{}: {} conf:{} box:({}, {}) ({}, {})'.format(i+1, j+1, results[i].names[cls], conf, x1, y1, x2, y2))# 显示分类img = results[i].plot()height, width, channel = img.shapemask_array = np.array(masks_lists[j], dtype=np.uint8)mask_array = cv2.resize(mask_array, (width, height), interpolation=cv2.INTER_AREA)image = cv2.add(img, np.zeros(np.shape(img), dtype=np.uint8), mask=mask_array)cv2.imshow('1', image)cv2.waitKey(0)

预测资源里的两个图片,结果保留在 resources/predict/seg/examples
然后打印目标检测的边框,显示每个目标的图像分割

在这里插入图片描述

在这里插入图片描述


4.2.1. 推理 model.predict

推理参数

参数类型默认值说明
sourcestr‘ultralytics/assets’指定推理的数据源。可以是图像路径、视频文件、目录、URL 或用于实时馈送的设备 ID。支持多种格式和来源,可灵活应用于不同类型的输入。
conffloat0.25设置检测的最小置信度阈值。如果检测到的对象置信度低于此阈值,则将不予考虑。调整该值有助于减少误报。
ioufloat0.7非最大抑制 (NMS) 的交叉重叠(IoU) 阈值。较低的数值可以消除重叠的方框,从而减少检测次数,这对减少重复检测非常有用。
imgszint 或 tuple640定义用于推理的图像大小。可以是一个整数 640 或一个(高度、宽度)元组。适当调整大小可以提高检测效率 精确度 和处理速度。
halfboolFalse启用半精度(FP16)推理,可加快支持的 GPU 上的模型推理速度,同时将对精度的影响降至最低。
devicestrNone指定用于推理的设备(例如:…)、 cpu, cuda:0 或 0).允许用户选择CPU 、特定GPU 或其他计算设备执行模型。
batchint1指定推理的批量大小(仅当来源为 目录、视频文件或 .txt 文件).更大的批次规模可以提供更高的吞吐量,缩短推理所需的总时间。
max_detint300每幅图像允许的最大检测次数。限制模型在单次推理中可以检测到的物体总数,防止在密集场景中产生过多的输出。
vid_strideint1视频输入的帧间距。允许跳过视频中的帧,以加快处理速度,但会牺牲时间分辨率。数值为 1 时会处理每一帧,数值越大越跳帧。
stream_bufferboolFalse决定是否对接收到的视频流帧进行排队。如果 False,旧帧会被丢弃,以容纳新帧(针对实时应用进行了优化)。如果为 “真”,则在缓冲区中排队等待新帧,确保不会跳过任何帧,但如果推理的 FPS 低于流的 FPS,则会导致延迟。
visualizeboolFalse在推理过程中激活模型特征的可视化,从而深入了解模型 "看到 "了什么。这对调试和模型解释非常有用。
augmentboolFalse可对预测进行测试时间增强(TTA),从而在牺牲推理速度的情况下提高检测的鲁棒性。
agnostic_nmsboolFalse启用与类别无关的非最大抑制 (NMS),可合并不同类别的重叠方框。这在多类检测场景中非常有用,因为在这种场景中,类的重叠很常见。
classeslist[int]None根据一组类别 ID 过滤预测结果。只有属于指定类别的检测结果才会返回。这对于在多类检测任务中集中检测相关对象非常有用。
retina_masksboolFalse返回高分辨率分割掩码。返回的掩码 (masks.data) 如果启用,将与原始图像大小相匹配。如果禁用,它们将与推理过程中使用的图像大小一致。
embedlist[int]None指定从中提取特征向量或嵌入的层。这对聚类或相似性搜索等下游任务非常有用。
projectstrNone保存预测结果的项目目录名称,如果 save 已启用。
namestrNone预测运行的名称。用于在项目文件夹内创建一个子目录,在下列情况下存储预测输出结果 save 已启用。

4.2.2. 掩码 Masks

Masks 对象可用于索引、操作和将掩码转换为线段

名称类型说明
cpu()方法返回CPU 内存中的掩码tensor 。
numpy()方法以 numpy 数组形式返回掩码tensor 。
cuda()方法返回GPU 内存中的掩码tensor 。
to()方法返回具有指定设备和 dtype 的掩码tensor 。
xyn财产 (torch.Tensor)以张量表示的标准化片段列表。
xy财产 (torch.Tensor)以张量表示的像素坐标线段列表。

谢谢

相关文章:

YOLO11 使用入门

YOLO12 使用入门 1. 源码下载2. 权重下载3. 环境配置4. 例程测试4.1. 目标检测4.1.1. 源文件 model4.1.2. 结果Results4.1.3. 边界框 Boxes 2.2. 图像分割4.2.1. 推理 model.predict4.2.2. 掩码 Masks 1. 源码下载 之前介绍了《目标检测 YOLOv5 使用入门》 现在是 2024.12.2…...

汽车感性负载-智能高边钳位能量计算

随着汽车电子技术的发展,新的电子电气架构下,越来越多的执行部件在车身出现,比如电磁阀、风机、水泵、油泵、雨刮继电器等常用的执行器, 它们一般都表现为感性特点。驱动这些负载的最简单和最常见的方法是将它们连接到高边侧开关(…...

springboot树形结构 支持模糊查询,返回匹配节点和父节点,其他节点不返回

package com.me.meterdemo.ds; import java.util.ArrayList; import java.util.List;public class TreeNode {private Long id;private String name;private Long parentId;private List<TreeNode> children new ArrayList<>();// 构造方法public TreeNode(Long i…...

pythonSTL---sys

sys 是 Python 标准库中的一个内置模块&#xff0c;它提供了许多与 Python 解释器和系统环境进行交互的功能。 sys方法 1. 导入 sys 模块 在使用 sys 库的功能之前&#xff0c;需要先导入它&#xff1a; import sys2. 命令行参数 (sys.argv) sys.argv 是一个包含命令行参数…...

基于Python+Flask+MySQL+HTML的爬取豆瓣电影top-250数据并进行可视化的数据可视化平台

FlaskMySQLHTML 项目采用前后端分离技术&#xff0c;包含完整的前端&#xff0c;以flask作为后端 Pyecharts、jieba进行前端图表展示 通过MySQL收集格列数据 通过Pyecharts制作数据图表 这是博主b站发布的详细讲解&#xff0c;感兴趣的可以去观看&#xff1a;【Python爬虫可…...

Python在数据处理中的应用:从入门到精通

活动发起人小虚竹 想对你说&#xff1a; 这是一个以写作博客为目的的创作活动&#xff0c;旨在鼓励大学生博主们挖掘自己的创作潜能&#xff0c;展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴&#xff0c;那么&#xff0c;快来参加吧&#xff01…...

七大常用智能家居协议对比

如果您不知道在项目中使用哪种智能家居通信协议&#xff0c;那么进入智能家居行业可能会很困难。如果没有合适的协议将其集成到智能家居生态系统中&#xff0c;智能家居设备将无法正常工作。否则&#xff0c;您将面临硬件和软件无法满足最终用户期望的风险。协议选择不当可能会…...

996引擎-问题处理:缺失特效分割文件 ModelAtlasSplitConfigs

通常我们买的资源都是带会 ModelAtlasSplitConfigs.txt 或 sceneAtlasSplitConfigs.txt 的 但有时确实找不到的话&#xff0c;是可以用996工具生成的&#xff1a;...

异步加载错误如何解决

首先是 提供两张图 如果数据过多的情况下我在所内和住家形式频繁的来回切换 导致数据展示的不一样 大家是不是有这样的问题 这个是导致了数据展示有问题的情况 住家的情况本来是没有几层的 下面我帮大家解决一下 // 防止异步延迟 const Noop () > { } const lhl (resDa…...

R语言零基础系列教程-01-R语言初识与学习路线

代码、讲义、软件回复【R语言01】获取。 R语言初识 R是一个开放的统计编程环境&#xff0c;是一门用于统计计算和作图的语言。“一切皆是对象”&#xff0c;数据、函数、运算符、环境等等都是对象。易学&#xff0c;代码像伪代码一样简洁&#xff0c;可读性高强大的统计和可视…...

C 语言实现彩票模拟:指针与数组的巧妙运用

在 C 语言编程学习中,通过实践项目来掌握知识是非常有效的途径。本次我们聚焦于一个彩票模拟程序的实现,这不仅能让大家巩固 C 语言的基础概念,还能深入理解指针和数组在实际场景中的运用。 一、彩票模拟程序需求分析 彩票模拟程序主要模拟真实彩票抽奖的过程。具体来说,需…...

自动化测试-网页聊天室

项目介绍&#xff1a; 针对基于WebSocket协议的网页端即时通讯系统&#xff0c;主导设计并实施全流程自动化测试方案。通过构建模块化测试框架&#xff0c;完成对核心业务场景&#xff08;用户登录鉴权、消息同步、实时聊天等&#xff09;的自动化验证&#xff0c;最终达成测试…...

WPF CommunityToolkit.MVVM库的简单使用

CommunityToolkit.MVVM 是 .NET 社区工具包中的一部分&#xff0c;它为实现 MVVM&#xff08;Model-View-ViewModel&#xff09;模式提供了一系列实用的特性和工具&#xff0c;能帮助开发者更高效地构建 WPF、UWP、MAUI 等应用程序。以下是关于它的详细使用介绍&#xff1a; 1…...

ffmpeg面试题整理

1. 基础概念 问题&#xff1a;FFmpeg 是什么&#xff1f;它的核心功能有哪些&#xff1f; 编解码&#xff1a;支持几乎所有音视频格式&#xff08;如 H.264, AAC, MP3&#xff09;。转换&#xff1a;在不同容器格式之间转换&#xff08;如 MP4 → MKV&#xff09;。流处理&…...

创新实践分享:基于边缘智能+扣子的智能取物机器人解决方案

在 2024 年全国大学生物联网设计竞赛中&#xff0c;火山引擎作为支持企业&#xff0c;不仅参与了赛道的命题设计&#xff0c;还为参赛队伍提供了相关的硬件和软件支持。以边缘智能和扣子的联合应用为核心&#xff0c;参赛者们在这场竞赛中展现出了卓越的创新性和实用性&#xf…...

【蓝桥杯】省赛:神奇闹钟

思路 python做这题很简单&#xff0c;灵活用datetime库即可 code import os import sys# 请在此输入您的代码 import datetimestart datetime.datetime(1970,1,1,0,0,0) for _ in range(int(input())):ls input().split()end datetime.datetime.strptime(ls[0]ls[1],&quo…...

虚幻基础:蓝图常用节点

文章目录 timelinedelay/retriggerable&#xff1a;计时器&#xff1a;计时后的代码只执行一次delay&#xff1a;计时期间不可再触发&#xff0c;走完后再触发。retriggerable&#xff1a;计时期间可重复触发&#xff0c;触发则刷新计时时间。 doOnce&#xff1a;只可触发一次&…...

使用kubeadm方式以及使用第三方工具sealos搭建K8S集群

目录 kubeadm方式: 一、安装要求 二、环境准备 二、安装Docker、kubeadm、kubelet 1、安装Docker &#xff08;1&#xff09;首先配置一下Docker的阿里yum源 &#xff08;2&#xff09;然后用yum 方式安装docker &#xff08;3&#xff09;配置Docker镜像加速器 &#…...

ELK traceId实现跨服务日志追踪

ELK怎么实现跨服务日志追踪&#xff0c;Trace-Id 具体实现方案及代码_kibana关联其他服务器的日志-CSDN博客 ELKMDC追踪日志 ---- SpringCloud实现传递_elk的mdc-CSDN博客 SpringBoot之HandlerInterceptor拦截器的使用 ——&#xff08;一&#xff09;-CSDN博客 在使用ELK&a…...

2025 linux系统资源使用率统计docker容器使用率统计docker监控软件Weave Scope安装weavescope

1.Weave Scope介绍 Weave Scope 是一款用于监控和可视化 Docker 容器、Kubernetes 集群以及分布式应用的强大工具。它的设计目标是帮助开发者和运维人员更好地理解和管理复杂的微服务架构。以下是 Weave Scope 的主要优点&#xff1a; 1. 实时可视化 Weave Scope 提供了一个直…...

通过特征值和特征向量实现的图像压缩和特征提取

前文&#xff0c;我们在学习人工智能的线性代数基础的时候&#xff0c;就了解到&#xff0c;矩阵在人工智能中被广泛使用&#xff0c;接下来我们就从大家非常常见的图像开始&#xff0c;深度理解矩阵在人工智能中的应用。有关线性代数基础的文章可以看的我CSDN:人工智能中的线性…...

html-to-image的使用及图片变形和无图问题修复

html-to-image的使用及图片变形和无图问题修复 最近迭代的时候因为新增了一个需求&#xff0c;需要前端提供素材及样式给后端&#xff0c;后端同步渲染&#xff0c;但是因为部分样式问题后端无法实现所以决定前端将页面生成图片然后传递给后端使用&#xff0c;本文记录一下使用…...

【eNSP基础使用教程-1】

座右铭: 纵有疾风起&#xff0c;人生不言弃。 文章目录 前言一、更改设备名称指令1、双击路由器进入2、 进入系统视图3、更改设备名称为R14、使用同样的办法修改路由器R2、R3 二、配置路由物理接口的IP 地址1、查看R1路由器当前接口IP 地址配置与路由表2、查看路由器上的路由表…...

详解SQL数据定义功能

数据定义 1. 数据库模式&#xff08;Schema&#xff09;的定义与删除定义模式删除模式 2. 基本表的定义、修改与删除定义表约束1. NOT NULL 约束2. DEFAULT 约束3. UNIQUE 约束4. PRIMARY KEY 约束多列主键示例&#xff1a; 5. FOREIGN KEY 约束6. CHECK 约束7. AUTO_INCREMENT…...

vscode python相对路径的问题

vscode python相对路径的问题 最近使用使用vscode连接wsl2写python时&#xff0c;经常遇到找不到包中的方法的问题&#xff0c;最终发现vscode在执行python代码时目录不是从当前python文件开始算起&#xff0c;而是从当前工作区的目录开始算起&#xff0c;比如说我打开的是/ho…...

通达信软件+条件选股+code

在通达信软件中,你的选股公式需要放在 "公式管理器" 的 "条件选股公式" 分类中。以下是详细操作步骤: 一、打开公式管理器 打开通达信软件,按快捷键 Ctrl + F (或点击顶部菜单栏:"公式" → "公式管理器") 二、创建新公式 选择分…...

机器学习常见激活函数

激活函数的作用 引入非线性因素 若神经网络仅由线性层构成&#xff0c;那么无论网络的层数有多少&#xff0c;其整体的输出依然是输入的线性组合。这样的网络只能拟合线性函数&#xff0c;在处理复杂的非线性问题&#xff08;如语音识别、图像分类&#xff09;时能力十分有限。…...

Unreal Engine 5(虚幻引擎)动画制作快捷键大全

Unreal Engine 5 中 动画制作&#xff08;主要涉及 Sequencer、动画蓝图等模块&#xff09;的 鼠标操作 与 核心快捷键 整理&#xff0c;按动画制作流程分类&#xff1a; 一、Sequencer 时间轴操作 功能目标鼠标操作快捷键说明移动播放头左键点击时间轴标尺区域拖动播放头按住…...

OpenFeign的配置类可以进行哪些配置

1. 日志级别&#xff08;Logger Level&#xff09; 工作原理 Feign的日志级别控制了日志输出的详细程度&#xff0c;有助于调试和监控。日志级别包括&#xff1a; NONE&#xff1a;不记录任何信息。BASIC&#xff1a;仅记录请求方法和URL及响应状态码和执行时间。HEADERS&am…...

netcore publish报错 error CS1056: Unexpected character

问题&#xff1a;jenkins netcore publish报错 检查文件编码&#xff0c;发现是:GB2312。转换为&#xff1a;UTF-8-BOM。 问题解决 。...