【YOLOv11】ultralytics最新作品yolov11 AND 模型的训练、推理、验证、导出 以及 使用

news/2024/10/12 19:17:41/

目录

YOLOV11-toc" style="margin-left:0px;">一 ultralytics公司的最新作品YOLOV11

1  yolov11的创新

YOLOv11-toc" style="margin-left:40px;">2 安装YOLOv11

3 PYTHON Guide

二 训练

三 验证

四 推理

五 导出模型

六 使用


文档https://docs.ultralytics.com/models/yolo11/

代码链接https://github.com/ultralytics/ultralytics

Performance Metrics

关键特性

增强的特征提取能力YOLO11采用了改进的主干和颈部架构,增强了特征提取能力,能够实现更精确的目标检测和复杂任务的执行。

优化的效率和速度YOLO11引入了精细化的架构设计和优化的训练流程,提供更快的处理速度,并在准确性和性能之间保持最佳平衡。

参数更少、精度更高:通过模型设计的改进,YOLO11m在COCO数据集上实现了更高的平均精度(mAP),同时使用的参数比YOLOv8m少22%,使其在计算上更加高效,而不牺牲准确性。

跨环境的适应性YOLO11可以无缝部署在各种环境中,包括边缘设备、云平台和支持NVIDIA GPU的系统,确保最大的灵活性。

支持广泛任务:无论是目标检测、实例分割、图像分类、姿态估计还是定向目标检测(OBB),YOLO11都旨在应对一系列计算机视觉挑战。

支持的任务和模式

YOLO11建立在YOLOv8中引入的多功能模型范围之上,为各种计算机视觉任务提供增强的支持:

​该表提供了YOLO11模型变体的概述,展示了它们在特定任务中的适用性以及与Inference、Validation、Training和Export等操作模式的兼容性。从实时检测到复杂的分割任务 ,这种灵活性使YOLO11适用于计算机视觉的广泛应用。

YOLOV11" style="text-align:left;">一 ultralytics公司的最新作品YOLOV11

1  yolov11的创新

 yolov8 VS  yolov11

YOLOv5,YOLOv8和YOLOv11均是ultralytics公司的作品,ultralytics出品必属精品。

具体创新点

① 深度(depth)和宽度 (width)

YOLOv8和YOLOv11是基本上完全不同。

② C3k2机制

C3k2有参数为c3k,其中在网络的浅层c3k设置为False。C3k2就相当于YOLOv8中的C2f。

③ C2PSA机制

下图为C2PSA机制的原理图。

④ 解耦头

解耦头中的分类检测头增加了两个DWConv

Conv

python">def autopad(k, p=None, d=1):  # kernel, padding, dilation"""Pad to 'same' shape outputs."""if d > 1:k = d * (k - 1) + 1 if isinstance(k, int) else [d * (x - 1) + 1 for x in k]  # actual kernel-sizeif p is None:p = k // 2 if isinstance(k, int) else [x // 2 for x in k]  # auto-padreturn pclass Conv(nn.Module):"""Standard convolution with args(ch_in, ch_out, kernel, stride, padding, groups, dilation, activation)."""default_act = nn.SiLU()  # default activationdef __init__(self, c1, c2, k=1, s=1, p=None, g=1, d=1, act=True):"""Initialize Conv layer with given arguments including activation."""super().__init__()self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p, d), groups=g, dilation=d, bias=False)self.bn = nn.BatchNorm2d(c2)self.act = self.default_act if act is True else act if isinstance(act, nn.Module) else nn.Identity()def forward(self, x):"""Apply convolution, batch normalization and activation to input tensor."""return self.act(self.bn(self.conv(x)))def forward_fuse(self, x):"""Perform transposed convolution of 2D data."""return self.act(self.conv(x))

Conv2d

python">torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')

DWConv

DWConv 代表 Depthwise Convolution(深度卷积),是一种在卷积神经网络中常用的高效卷积操作。它主要用于减少计算复杂度和参数量。

python">class DWConv(Conv):"""Depth-wise convolution."""def __init__(self, c1, c2, k=1, s=1, d=1, act=True):  # ch_in, ch_out, kernel, stride, dilation, activation"""Initialize Depth-wise convolution with given parameters."""super().__init__(c1, c2, k, s, g=math.gcd(c1, c2), d=d, act=act)

YOLOv11" style="text-align:left;">2 安装YOLOv11

# Clone the ultralytics repository
git clone https://github.com/ultralytics/ultralytics# 创建conda环境yolov11
conda create -n yolov11 python=3.9
conda activate yolov11
# Navigate to the cloned directory
cd ultralytics
# Install the package in editable mode for development
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install onnx -i  https://pypi.tuna.tsinghua.edu.cn/simple
pip install onnxslim -i  https://pypi.tuna.tsinghua.edu.cn/simple
pip install onnxruntime -i  https://pypi.tuna.tsinghua.edu.cn/simple
# opencv
pip install opencv-python -i  https://pypi.tuna.tsinghua.edu.cn/simple
pip install opencv-contrib-python -i  https://pypi.tuna.tsinghua.edu.cn/simple

3 PYTHON Guide

python">from ultralytics import YOLO# Create a new YOLO model from scratchmodel = YOLO("yolo11n.yaml")# Load a pretrained YOLO model (recommended for training)model = YOLO("yolo11n.pt")# Train the model using the 'coco8.yaml' dataset for 3 epochsresults = model.train(data="coco8.yaml", epochs=3)# Evaluate the model's performance on the validation setresults = model.val()# Perform object detection on an image using the modelresults = model("https://ultralytics.com/images/bus.jpg")# Export the model to ONNX formatsuccess = model.export(format="onnx")

CLI AND PYTHON 示例:https://docs.ultralytics.com/tasks/detect/#models

二 训练

# Build a new model from YAML and start training from scratchyolo detect train data=coco8.yaml model=yolo11n.yaml epochs=100 imgsz=640# Start training from a pretrained *.pt modelyolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640# Build a new model from YAML, transfer pretrained weights to it and start trainingyolo detect train data=coco8.yaml model=yolo11n.yaml pretrained=yolo11n.pt epochs=100 imgsz=640

示例

# Load a COCO-pretrained YOLO11n model and train it on the COCO8 example dataset for 100 epochsyolo train model=yolo11n.pt data=coco8.yaml epochs=100 imgsz=640

​训练产物:

​三 验证

yolo detect val model=yolo11n.pt  # val official model# 使用自己的模型yolo detect val model=path/to/best.pt  # val custom model

示例

yolo detect val model=yolo11n.pt

​效果图:

​四 推理

yolo detect predict model=yolo11n.pt source='https://ultralytics.com/images/bus.jpg'  # predict with official model# 使用自己的模型yolo detect predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg'  # predict with custom model

示例

yolo detect predict model=yolo11n.pt source='ultralytics/assets/bus.jpg'  

​效果图:

​五 导出模型

yolo export model=yolo11n.pt format=onnx  # export official modelyolo export model=path/to/best.pt format=onnx  # export custom trained model

示例

yolo export model=yolo11n.pt format=onnx

​六 使用

代码如下:

python">from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.onnx")  # load a custom model
# Predict with the model
results = model("ultralytics/assets/zidane.jpg")
# Process results list
for result in results:# boxes = result.boxes  # Boxes object for bounding box outputs# masks = result.masks  # Masks object for segmentation masks outputs# keypoints = result.keypoints  # Keypoints object for pose outputs# probs = result.probs  # Probs object for classification outputs# obb = result.obb  # Oriented boxes object for OBB outputsresult.show()  # display to screenresult.save(filename="result.jpg")  # save to disk
pass

效果图:

至此,本文分享的内容就结束啦。


http://www.ppmy.cn/news/1537985.html

相关文章

如何通过修改Nginx运行用户解决403 Forbidden问题

在使用Nginx作为Web服务器时,有时会遇到 403 Forbidden 错误,特别是在访问静态文件时。这通常是由于Nginx没有适当的权限来读取文件目录中的内容。在这篇博文中,我们将探讨如何通过修改Nginx的运行用户来解决这一问题,并确保Nginx…

搬砖11、Python 文件和异常

文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景,而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词,可能需要先科普一下关于文件系统的知识,但是这里我们并不浪费笔墨介绍这个概念,请大…

CBA认证培训,业务架构师的筑梦之旅!

培训主题课程内容 导论 客户中心化时代统一业务架构重要性 1.以客户为中心新一代业务架构设计 2.数字化转型标准下业务架构设计 3.企业业务能力模型构建 4.企业业务组件模型构建与业务梳理 5.企业端到端价值流规划方法 案例-经营计划端到端价值流建设案例 第一章 简…

2024 年热门前端框架对比及选择指南

在前端开发的世界里,框架的选择对于项目的成功至关重要。不同的框架有着不同的设计理念、生态系统和适用场景,因此,开发者在选框架时需要权衡多个因素。本文将对当前最流行的前端框架——React、Vue、Angular、Svelte 和 Solid——进行详细对…

vant +vite 设计稿是750,postCssPxToRem如何配置

废话不多说直接上代码: 在vite.config.ts 中配置: css: {postcss: {plugins: [postCssPxToRem({rootValue({ file }) {if (file && file.indexOf(vant) ! -1) {return 37.5}return 75},propList: [*]})]},}, 详细配置可看官网: 官…

Python 如何处理数据库事务

Python 如何处理数据库事务 数据库事务是指一组操作要么全部执行成功,要么全部回滚的过程。事务是确保数据库一致性的重要手段,特别是在处理需要多步操作的场景时,能够避免部分数据成功更新而部分数据失败的情况。本文将详细介绍什么是数据库…

【秋招笔试】10.12小米(已改编)秋招-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 本次的三题全部上线…

【LeetCode HOT 100】详细题解之回溯篇

【LeetCode HOT 100】详细题解之回溯篇 回溯法的理论基础回溯法解决的问题理解回溯法回溯法模板 46 全排列思路代码 78 子集思路代码 17 电话号码的字母组合思路代码 39 组合总和思路代码 22 括号生成思路代码 79 单词搜索思路代码 131 分割回文串思路代码 51 N皇后思路代码 回…