YOLOv11对比YOLOV8网络结构变化分析,帮助你真正的理解和学习yolo框架

Yolov11源码解读 DWConv是一种高效的卷积方式,通过单独处理每个通道来减少计算量,结合 1x1 的点卷积,形成深度可分离卷积,可以在保持网络性能的同时极大地减少模型的计算复杂度和参数量。 阅读详情

本文在大佬的文章YOLOv11 | 一文带你深入理解ultralytics最新作品yolov11的创新 | 训练、推理、验证、导出 (附网络结构图)基础上做了一些补充。

一、YOLOv11和YOLOv8对比

在这里插入图片描述

二、YOLOv11的网络结构图

下面的图片为YOLOv11的网络结构图。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、YOLOv11新提出的模块

1、 提出C3k2机制,其中C3k2有参数为c3k,其中在网络的浅层c3k设置为False(下图中可以看到c3k2第二个参数被设置为False,就是对应的c3k参数)。

在这里插入图片描述
C3k2就相当于YOLOv8中的C2f,其网络结构为一致的,其中的C3k机制的网络结构图如下图所示
在这里插入图片描述
可将yolov11训练好的pt模型,通过命令转化成onnx模型:

yolo task=detect mode=export model=runs/detect/train/weights/best.pt format=onnx 

再送入Netron网站打开,获取模型结构。
要想获得每一层的特征图大小,如下图所示,需要对转化好的onnx进行简化后得到的模型再送入Netron打开即可。
sim命令如下:

pip install onnx-simplifier
python -m onnxsim /runs/detect/train/weights/best.onnx  runs/detect/train/weights/best_sim.onnx

以下yolov11s的第3层c3k2(第二个参数设置为False)的onnx结构图。
在这里插入图片描述
由于s的depth=0.5,所以yaml文件中卷积通道数减半。
在这里插入图片描述
以下是第6层c3k2第二个参数设置为True的onnx结构图。
在这里插入图片描述
在这里插入图片描述

yolov11模块代码:

class C3k2(C2f):
    """Faster Implementation of CSP Bottleneck with 2 convolutions."""

    def __init__(self, c1, c2, n=1, c3k=False, e=0.5, g=1, shortcut=True):
        """Initializes the C3k2 module, a faster CSP Bottleneck with 2 convolutions and optional C3k blocks."""
        super().__init__(c1, c2, n, shortcut, g, e)
        self.m = nn.ModuleList(
            C3k(self.c, self.c, 2, shortcut, g) if c3k else Bottleneck(self.c, self.c, shortcut, g) for _ in range(n)
        )
class C3k(C3):
    """C3k is a CSP bottleneck module with customizable kernel sizes for feature extraction in neural networks."""

    def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5, k=3):
        """Initializes the C3k module with specified channels, number of layers, and configurations."""
        super().__init__(c1, c2, n, shortcut, g, e)
        c_ = int(c2 * e)  # hidden channels
        # self.m = nn.Sequential(*(RepBottleneck(c_, c_, shortcut, g, k=(k, k), e=1.0) for _ in range(n)))
        self.m = nn.Sequential(*(Bottleneck(c_, c_, shortcut, g, k=(k, k), e=1.0) for _ in range(n)))


class Bottleneck(nn.Module):
    """Standard bottleneck."""

    def __init__(self, c1, c2, shortcut=True, g=1, k=(3, 3), e=0.5):
        """Initializes a standard bottleneck module with optional shortcut connection and configurable parameters."""
        super().__init__()
        c_ = int(c2 * e)  # hidden channels
        self.cv1 = Conv(c1, c_, k[0], 1)
        self.cv2 = Conv(c_, c2, k[1], 1, g=g)
        self.add = shortcut and c1 == c2

    def forward(self, x):
        """Applies the YOLO FPN to input data."""
        return x + self.cv2(self.cv1(x)) if self.add else self.cv2(self.cv1(x))

2、第二个创新点是提出C2PSA机制,这是一个C2(C2f的前身)机制内部嵌入了一个多头注意力机制,在这个过程中我还发现作者尝试了C2fPSA机制但是估计效果不如C2PSA,有的时候机制有没有效果理论上真的很难解释通,下图为C2PSA机制的原理图,仔细观察把Attention哪里去掉则C2PSA机制就变为了C2所以我上面说C2PSA就是C2里面嵌入了一个PSA机制。

在这里插入图片描述

在这里插入图片描述
以下是第10层C2PSA第二个参数设置为True的onnx结构图。
在这里插入图片描述
在这里插入图片描述


class C2PSA(nn.Module):
    """
    C2PSA module with attention mechanism for enhanced feature extraction and processing.

    This module implements a convolutional block with attention mechanisms to enhance feature extraction and processing
    capabilities. It includes a series of PSABlock modules for self-attention and feed-forward operations.

    Attributes:
        c (int): Number of hidden channels.
        cv1 (Conv): 1x1 convolution layer to reduce the number of input channels to 2*c.
        cv2 (Conv): 1x1 convolution layer to reduce the number of output channels to c.
        m (nn.Sequential): Sequential container of PSABlock modules for attention and feed-forward operations.

    Methods:
        forward: Performs a forward pass through the C2PSA module, applying attention and feed-forward operations.

    Notes:
        This module essentially is the same as PSA module, but refactored to allow stacking more PSABlock modules.

    Examples:
        >>> c2psa = C2PSA(c1=256, c2=256, n=3, e=0.5)
        >>> input_tensor = torch.randn(1, 256, 64, 64)
        >>> output_tensor = c2psa(input_tensor)
    """

    def __init__(self, c1, c2, n=1, e=0.5):
        """Initializes the C2PSA module with specified input/output channels, number of layers, and expansion ratio."""
        super().__init__()
        assert c1 == c2
        self.c = int(c1 * e)
        self.cv1 = Conv(c1, 2 * self.c, 1, 1)
        self.cv2 = Conv(2 * self.c, c1, 1)

        self.m = nn.Sequential(*(PSABlock(self.c, attn_ratio=0.5, num_heads=self.c // 64) for _ in range(n)))

    def forward(self, x):
        """Processes the input tensor 'x' through a series of PSA blocks and returns the transformed tensor."""
        a, b = self.cv1(x).split((self.c, self.c), dim=1)
        b = self.m(b)
        return self.cv2(torch.cat((a, b), 1))
class PSABlock(nn.Module):
    """
    PSABlock class implementing a Position-Sensitive Attention block for neural networks.

    This class encapsulates the functionality for applying multi-head attention and feed-forward neural network layers
    with optional shortcut connections.

    Attributes:
        attn (Attention): Multi-head attention module.
        ffn (nn.Sequential): Feed-forward neural network module.
        add (bool): Flag indicating whether to add shortcut connections.

    Methods:
        forward: Performs a forward pass through the PSABlock, applying attention and feed-forward layers.

    Examples:
        Create a PSABlock and perform a forward pass
        >>> psablock = PSABlock(c=128, attn_ratio=0.5, num_heads=4, shortcut=True)
        >>> input_tensor = torch.randn(1, 128, 32, 32)
        >>> output_tensor = psablock(input_tensor)
    """

    def __init__(self, c, attn_ratio=0.5, num_heads=4, shortcut=True) -> None:
        """Initializes the PSABlock with attention and feed-forward layers for enhanced feature extraction."""
        super().__init__()

        self.attn = Attention(c, attn_ratio=attn_ratio, num_heads=num_heads)
        self.ffn = nn.Sequential(Conv(c, c * 2, 1), Conv(c * 2, c, 1, act=False))
        self.add = shortcut

    def forward(self, x):
        """Executes a forward pass through PSABlock, applying attention and feed-forward layers to the input tensor."""
        x = x + self.attn(x) if self.add else self.attn(x)
        x = x + self.ffn(x) if self.add else self.ffn(x)
        return x

3. 第三个创新点可以说是原先的解耦头中的分类检测头增加了两个DWConv,具体的对比大家可以看下面两个图下面的是YOLOv11的解耦头,上面的是YOLOv8的解耦头.

在这里插入图片描述
head部分分类头定义:
v8:
在这里插入图片描述
v11:
在这里插入图片描述

DWconv卷积代码
在这里插入图片描述
在这里插入图片描述
我们上面看到了在分类检测头中YOLOv11插入了两个DWConv这样的做法可以大幅度减少参数量和计算量(原先两个普通的Conv大家要注意到卷积和是由3变为了1的,这是形成了两个深度可分离Conv)
可参考博客https://blog.csdn.net/m0_56563749/article/details/133150979

4. 非创新点的SPPF模块

在这里插入图片描述
第9层SPPF的onnx结构图
在这里插入图片描述
SPPF模块代码
在这里插入图片描述

【YOLO系列】网络结构图详解 Backbone 是目标检测模型的“特征提取器”,负责从输入图像中提取不同层次的语义特征。YOLO11 的 backbone 采用多尺度特征提取设计,最终输出 P3/8、P4/16、P5/32 三种尺度的特征图(分辨率依次降低,语义信息依次增强),用于后续检测头的目标识别与定位。注释含义: (网络层数索引)-(特征金字塔级数) / (相对于输入图像的下采样倍数) 阅读详情

相关推荐

Yolov8与Yolov11的网络架构的区别

在小规模自定义数据集(如工业螺母检测)上,两者的mAP(0.5)均达到0.995,但YOLOv8在更严格的mAP(0.5~0.95)指标上略优。:替换YOLOv8的主干为EfficientNetV1,通过均衡缩放深度、宽度和分辨率,降低参数量并提升精度(实验显示mAP提升约2%)。YOLOv11通过优化网络结构和引入轻量化模块(如DWConv),在保持实时性的同时降低了计算量,适合边缘设备部署。YOLOv11对模型的深度(层数)和宽度(通道数)进行了优化调整,增强了复杂场景下的鲁棒性。

weixin_38991876的博客 5050

2. YOLO11网络结构详细解析(以n版本为例)

网上的关于YOLO11网格结构图,要么有错误,要么细节不清晰。我们对YOLO11网格结构进行了具体解析。

FXGroup博客 1万+

YOLOv11来了,使用YOLOv11训练自己的数据集和推理(附YOLOv11网络结构图)

YOLOv11 由 Ultralytics 在 2024 年 9 月 30 日发布, 最新的 YOLOv11 模型在之前的 YOLO 版本引入了新功能和改进,以进一步提高性能和灵活性。YOLO11 在快速、准确且易于使用,使其成为各种对象检测和跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 28万+

YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12的网络结构图

本文将给出YOLO各版本网络结构图的绘制方法及图。本文所展示均为YOLO各模型n或s相对轻量的网络结构,部分为通用。

qq_44231797的博客 1万+

YOLOv11训练自己的数据集,从代码下载到实例测试 (含YOLOv11网络结构图)

在Windows10上配置CUDA环境教程2024年9月30日,YOLOv11是最新发布的计算机视觉模型。支持多种任务,包括目标检测、实例分割、图像分类、姿态估计、有向目标检测以及物体跟踪等,本文主要讲述其检测任务的模型搭建训练流程。以上就是YOLOv11训练自己数据集的全部过程啦,欢迎大家在评论区交流~

Limiiiing的博客 5万+

YOLOv11(ultralytics新作品-YOLOv8后续) | 一文带你深入理解yolov11全部内容(附网络结构图)

YOLOv11 是 Ultralytics 推出的最新的集目标检测、语义分割、图像分类等任务于一体的神经网络,其基本原理涉及到主干网络、颈部网络(neck)、检测头等部分,以下是详细介绍:变化1:C2f模块更换成了C3k2模块;变化2:在第九层SPPF之后,YOLOv11加上了一层C2PSA模块;变化三:在检测部分,YOLOv11也替换了C2F模块为C3K2模块;并且检测头内卷积更换成了深度可分离卷积下面详细介绍这三个变化:首先,第一个变化的C3k2模块其实并没有改变网络结构,其网络结构与C2F还是一样的,

qq_41304809的博客 1万+

从YOLOv1到YOLOv8的YOLO系列最新综述【2023年4月】

这是一篇2023.4.4发表的arXiv关于YOLO系列综述

关于我的学习记录 11万+

YOLOv11 | 一文带你深入理解ultralytics最新作品yolov11的创新 | 训练、推理、验证、导出 (附网络结构图)

ultralytics发布了最新的作品YOLOv11,这一次YOLOv11的变化相对于ultralytics公司的上一代作品YOLOv8变化还是很大的(YOLOv9、YOLOv10均不是ultralytics公司作品),其中改变的位置涉及到C2f变为C3K2,在SPPF后面加了一层类似于注意力机制的C2PSA,还有一个变化大家从yaml文件是看不出来的就是它的检测头内部替换了两个DWConv,在损失函数方面就没有变化了还是采用的CIoU作为边界框回归损失,下面带大家深入理解一下ultralytics最新作品

Snu77的博客 18万+

视觉学习笔记6——YOLOv5、ultralytics部署与yolov5、yolov8、yolov11的网络结构

在人工智能机器学习领域中,目前最火的莫过于计算机视觉,在计算机视觉方向中,目前最火的莫过于图像分类目标检测,在图像分类目标检测算法中,目前最火的莫过于图像分类目标检测YOLO体系。目前最新的是YOLOv7,不过因为还不稳定,所以选择更为成熟的v5进行研究,而且v7也是在v5的基础上改进来的,所以还是很有研究意义的。..................

qq_45848817的博客 5199

机械臂控制的基础知识

在现代工业中,机械臂的自动化控制已经成为智能制造的重要一环。控制机械臂涉及多个学科,包括机械设计、运动学、控制理论和编程等。本文将从以下几个方面介绍机械臂控制的核心知识点:机械臂的构成、运动学分析、动力学建模、控制方法及编程实现。

qq_45728381的博客 5464

基于Multisim的模电调幅发射机仿真设计

振荡器产生的高频信号的功率很小,所以有必要对高频信号进行功率放大,有利于信号的调制发射。缓冲电路将主振荡器和高频功放电路相隔离,以减小功放电路对主振荡器的影响。缓冲电路可以用射极跟随器电路来实现,其作用就是前后级的阻抗相互匹配,减小前后级的影响。总电路的仿真结果见下图:示波器1~4分别是主振荡器、缓冲电路、高频放大电路和调幅电路的输出波形。由于载波频率稳定度≤10-3,所以可以采用并联型改进电容反馈式三端振荡器(Seiler电路)谐振回路,滤除其他频率的成分,得到与载波(假设。(1)缓冲电路的设计与实现。

Eve223322的博客 4557

YOLO11与YOLOv8对比实测,谁更快更准?

本文介绍了基于星图GPU平台自动化部署YOLO11镜像的完整流程,结合其在COCO数据集上的实测表现,对比了YOLO11与YOLOv8在精度、速度和资源占用方面的差异。结果表明,YOLO11在参数更少的情况下实现了更高mAP与更快推理速度,适用于工业质检、安防监控等AI视觉应用开发场景。

weixin_28746213的博客 895

001-基础入门-Web演示源码&资源&工具箱等

小迪安全2023笔记

wushangyu32335的博客 4217

[目标检测实验系列] YOLOv8到v11源码逐行对比:核心改动与优化全解析(超详细流程,轻松入门)

[目标检测实验系列] YOLOv8到v11源码逐行对比:核心改动与优化全解析(超详细流程,轻松入门)

弗兰-随风小欢的博客 3480

12、每日卫星任务规划问题的不同公式

本文探讨了卫星任务规划问题的多种数学公式表示方法,包括传统的整数线性规划(ILP)模型、改进的基于路径的公式、基于集合覆盖的公式以及动态规划公式。通过案例研究比较了不同公式的求解效率和适用场景,并提供了使用Python进行实际求解的操作步骤。最后讨论了进一步优化策略及未来研究方向,旨在为解决卫星任务规划问题提供全面的理论支持和实践指导。

assembly8low的博客 197

Central Finance 全景解析:用 SAP S/4HANA 构建跨系统的财务中台与渐进式转型路径

Central Finance 是基于 SAP S/4HANA 的一种部署与应用场景:在不打断现有异构源系统运营的前提下,把多套 SAP 与非 SAP 系统中的财务与管理会计数据实时/准实时复制到一套中心化的 SAP S/4HANA 中,作为统一的记账与分析底座,逐步把选定的财务流程(如预算控制、付款、固定资产结账等)迁入中心系统。这让企业既能快速获得统一报表与统一核算结构,又为未来的整体迁移留出了弹性路径。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 363

YOLOV11|YOLO12改进系列指南

YOLOV11V12改进系列指南,仅仅69.9包含YOLOV11V12模型改进方案、含有440+种改进的集合,且含有多种二次创新和原创改进!

qq_37706472的博客 15万+

PointNet++改进策略目录

后续我将如何使用文章中创新点加入的PointNet++中代码实现部分进行更新。

u012901740的博客 2189

YOLO11学习参考文章汇总

下图的右边便是该组件的结构,可以看出其作用就是减少计算量。在该文章中介绍了ResNet网络中Bottleneck结构,YOLOV5网络中的Bottleneck结构,YOLOV8网络中Bottleneck结构。该文章中介绍了几个基础组件较为重要,Bottleneck,C2f,C3。,其结构如下图所示。Split模块就是将特征图按通道数拆分,比如64。,该文绘制了YOLO11的结构图,如下图所示。2.YOLO11项目的目录结构。,作用融合不同维度的特征。个通道,拆成32和32。4.YOLO11改进示例。

2401_84049789的博客 1119

光学系统仿真软件:OSLO_(13).衍射光学元件设计v1

目标函数是设计DOE的关键步骤之一。目标函数可以是一个具体的光强分布,也可以是一个特定的波前形状。在仿真软件中,目标函数通常用数学表达式或数据文件来定义。假设我们需要设计一个二元相位掩模,使其在特定位置生成三个焦点。我们可以定义一个目标函数来描述这三个焦点的光强分布。# 定义目标函数"""定义一个多焦点目标函数:param x: 横坐标:param y: 纵坐标:param z1: 第一个焦点的深度:param z2: 第二个焦点的深度:param z3: 第三个焦点的深度。

kkchenjj的博客 996

架构师之HBase vs MongoDB 技术选型与场景决策实战案例

面对海量数据和高并发查询,该选 HBase 还是 MongoDB?本文为你提供完整的决策框架!从数据模型对比、架构解析、六大真实场景(电信 CDR、金融行情、广告点击流、电商商品、社交档案、内容管理)到性能、一致性、运维全面对比,助你在 PB 级时序数据和灵活查询之间做出精准选择!

肖哥弹架构博客 1086

YOLOv11与YOLOv8网络结构对比:从yolo11.yaml到yolov8.yaml的演进与优化

本文深入对比了YOLOv11与YOLOv8的网络结构差异,从yolo11.yaml到yolov8.yaml的演进与优化。详细解析了两个版本在骨干网络、检测头结构、配置文件参数及性能优化方面的关键改进,帮助开发者理解YOLO系列算法的技术路线选择与实战应用策略。

weixin_30825581的博客 497

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

基于YOLOv8/YOLOv10/YOLOv11深度学习的遛狗牵绳智能检测系统

本项目是一个基于YOLO目标检测算法的遛狗牵绳智能识别系统,旨在通过计算机视觉技术自动识别和监控宠物犬的牵绳状态,为城市宠物管理提供智能化解决方案。基于YOLOv8v10v11基于深度学习的遛狗牵绳检测系统数据集是深度学习项目成功的关键基础,高质量、规范的数据集对于模型训练和最终性能具有决定性影响。本项目的数据集经过精心收集、整理和标注,专门针对遛狗牵绳检测场景进行了优化设计。类别ID英文名称中文名称类别说明0Dog疑似无主流浪狗检测到犬只但无法清晰观察到牵绳状态,可能是流浪犬或牵绳被遮挡。

机器学习,深度学习,计算机视觉爱好者,整理分享技术资料与项目案例。 1114

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

YOLOv8是否支持YOLOv11?未来版本预测与讨论

尽管社区热议“YOLOv11”,但该版本并不存在,更多是技术演进的心理预期。YOLOv8凭借模块化设计、多任务支持和容器化部署,已具备应对未来架构的扩展能力。其真正的优势在于生态成熟、兼容性强,无需追逐虚名即可通过更新获得前沿功能。

weixin_42402664的博客 672

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

基于YOLOv8/YOLOv10/YOLOv11/YOLOv12与SpringBoot的小目标车辆检测系统(千问+DeepSeek智能分析+web交互界面+前后端分离+YOLO数据)

本项目旨在设计并实现一个集成了前沿深度学习模型与现代化Web技术的综合性“小目标车辆检测与智能分析系统”。系统核心采用最新的YOLO系列模型作为检测引擎,通过集成与对比YOLOv8、YOLOv10、YOLOv11及YOLOv12四种高性能版本,为用户提供灵活、强大的小目标车辆检测能力。系统后端基于SpringBoot框架构建,采用前后端分离的架构模式,确保了系统的高内聚、低耦合与良好的可扩展性。前端提供直观的Web交互界面,便于用户进行操作与管理。

斌擎科技 676
上一篇: YOLOV10-pose,用yolov10做关键点检测,舍弃非极大值抑制(nms)
下一篇: 一文带你搞定Ultralytics(yolov11版本)中的RTDETR训练以及预测的代码解析和流程分析
早茶和猫
博客等级 码龄9年 1万+粉丝 18原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值