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

目录

一 ultralytics公司的最新作品YOLOV11

1  yolov11的创新

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适用于计算机视觉的广泛应用。

一 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

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-size

    if p is None:

        p = k // 2 if isinstance(k, int) else [x // 2 for x in k]  # auto-pad

return p


class Conv(nn.Module):

    """Standard convolution with args(ch_in, ch_out, kernel, stride, padding, groups, dilation, activation)."""


    default_act = nn.SiLU()  # default activation


    def __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

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(深度卷积),是一种在卷积神经网络中常用的高效卷积操作。它主要用于减少计算复杂度和参数量。

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)

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

from ultralytics import YOLO

# Create a new YOLO model from scratch

model = 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 epochs

results = model.train(data="coco8.yaml", epochs=3)

# Evaluate the model's performance on the validation set

results = model.val()

# Perform object detection on an image using the model

results = model("https://ultralytics.com/images/bus.jpg")

# Export the model to ONNX format

success = model.export(format="onnx")

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

二 训练

# Build a new model from YAML and start training from scratch

yolo detect train data=coco8.yaml model=yolo11n.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model

yolo 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 training

yolo 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 epochs

yolo 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 model

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

示例

yolo export model=yolo11n.pt format=onnx

​六 使用

代码如下:

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 outputs
    result.show()  # display to screen
    result.save(filename="result.jpg")  # save to disk
pass

效果图:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MLP-Mixer】核心方法解读

abstract: 我们提出MLP-Mixer架构(或简称“Mixer”),这是一个具有竞争力但在概念和技术上都很简单的替代方案,它不使用卷积或自关注。相反,Mixer的架构完全基于多层感知器(mlp),这些感知器可以在空间位置或特征通道上…

JQuery基本操作(二)

遍历 $(选择器).each(function(下标,值){//代码块 });$.each(数组名,function(下标,值){//代码块 }); <body><button> 获得数组下标和值</button> </body> <script>$(function(){$("button").click(function(){var arr [1,2,3,4,5,…

Ansible 工具从入门到使用

1. Ansible概述 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可以实现。 Ansible能批量配置、部署、管理上千台主…

基于 CSS Grid 的简易拖拉拽 Vue3 组件,从代码到NPM发布(2)- NPM发布、在线示例

这里分享一下本开源项目是如何构建组件库及其如何发布到NPM上的&#xff0c;还有组件库与在线示例的构建有什么差异。 请大家动动小手&#xff0c;给我一个免费的 Star 吧~ 大家如果发现了 Bug&#xff0c;欢迎来提 Issue 哟~ github源码 NPM 示例地址 版本更新信息 这两天抽空…

自动化测试中如何高效进行元素定位!

前言 在自动化测试中&#xff0c;元素定位是一项非常重要的工作。良好的元素定位可以帮助测试人员处理大量的测试用例&#xff0c;加快测试进度&#xff0c;降低工作负担。但是在实际的测试工作中&#xff0c;我们常常遇到各种各样的定位问题&#xff0c;比如元素定位失败、元…

鸿蒙开发之ArkUI 界面篇 三十三 Builder(封装容器)

鸿蒙开发中遇到容器相同、容器下面的子组件相同&#xff0c;就是子组件的文字不同&#xff0c;背景颜色不同&#xff0c;文字颜色不同之类&#xff0c;就可以使用Builder来封装&#xff0c;语法格式如下&#xff1a; 例如下面的界面&#xff1a; Row4个ColumImageText来实现&am…

Python WebSocket 的原理及其应用

Python WebSocket 的原理及其应用 在现代 Web 开发中&#xff0c;实时通信成为了越来越多应用的重要组成部分。尤其是像聊天应用、实时数据更新、在线游戏等场景&#xff0c;服务器与客户端之间的即时数据传输需求非常迫切。在传统的 HTTP 协议中&#xff0c;通信往往是基于请…

麒麟V10系统下的调试工具(网络和串口调试助手)

麒麟V10系统下的调试工具&#xff08;网络和串口调试助手&#xff09; 1.安装网络调试助手mnetassist arm64-main ①在linux下新建一个文件夹 mkdir /home/${USER}/NetAssist②将mnetassist arm64-main.zip拷贝到上面文件夹中&#xff0c;并解压给权限 cd /home/${USER}/Ne…

JS 运算符

目录 1. 赋值运算符 2. 一元运算符 2.1 自增 2.1.1 前置自增 2.1.2 后置自增 2.1.3 前置与后置自增对比 3. 比较运算符 3.1 字符串比较 4. 逻辑运算符 4.1 案例 5. 运算符优先级 1. 赋值运算符 2. 一元运算符 2.1 自增 2.1.1 前置自增 2.1.2 后置自增 2.1.3 前置与后…

Ubuntu安装Apache教程

系统版本&#xff1a;Ubuntu版本 23.04 Ubuntu是一款功能强大且用户友好的操作系统&#xff0c;而Apache是一款广泛使用的Web服务器软件。在Ubuntu上安装Apache可以帮助用户搭建自己的网站或者进行Web开发。为大家介绍如何在Ubuntu上安装Apache&#xff0c;并提供详细的教程和操…

日语学习零基础生活日语口语柯桥外语学校|股票用日语怎么说?

在日语中&#xff0c;“股票”可以说&#xff1a; • 株&#xff08;かぶ&#xff09; 这是最常用的表达方式&#xff0c;直接表示“股票”。 例如&#xff1a; 株を買う - 买股票 株を売る - 卖股票 • 株式&#xff08;かぶしき&#xff09; 这个词也是“股票”的意…

网站集群批量管理-Ansible(ad-hoc)

1. 概述 1. 自动化运维: 批量管理,批量分发,批量执行,维护 2. 无客户端,基于ssh进行管理与维护 2. 环境准备 环境主机ansible10.0.0.7(管理节点)nfs01 10.0.0.31(被管理节点)backup10.0.0.41(被管理节点) 2.1 创建密钥认证 安装sshpass yum install -y sshpass #!/bin/bash ##…

息肉检测数据集 yolov5 yolov8适用于目标检测训练已经调整为yolo格式可直接训练yolo网络

息肉检测数据集 yolov5 yolov8格式 息肉检测数据集介绍 数据集概述 名称&#xff1a;息肉检测数据集&#xff08;基于某公开的分割数据集调整&#xff09;用途&#xff1a;适用于目标检测任务&#xff0c;特别是内窥镜图像中的息肉检测格式&#xff1a;YOLO格式&#xff08;边…

YOLO11改进 | 注意力机制 | 轻量级的空间组增强模块SGE【全网独家】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 本文介绍了一个空间组增强&#xff08;S…

论文笔记:Prototypical Verbalizer for Prompt-based Few-shot Tuning

论文来源&#xff1a;ACL 2022 论文地址&#xff1a;https://arxiv.org/pdf/2203.09770.pdfhttps://arxiv.org/pdf/2203.09770.pdf 论文代码&#xff1a;https://github.com/thunlp/OpenPrompthttps://github.com/thunlp/OpenPrompt Abstract 基于提示的预训练语言模型&#…

highcharts样式记录

图表设置 const rendChart (min, max) > {Highcharts.setOptions({global: { useUTC: false },});Highcharts.chart(hourly-chart, {chart: {spacingBottom: 0,marginLeft: 53,marginTop: 10,marginBottom: 0,marginRight: 13,style: {fontSize: 0.2rem,color: #363a44,li…

Java创建型模式(二)——工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式、工厂模式扩展等完整详解,附有代码——案例)

文章目录 五.工厂模式5.1 概述5.2简单工厂模式5.2.1 概述5.2.2 结构5.2.3 实现5.2.4 优缺点5.2.5 扩展—静态工厂 5.3 工厂方法模式5.3.1概述5.3.2 结构5.3.3 实现5.3.4 优缺点 5.4 抽象工厂模式5.4.1 概述5.4.2 结构5.4.3 实现5.4.4 优缺点5.4.5 使用场景 5.5 工厂模式扩展 五…

MyBatis-Plus 之 typeHandler 的使用

一、typeHandler 的使用 1、存储json格式字段 如果字段需要存储为json格式&#xff0c;可以使用JacksonTypeHandler处理器。使用方式非常简单&#xff0c;如下所示&#xff1a; 在domain实体类里面要加上&#xff0c;两个注解 TableName(autoResultMap true) 表示自动…

JAVA基础 day12

一、File、IO流 File是java.io.包下的类&#xff0c;file类的对象&#xff0c;用于代表当前操作系统的文件&#xff08;可以代表文件、文件夹&#xff09;&#xff0c;使用File可以操作文件及文件夹。 注意&#xff1a;File只能对文件本身进行操作&#xff0c;不能读写文件里…

Redis到底是单线程还是多线程的?详解

1. Redis是单线程还是多线程的&#xff1f; Redis 的核心执行模型是单线程的&#xff0c;但自 Redis 6.0 版本起&#xff0c;在特定场景下支持了多线程处理。 1.1. Redis 的核心执行是单线程的 Redis 的单线程指的是 Redis 的⽹络 IO 以及键值对指令读写是由⼀个线程来执⾏的…