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

news2024/10/11 15:03:43

目录

一 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

效果图:

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

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

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

相关文章

MyBatis 用法详解

文章目录 一、普通 SQL1.1 注解实现:1.1.1 参数传递:1.1.2 增(Insert):1.1.3 删(Delete):1.1.4 改(Update):1.1.5 查(Select&#xff…

大疆M2006+C610 pid参数调优

官方给的示例代码里给的是1.5, 0.1, 0 但试了下空转时显然不太行. 自己摸索出0.8, 0.03, 0 表现如图中的蓝色线 期望速度先两秒的1000,然后一秒的2000,一秒的3000, 0 2000 表现还不错,可以看到0.5秒后与期望值的差距控制在大概10%之内,但还是感觉有些过调 对了先说一下基础知识…

UnityComputeShader Challenge2

UnityComputeShader Challenge2 大部分内容与Challenge1中的一致,重复的地方不做说明 using UnityEngine; using System.Collections;public class Challenge2 : MonoBehaviour {public ComputeShader shader;//纹理的分辨率,正方形public int texReso…

PHP拼团接龙商城系统小程序源码

拼团接龙商城系统,解锁购物新乐趣! 🎉 拼团接龙,购物也能玩出新花样 你是否厌倦了单调的购物方式?想要尝试一种既有趣又实惠的购物新体验?那么,“拼团接龙商城系统”绝对是你的不二之选&#…

fluke双绞线测试-外部串扰AxTALK-测试DEMO样本

外部串扰是电缆束或跳线中相邻电缆之间传输的噪音或串扰。外部串扰是 10GBASE-T 通信应用中主要的噪音源。 电缆线对(NEXT 和 FEXT)之间的串扰信号与传输信号有关,所以网络设备可以利用数字信号处理 (DSP) 技术除去数据信号中的串扰信号。但…

力扣题11~20

题11(中等): 思路: 这种题目第一眼就是双循环,但是肯定不行滴,o(n^2)这种肯定超时,很难接受。 所以要另辟蹊径,我们先用俩指针(标志位)在最左端和最右端&am…

Android iOS 使用 ARMS 用户体验监控(RUM)的最佳实践

作者:元泊 引言 背景信息 随着移动互联网技术的持续演进与全民互联网时代的深入,用户在 Android、iOS 应用程序、小程序、H5 游戏及网页等多元化平台上的交互时长显著增长。这一趋势加剧了用户体验(UX)场景的复杂性&#xff0c…

谈到数据集成和数据分析,这三个概念你得分清楚!

谈及数据集成和数据分析相关的概念,总是会提到异构数据源、异构数据库和分布式数据库,他们所涉及到的方面略有不同,今天来详细说下它们之间的区别! 一、异构数据源 异构数据源是指不同类型、不同结构、不同格式的数据源。 在数据…

PyQt基本功能

简单的窗口 #!/usr/bin/python3 # -*- coding: utf-8 -*- import sys # 这⾥引⼊了PyQt5.QtWidgets模块,这个模块包含了基本的组件 from PyQt5.QtWidgets import QApplication, QWidgetif __name__ __main__:# 每个PyQt5应⽤都必须创建⼀个应⽤对象# sys.argv是⼀…

雷达图怎么绘制?!超简单,一次性告诉你Python和R绘制方法~~

今天给大家介绍的的图表为雷达图(Radar/Spider chart),这种类型图表在生活中较常使用,是一种以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法。较常用的场景多为分析企业经营状况(收益性、生产性、流动性、安全性和成长性…

Vatee万腾平台:企业数字化转型的加速器

在当今这个信息化、数字化高速发展的时代,企业要想在激烈的市场竞争中立于不败之地,就必须紧跟时代步伐,实现数字化转型。而Vatee万腾平台,正是这样一款能够助力企业快速、高效完成数字化转型的利器,它如同一位经验丰富…

【MySQL】基本查询(下):更新、删除

3.Update 语法: UPDATE table_name SET column expr [, column expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...]举几个例子: 将孙悟空同学的数学成绩变更为 80 分: 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 …

【GUI】使用 PySide6 创建一个简单的计算器

使用 PySide6 创建一个简单的计算器 在这篇博客中,我们将探索如何使用 PySide6 创建一个简单的计算器应用程序。PySide6 是 Python 的 Qt 绑定,提供了一套强大的工具来开发图形用户界面(GUI)应用程序。通过这个项目,我…

PPT技巧:保护PPT文件的方法有哪些?

PPT文件制作好之后保证文件不出错应该是很重要的,毕竟是要拿出去展示的,今天分享PPT加密方法给大家。希望能够帮助大家保护好自己的PPT文件。 打开密码 如果想要其他人需要输入正确的密码才能够打开文件查看并编辑,我们可以给PPT文件设置打…

除了电商,API在其他行业中的应用有哪些?

API(应用程序编程接口)在不同行业中扮演着至关重要的角色,它们促进了数据共享、服务集成和业务创新。以下是API在各个行业中的一些关键应用案例和作用: 金融服务行业 在金融服务行业,API的应用正在改变游戏规则。通过…

【安装教程】飞牛私有云fnOS安装部署

原文链接:【安装教程】飞牛私有云fnOS安装部署 Hello,大家好啊!今天给大家带来一篇关于飞牛私有云fnOS的安装和使用指南。飞牛私有云(fnOS)是一款专为企业和个人用户设计的私有云操作系统,提供了安全、便捷…

睡眠监测免费软件

睡眠监测免费软件,在现代社会中,随着生活节奏的加快和压力的增加,许多人都面临着睡眠问题。失眠、浅睡、早醒等问题不仅影响着我们的身体健康,也对日常生活造成诸多不便。然而,科技的进步为我们提供了许多解决方案&…

力扣 二叉树 104. 二叉树的最大深度

104. 二叉树的最大深度 一、题目描述 二、理解 对照二叉树的递归定义: 如果树为空,则它是一个空树。如果树不为空,它由一个根节点和两个子树组成,分别是左子树和右子树,且左子树和右子树本身也是二叉树。 采用递归形…

潜水打捞系统助力,破解汽车打捞难题

随着人类活动的不断扩展,汽车落水事故频发,成为救援工作中的一大难题。汽车因其重量和结构特性,一旦沉入水体,打捞工作将面临巨大挑战。传统的打捞方法往往效率低下,且在操作过程中可能会对汽车造成进一步的损害&#…