【YOLO11改进 - C3k2融合】C3k2融合YOLO-MS的MSBlock : 分层特征融合策略,轻量化网络结构

简介: 【YOLO11改进 - C3k2融合】C3k2融合YOLO-MS的MSBlock : 分层特征融合策略,轻量化网络结构

介绍

摘要

我们旨在为目标检测领域提供一种高效且性能卓越的目标检测器,称为YOLO-MS。其核心设计基于一系列调查研究,关于不同核心大小的卷积如何影响不同尺度物体的检测性能。研究结果是一种新策略,能够显著增强实时目标检测器的多尺度特征表示能力。为验证我们策略的有效性,我们构建了一个网络架构,命名为YOLO-MS。我们从零开始在MS COCO数据集上训练我们的YOLO-MS,不依赖于任何其他大规模数据集,如ImageNet,或预训练权重。无需任何附加装置,我们的YOLO-MS就超越了最新的实时目标检测器,包括YOLO-v7和RTMDet,当使用可比较的参数数量和FLOPs时。以YOLO-MS的XS版本为例,仅有4.5M的可学习参数和8.7G FLOPs,就能在MS COCO上达到43%+的AP得分,比相同模型大小的RTMDet高出约2%+。此外,我们的工作还可以作为一个即插即用的模块用于其他YOLO模型。通常,我们的方法显著提高了YOLOv8的AP,从37%+提高到了40%+,而且使用的参数和FLOPs还更少。

YOLO11目标检测创新改进与实战案例专栏

文章目录: YOLO11创新改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLO11目标检测创新改进与实战案例

创新点

  1. 多尺度构建块(MS-Block)设计:YOLO-MS引入了MS-Block,一个具有分层特征融合策略的构建块,旨在增强实时目标检测器在提取多尺度特征时的能力。MS-Block通过将输入特征分割并传递到多个分支中,并在每个分支中应用具有不同Kernel大小的Inverted Bottleneck Block,来编码不同尺度的特征。

  2. 异构Kernel选择(HKS)协议:为了更有效地捕捉多尺度语义信息,YOLO-MS提出了一种在不同阶段中采用不同大小Kernel的策略。具体地,在编码器的浅层使用小Kernel卷积处理高分辨率特征,在深层使用大Kernel卷积捕捉更广泛的信息。这种设计使得YOLO-MS能够在保持高效推理的同时,提升对不同尺寸目标的检测性能。

  3. 高效性能与准确性的平衡:YOLO-MS在保持较低计算复杂度的条件下,实现了优于当时最先进实时目标检测器的性能。这得益于其精心设计的网络结构和创新的特征表示策略,如MS-Block和HKS协议,使得模型在不依赖任何大规模数据集预训练的情况下,也能在公开数据集上达到高精度。

  4. 即插即用的模块化设计:YOLO-MS不仅作为一个独立的目标检测模型存在,其核心组件如MS-Block也可以作为即插即用的模块,集成到其他YOLO系列模型中,以提升这些模型在多尺度目标检测任务上的性能。

南开大学提出YOLO-MS | 超越YOLOv8与RTMDet,即插即用打破性能瓶颈 (qq.com)

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

YOLO-MS是一种高效且性能卓越的目标检测器,它通过利用不同核心尺寸的卷积来改善多尺度特征表示的能力,特别是在处理不同尺度的目标时。其核心创新点在于MSBlock和异构Kernel选择(HKS)协议,这些设计使得YOLO-MS能够在维持高效率的同时,提供出色的检测性能。

MSBlock是一种包含分层特征融合策略的构建块,它利用不同尺寸的内核来提取丰富的多尺度特征,同时通过Inverted Bottleneck Block来降低计算成本。HKS协议则指导在网络的不同深度层次使用不同大小的核心,以便在浅层更高效地处理高分辨率特征,在深层捕获更广泛的信息。

YOLO-MS在没有依赖大规模数据集或预训练权重的情况下,在MS COCO数据集上进行训练,显示出其在相同数量的参数和FLOPs条件下,相比最新的实时目标检测器(如YOLO-v7和RTMDet)有着更好的性能。YOLO-MS不仅可以作为一个独立的模型使用,而且其设计也可以作为其他YOLO模型的即插即用模块,进一步提升这些模型的性能。

南开大学提出YOLO-MS | 超越YOLOv8与RTMDet,即插即用打破性能瓶颈 (qq.com)

核心代码

import torch
import torch.nn as nn

# MSBlock 层类,用于构建多尺度卷积块
class MSBlockLayer(nn.Module):
    def __init__(self, inc, ouc, k) -> None:
        super().__init__()
        # 输入卷积、中间卷积、输出卷积
        self.in_conv = Conv(inc, ouc, 1)
        self.mid_conv = Conv(ouc, ouc, k, g=ouc)
        self.out_conv = Conv(ouc, inc, 1)

    def forward(self, x):
        # 通过输入、中间、输出卷积层顺序处理数据
        return self.out_conv(self.mid_conv(self.in_conv(x)))

# MSBlock模块,包含多个MSBlockLayer,用于处理不同尺度的特征
class MSBlock(nn.Module):
    def __init__(self, inc, ouc, kernel_sizes, in_expand_ratio=3., mid_expand_ratio=2., layers_num=3,
                 in_down_ratio=2.)-> None:
        super().__init__()
        # 根据扩展比例计算中间通道数
        in_channel = int(inc * in_expand_ratio // in_down_ratio)
        self.mid_channel = in_channel // len(kernel_sizes)
        groups = int(self.mid_channel * mid_expand_ratio)
        # 输入卷积层
        self.in_conv = Conv(inc, in_channel)

        self.mid_convs = []
        # 根据给定的核大小创建多个MSBlockLayer
        for kernel_size in kernel_sizes:
            if kernel_size == 1:
                self.mid_convs.append(nn.Identity())
                continue
            mid_convs = [MSBlockLayer(self.mid_channel, groups, k=kernel_size) for _ in range(int(layers_num))]
            self.mid_convs.append(nn.Sequential(*mid_convs))
        self.mid_convs = nn.ModuleList(self.mid_convs)
        # 输出卷积层
        self.out_conv = Conv(in_channel, ouc, 1)

        self.attention = None

    def forward(self, x):
        out = self.in_conv(x)
        channels = []
        # 分别处理每个通道范围内的特征,并合并
        for i, mid_conv in enumerate(self.mid_convs):
            channel = out[:, i * self.mid_channel:(i + 1) * self.mid_channel, ...]
            if i >= 1:
                channel = channel + channels[i - 1]
            channel = mid_conv(channel)
            channels.append(channel)
        out = torch.cat(channels, dim=1)
        out = self.out_conv(out)
        if self.attention is not None:
            out = self.attention(out)
        return out
AI 代码解读

YOLO11引入代码

根目录下的ultralytics/nn/目录,新建一个C3k2目录,然后新建一个以 C3k2_MSBlock为文件名的py文件, 把代码拷贝进去。

task与yaml配置

详见:https://blog.csdn.net/shangyanaf/article/details/143358187

目录
打赏
0
1
1
0
95
分享
相关文章
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
50 9
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
RT-DETR改进策略【Neck】| ASF-YOLO 注意力尺度序列融合模块改进颈部网络,提高小目标检测精度
RT-DETR改进策略【Neck】| ASF-YOLO 注意力尺度序列融合模块改进颈部网络,提高小目标检测精度
45 3
RT-DETR改进策略【Neck】| ASF-YOLO 注意力尺度序列融合模块改进颈部网络,提高小目标检测精度
RT-DETR改进策略【Neck】| ECCV-2024 RCM 矩形自校准模块 优化颈部网络
RT-DETR改进策略【Neck】| ECCV-2024 RCM 矩形自校准模块 优化颈部网络
51 10
RT-DETR改进策略【Neck】| ECCV-2024 RCM 矩形自校准模块 优化颈部网络
RT-DETR改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
RT-DETR改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
44 11
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
87 17
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
64 10
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
73 10
云计算与网络安全:云服务、网络安全、信息安全等技术领域的融合与挑战
本文将探讨云计算与网络安全之间的关系,以及它们在云服务、网络安全和信息安全等技术领域中的融合与挑战。我们将分析云计算的优势和风险,以及如何通过网络安全措施来保护数据和应用程序。我们还将讨论如何确保云服务的可用性和可靠性,以及如何处理网络攻击和数据泄露等问题。最后,我们将提供一些关于如何在云计算环境中实现网络安全的建议和最佳实践。
网络安全与信息安全:漏洞、加密与意识的交织
在数字时代的浪潮中,网络安全与信息安全成为维护数据完整性、保密性和可用性的关键。本文深入探讨了网络安全中的漏洞概念、加密技术的应用以及提升安全意识的重要性。通过实际案例分析,揭示了网络攻击的常见模式和防御策略,强调了教育和技术并重的安全理念。旨在为读者提供一套全面的网络安全知识框架,从而在日益复杂的网络环境中保护个人和组织的资产安全。

热门文章

最新文章