YOLO11模型推理 | 目标检测与跟踪 | 实例分割 | 关键点估计 | OBB旋转目标检测

前言

本文分享YOLO11的模型推理,检测任务包括物体分类、目标检测与跟踪、实例分割 、关键点估计、旋转目标检测等。

首先安装YOLO11

官方默认安装方式

通过运行 pip install ultralytics 来快速安装 Ultralytics 包

安装要求

  • Python 版本要求:Python 版本需为 3.8 及以上,支持 3.8、3.9、3.10、3.11、3.12 这些版本。
  • PyTorch 版本要求:需要 PyTorch 版本不低于 1.8。

然后使用清华源,进行加速安装

pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple/

一、YOLO11模型推理——目标检测

1、模型推理简洁版

YOLO11模型推理,整体思路流程:

  1. 加载模型:使用 YOLO 类指定模型的权重文件 yolo11m.pt
  2. 执行推理:调用 model.predict() 方法对指定输入的数据,可以设置图像大小、置信度阈值,并选择保存推理结果。
  3. 处理检测结果:遍历 results,提取每个结果中的边界框和分类概率。
  4. 显示结果:通过 result.show() 可视化检测到的图像及其标注信息。

示例代码,如下所示: 

from ultralytics import YOLO# 加载预训练的YOLOv11n模型
model = YOLO(r"weights_yolo/yolo11m.pt")# 对'bus.jpg'图像进行推理,并获取结果
results = model.predict(r"test_image/test1.jpg", save=True, imgsz=640, conf=0.5)# 处理返回的结果
for result in results:boxes = result.boxes       # 获取边界框信息probs = result.probs       # 获取分类概率result.show()              # 显示结果

执行后能看到检测的结果,如下图所示:

2、模型推理——完成参数版本

由于是直接调用model.predict() 方法进行推理,我们需要知道这个函数有哪些参数;

下面看看这个完整参数示例,里面有所有model.predict() 函数的参数

results = model.predict(

    source="test.jpg",           # 数据来源,可以是文件夹、图片路径、视频、URL,或设备ID(如摄像头)

    conf=0.45,                      # 置信度阈值

    iou=0.6,                        # IoU 阈值

    imgsz=640,                      # 图像大小

    half=False,                     # 使用半精度推理

    device=None,                    # 使用设备,None 表示自动选择,比如'cpu','0'

    max_det=300,                    # 最大检测数量

    vid_stride=1,                   # 视频帧跳跃设置

    stream_buffer=False,            # 视频流缓冲

    visualize=False,                # 可视化模型特征

    augment=False,                  # 启用推理时增强

    agnostic_nms=False,             # 启用类无关的NMS

    classes=None,                   # 指定要检测的类别

    retina_masks=False,             # 使用高分辨率分割掩码

    embed=None,                     # 提取特征向量层

    show=False,                     # 是否显示推理图像

    save=True,                      # 保存推理结果

    save_frames=False,              # 保存视频的帧作为图像

    save_txt=True,                  # 保存检测结果到文本文件

    save_conf=False,                # 保存置信度到文本文件

    save_crop=False,                # 保存裁剪的检测对象图像

    show_labels=True,               # 显示检测的标签

    show_conf=True,                 # 显示检测置信度

    show_boxes=True,                # 显示检测框

    line_width=None                 # 设置边界框的线条宽度,比如2,4

)

示例代码,如下所示: 

from ultralytics import YOLO# 加载预训练的YOLOv11n模型
model = YOLO(r"weights_yolo/yolo11m.pt")# 对指定的图像文件夹进行推理,并设置各种参数
results = model.predict(source="test_image/test.jpg",   # 数据来源,可以是文件夹、图片路径、视频、URL,或设备ID(如摄像头)conf=0.45,                      # 置信度阈值iou=0.6,                        # IoU 阈值imgsz=640,                      # 图像大小half=False,                     # 使用半精度推理device=None,                    # 使用设备,None 表示自动选择,比如'cpu','0'max_det=300,                    # 最大检测数量vid_stride=1,                   # 视频帧跳跃设置stream_buffer=False,            # 视频流缓冲visualize=False,                # 可视化模型特征augment=False,                  # 启用推理时增强agnostic_nms=False,             # 启用类无关的NMSclasses=None,                   # 指定要检测的类别retina_masks=False,             # 使用高分辨率分割掩码embed=None,                     # 提取特征向量层show=False,                     # 是否显示推理图像save=True,                      # 保存推理结果save_frames=False,              # 保存视频的帧作为图像save_txt=True,                  # 保存检测结果到文本文件save_conf=False,                # 保存置信度到文本文件save_crop=False,                # 保存裁剪的检测对象图像show_labels=True,               # 显示检测的标签show_conf=True,                 # 显示检测置信度show_boxes=True,                # 显示检测框line_width=None                 # 设置边界框的线条宽度,比如2,4
)# 处理返回的结果
for result in results:boxes = result.boxes  # 获取边界框信息probs = result.probs  # 获取分类概率result.show()         # 显示推理结果

执行后能看到检测的结果,如下图所示:

3、模型推理——丰富的返回结果版本

模型推理后的返回信息:

  • 原始图像及其形状result.orig_imgresult.orig_shape 展示原始输入的图像及其形状。
  • 边界框、类别置信度及标签:通过 result.boxesresult.probs 获取边界框和分类的置信度信息,并打印类别名称。
  • 可选属性:如果模型检测了 maskskeypoints 或 OBB(定向边界框),将其打印出来。
  • 速度信息result.speed 用于显示每张图像的推理时间。
  • 结果展示与保存:使用 result.show() 显示图像,result.save() 保存图像
  • 结果转换:将检测结果转换为 numpy 数组和 JSON 格式并打印。

示例代码,如下所示: 

from ultralytics import YOLO# 加载预训练的YOLOv11n模型
model = YOLO(r"weights_yolo/yolo11m.pt")# 对'bus.jpg'图像进行推理,并获取结果
results = model.predict(r"test_image/test1.jpg", save=True, imgsz=640, conf=0.5)# 处理返回的结果
for result in results:# 打印原始图像和形状print(f"Original Image: {result.orig_img}")print(f"Original Shape: {result.orig_shape}")# 打印边界框、置信度、类别标签print(f"Bounding Boxes: {result.boxes}")print(f"Class Probabilities: {result.probs}")print(f"Class Names: {result.names}")# 如果有 mask、关键点或 OBB(定向边界框),也将其打印出来if hasattr(result, 'masks'):print(f"Masks: {result.masks}")if hasattr(result, 'keypoints'):print(f"Keypoints: {result.keypoints}")if hasattr(result, 'obb'):print(f"Oriented Bounding Boxes (OBB): {result.obb}")# 打印推理速度信息print(f"Speed: {result.speed} ms per image")# 显示结果图像result.show()# 保存检测结果result.save()# 打印详细的日志字符串print(result.verbose())# 转换结果为 numpy 格式numpy_result = result.numpy()print(f"Results as Numpy Arrays: {numpy_result}")# 将结果转换为 JSON 格式json_result = result.tojson()print(f"Results as JSON: {json_result}")

会打印丰富的返回信息

Class Probabilities: None
Class Names: {0: 'person', 1: 'bicycle', 2: 'car', 3: 'motorcycle', 4: 'airplane', 5: 'bus', 6: 'train', 7: 'truck', 8: 'boat', 9: 'traffic light', 10: 'fire hydrant', 11: 'stop sign', 12: 'parking meter', 13: 'bench', 14: 'bird', 15: 'cat', 16: 'dog', 17: 'horse', 18: 'sheep', 19: 'cow', 20: 'elephant', 21: 'bear', 22: 'zebra', 23: 'giraffe', 24: 'backpack', 25: 'umbrella', 26: 'handbag', 27: 'tie', 28: 'suitcase', 29: 
'frisbee', 30: 'skis', 31: 'snowboard', 32: 'sports ball', 33: 'kite', 34: 'baseball bat', 35: 'baseball glove', 36: 'skateboard', 37: 'surfboard', 38: 'tennis racket', 39: 'bottle', 40: 'wine glass', 41: 'cup', 
42: 'fork', 43: 'knife', 44: 'spoon', 45: 'bowl', 46: 'banana', 47: 'apple', 48: 'sandwich', 49: 'orange', 50: 'broccoli', 51: 'carrot', 52: 'hot dog', 53: 'pizza', 54: 'donut', 55: 'cake', 56: 'chair', 57: 'couch', 58: 'potted plant', 59: 'bed', 60: 'dining table', 61: 'toilet', 62: 'tv', 63: 'laptop', 64: 'mouse', 65: 'remote', 66: 'keyboard', 67: 'cell phone', 68: 'microwave', 69: 'oven', 70: 'toaster', 71: 'sink', 72: 'refrigerator', 73: 'book', 74: 'clock', 75: 'vase', 76: 'scissors', 77: 'teddy bear', 78: 'hair drier', 79: 'toothbrush'}
Masks: None
Keypoints: None
Oriented Bounding Boxes (OBB): None
Speed: {'preprocess': 1.9345283508300781, 'inference': 493.81542205810547, 'postprocess': 0.0} ms per image
1 person, 1 car, 1 motorcycle, 1 bus, 6 traffic lights, 
Results as Numpy Arrays: ultralytics.engine.results.Results object with attributes:boxes: ultralytics.engine.results.Boxes object
keypoints: None
masks: None
orig_shape: (897, 1381)
path: 'C:\\Users\\liguopu\\Downloads\\ultralytics-main\\test_image\\test1.jpg'
probs: None
save_dir: None
speed: {'preprocess': 1.9345283508300781, 'inference': 493.81542205810547, 'postprocess': 0.0}

二、YOLO11模型推理——实例分割

其实和上面检测的代码,基本是一样的,只需改变模型权重就可以了。

实例分割模型推理的简洁版,示例代码,如下所示: 

from ultralytics import YOLO# 加载预训练的YOLOv11n模型
model = YOLO(r"weights_yolo/yolo11m-seg.pt")# 对'bus.jpg'图像进行推理,并获取结果
results = model.predict(r"test_image/test2.jpg", save=True, imgsz=640, conf=0.5)# 处理返回的结果
for result in results:masks = result.masks       # 获取分割信息# print("masks:", masks)result.show()              # 显示结果

打印信息:

image 1/1 C:\Users\liguopu\Downloads\ultralytics-main\test_image\test2.jpg: 288x640 1 car, 1 truck, 426.0ms
Speed: 0.0ms preprocess, 426.0ms inference, 0.0ms postprocess per image at shape (1, 3, 288, 640)
Results saved to runs\segment\predict4 

可视化实例分割的结果,如下图所示:

在coco8-seg/images/val/数据集中,看一下分割的效果

示例代码,如下所示:

from ultralytics import YOLO# 加载预训练的YOLOv11n模型
model = YOLO(r"weights_yolo/yolo11m-seg.pt")# 对'bus.jpg'图像进行推理,并获取结果
results = model.predict(r"test_image/coco8-seg/images/val/", save=True, imgsz=640, conf=0.5)# 处理返回的结果
for result in results:masks = result.masks       # 获取分割信息# print("masks:", masks)result.show()              # 显示结果

打印信息:

image 1/4 C:\Users\liguopu\Downloads\ultralytics-main\test_image\coco8-seg\images\val\000000000036.jpg: 640x512 1 person, 1 umbrella, 772.3ms
image 2/4 C:\Users\liguopu\Downloads\ultralytics-main\test_image\coco8-seg\images\val\000000000042.jpg: 480x640 (no detections), 656.2ms
image 3/4 C:\Users\liguopu\Downloads\ultralytics-main\test_image\coco8-seg\images\val\000000000049.jpg: 640x512 4 persons, 2 horses, 1 potted plant, 718.2ms
image 4/4 C:\Users\liguopu\Downloads\ultralytics-main\test_image\coco8-seg\images\val\000000000061.jpg: 512x640 1 elephant, 695.1ms
Speed: 0.5ms preprocess, 710.4ms inference, 13.9ms postprocess per image at shape (1, 3, 512, 640)
Results saved to runs\segment\predict6

可视化实例分割的结果,如下图所示:

三、YOLO11模型推理——关键点估计

其实和上面检测的代码,基本是一样的,只需改变模型权重就可以了。

关键点估计模型推理的简洁版,示例代码,如下所示: 

from ultralytics import YOLO# 加载预训练的YOLOv11n模型
model = YOLO(r"weights_yolo/yolo11m-pose.pt")# 对'bus.jpg'图像进行推理,并获取结果
results = model.predict(r"test_image/test.jpg", save=True, imgsz=640, conf=0.5)# 处理返回的结果
for result in results:keypoints = result.keypoints       # 获取关键点估计信息result.show()                      # 显示结果

打印信息

image 1/1 C:\Users\liguopu\Downloads\ultralytics-main\test_image\test.jpg: 384x640 8 persons, 426.2ms
Speed: 0.0ms preprocess, 426.2ms inference, 2.1ms postprocess per image at shape (1, 3, 384, 640)
Results saved to runs\pose\predict9

可视化关键点估计的结果,如下图所示:

四、YOLO11模型推理——旋转目标检测

其实和上面检测的代码,基本是一样的,只需改变模型权重就可以了。

旋转目标检测模型推理的简洁版,示例代码,如下所示: 

from ultralytics import YOLO# 加载预训练的YOLOv11n模型
model = YOLO(r"weights_yolo/yolo11m-obb.pt")# 对'bus.jpg'图像进行推理,并获取结果
results = model.predict(r"test_image/dota8/images/train/", save=True, imgsz=640, conf=0.5)# 处理返回的结果
for result in results:obb = result.obb           # 获取旋转框信息result.show()              # 显示结果

打印信息

image 1/4 C:\Users\liguopu\Downloads\ultralytics-main\test_image\dota8\images\train\P0861__1024__0___1648.jpg: 640x640 708.0ms
image 2/4 C:\Users\liguopu\Downloads\ultralytics-main\test_image\dota8\images\train\P1053__1024__0___90.jpg: 640x640 662.0ms
image 3/4 C:\Users\liguopu\Downloads\ultralytics-main\test_image\dota8\images\train\P1142__1024__0___824.jpg: 640x640 640.9ms
image 4/4 C:\Users\liguopu\Downloads\ultralytics-main\test_image\dota8\images\train\P1161__1024__3296___1648.jpg: 640x640 691.2ms
Speed: 4.8ms preprocess, 675.5ms inference, 10.9ms postprocess per image at shape (1, 3, 640, 640)
Results saved to runs\obb\predict3

可视化旋转目标检测的结果,如下图所示:

五、YOLO11模型推理——物体分类

其实和上面检测的代码,基本是一样的,只需改变模型权重就可以了。

物体分类模型推理的简洁版,示例代码,如下所示: 

from ultralytics import YOLO# 加载预训练的YOLOv11n模型
model = YOLO(r"weights_yolo/yolo11m-cls.pt")# 对'bus.jpg'图像进行推理,并获取结果
results = model.predict(r"test_image/test.jpg", save=True, conf=0.5)# 处理返回的结果
for result in results:probs = result.probs       # 获取分类概率result.show()              # 显示结果

打印信息

image 1/1 C:\Users\liguopu\Downloads\ultralytics-main\test_image\test.jpg: 224x224 basketball 1.00, ballplayer 0.00, volleyball 0.00, stage 0.00, barbell 0.00, 104.3ms
Speed: 4.7ms preprocess, 104.3ms inference, 0.0ms postprocess per image at shape (1, 3, 224, 224)
Results saved to runs\classify\predict3

可视化分类的结果,如下图所示,识别出来这是篮球(运动)

下面图像中,识别出来是斑马

下面图像中,识别出来多种物体类别

详细模型推理可以参考:https://docs.ultralytics.com/modes/predict/

相关文章推荐:一篇文章快速认识YOLO11 | 关键改进点 | 安装使用 | 模型训练和推理-CSDN博客

分享完成~

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

南京大学《软件分析》李越, 谭添——1. 导论

导论 主要概念: soundcompletePL领域概述 动手学习 本节无 文章目录 导论1. PL(Programming Language) 程序设计语言1.1 程序设计语言的三大研究方向1.2 与静态分析相关方向的介绍与对比静态程序分析动态软件测试形式化(formal)语义验证(verification) 2. 静态分析:2.1莱斯…

这个问题做项目的时给某些客户普及过,这里再给你普及一下

有些因素不是地理概念,没错!但与地理有关!可以通过地理位置将他们链接起来,再结合其它业务数据,完成数据分析!例如百度地图会将:餐饮、文化、交通、住宿、甚至价格、天气与位置关联分析&#xf…

超越单线程:Web Worker 在前端性能中的角色

在当今快速发展的数字时代,用户对网页性能的期待已经达到了前所未有的高度,想象一下,当你打开一个网站,瞬间加载、流畅操作,没有任何卡顿和延迟,这种体验无疑会让你倍感惊喜。然而在前端开发中,…

@Service代替@Controller注解来标注到控制层的场景?

在SpringBoot开发中,Controller和Service基本上是日常开发中使用的最频繁的两个注解。但你有没考虑过Service代替Controller注解来标注到控制层的场景?换言之,经过Service标注的控制层能否实现将用户请求分发到服务层的功能? 前言…

【斯坦福CS144】Lab5

一、实验目的 在现有的NetworkInterface基础上实现一个IP路由器。 二、实验内容 在本实验中,你将在现有的NetworkInterface基础上实现一个IP路由器,从而结束本课程。路由器有几个网络接口,可以在其中任何一个接口上接收互联网数据报。路由…

搜狗翻译体验,2024四大翻译工具解析!

为了满足广大用户的需求,市面上涌现出了众多优秀的翻译工具,福昕在线翻译、福昕翻译客户端、海鲸AI翻译、搜狗翻译等。今天,我们就来对比一下这些翻译工具,看看它们各自的特点和优势。 福昕在线翻译:专业精准&#xf…

高效开发,低代码平台如何助力构建内部工具

Zoho Creator是低代码平台,助力快速构建内部工具,如审批、订单、销售管理等,提升生产力、客户满意度,并减轻管理负担。平台提供拖放界面、集成数据库等功能,入选Gartner低代码平台“魔力象限”。 一、什么是内部工具&a…

虚拟机没有网络怎么解决

CentOS7为例 进入虚拟网络编辑器 1.更改设置 2.选中NAT模式点击3点击移除网络 4添加网络,随便选一个 5.点开NAT设置,记住网关 6.DHCP设置,注意虚拟机设置ip必须在起始ip和结束ip范围内 进入虚拟机网络适配器,自定义选中第4步操作…

五、Python基础语法(程序的输入和输出)

一、输入 输入:输入就是获取键盘输入的数据,使用input()函数。代码会从上往下执行,当遇到input()函数,就会暂停执行,输入内容后,敲回车键,表示本次的输入结束。input函数得到的数据类型都是字符…

python none代表什么

python中None代表一个特殊的空值,即为一个空对象,没有任何的值。 一般用于assert,判断,函数无返回时的默认,具体如下: 1、assert断言: mylist [a, b, c] >>> assert len(mylist) is…

用包目录结构Python脚本,简陋而强大

模块清晰易于管理,模块代码以*.py脚本呈现,方便维护和扩展。 (笔记模板由python脚本于2024年10月09日 18:21:52创建,本篇笔记适合喜欢Python和编程的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ …

java内存控制

Java 内存控制是一个相对复杂但至关重要的主题,它涉及到如何高效地管理Java应用程序中的内存资源。在Java中,内存管理主要由Java虚拟机(JVM)负责,包括内存的分配和回收。尽管如此,作为开发者,我…

Kali Linux中安装配置影音资源下载神器Amule

一、Debian系列Linux安装amule命令: sudo apt update sudo apt-get install amule amule-utils 二、配置Amule的要点: 1、首次运行Amule,提示是否下载服务器列表,点击是。 2、搜索选项的类型选择全球,类型的默认选项…

openwrt 配置4G网卡 simcom7600ce

文章目录 概述配置并烧录系统,实现识别4G模组编译选项配置修改usb的option.c文件编译源码,烧录固件 配置4G模组成为网卡设置4G模组驱动参数模组拨号添加网卡接口ping百度验证网络 开机启动脚本 概述 在mt7628芯片上,操作系统使用openwrt21.0…

每日OJ题_牛客_AB13【模板】拓扑排序_C++_Java

目录 牛客_AB13【模板】拓扑排序 题目解析 C代码 Java代码 牛客_AB13【模板】拓扑排序 【模板】拓扑排序_牛客题霸_牛客网 (nowcoder.com) 描述: 给定一个包含nn个点mm条边的有向无环图,求出该图的拓扑序。若图的拓扑序不唯一,输出任意合法…

【C++】面向对象之继承

不要否定过去,也不要用过去牵扯未来。不是因为有希望才去努力,而是努力了,才能看到希望。💓💓💓 目录 ✨说在前面 🍋知识点一:继承的概念及定义 •🌰1.继承的概念 •&…

小赢卡贷公益行:乡村振兴与多元公益并进

在金融科技的浪潮中,小赢卡贷不仅以其创新的金融产品和服务赢得了市场的广泛认可,更以其背后的公益之心,积极履行社会责任,传递着温暖与希望。小赢公益基金会,作为小赢卡贷社会责任的延伸,主要聚焦于乡村振…

衡石分析平台系统管理手册-智能运维之系统设置

系统设置​ HENGSHI 系统设置中展示了系统运行时的一些参数,包括主程序相关信息,Base URL、HTTP 代理、图表数据缓存周期、数据集缓存大小、租户引擎等相关信息。 主程序​ 系统设置中展示了主程序相关信息,这些信息是系统自动生成的&#…

springboot宿舍管理-计算机毕业设计源码40740

摘要 宿舍管理系统作为一种利用信息技术改善学生住宿管理的工具,在大学宿舍管理中具有重要的实际意义。本文通过对国内外研究现状的调查和总结,探讨了宿舍管理系统的论文主题、研究背景、研究目的、研究意义以及主要研究内容。 首先,宿舍管理…

心觉:购物选择困难症! 为什么你总是挑不出“最完美”的商品?

Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松掌控自己的人生! 挑战每日一省写作194/1000天 你有没有遇到过这样一种情况:打算买一款新的电子产品、家具或者衣服 但在网上和实体店翻来覆去&#xff0…