【YOLOv8改进】 RFB (Receptive Field Block):多分支卷积块

简介: **RFB Net是针对目标检测的轻量级解决方案,它通过设计灵感来自人眼感受野的模块提升特征表示。RFB块包含多分支卷积,模拟不同尺度和偏心率,增强轻量模型如SSD的性能。在保持实时速度的同时,RFB Net在准确性上媲美深度检测器。代码可在GitHub找到。**

介绍

image-20240604085730595

摘要

当前表现最好的目标检测器依赖于深度卷积神经网络(CNN)骨干,例如ResNet-101和Inception,得益于其强大的特征表示能力,但却面临高计算成本。相反,一些轻量级模型的检测器可以实现实时处理,但其准确性常常受到批评。本文中,我们探索了一种替代方法,通过使用手工设计的机制来增强轻量级特征,从而构建一个快速且准确的检测器。受人类视觉系统中感受野(RF)结构的启发,我们提出了一种新颖的感受野块(RFB)模块,该模块考虑了感受野的大小和偏心率之间的关系,以增强特征的可辨性和鲁棒性。我们进一步将RFB集成到SSD的顶部,构建了RFB Net检测器。为了评估其有效性,我们在两个主要基准上进行了实验,结果显示RFB Net能够在保持实时速度的同时达到先进的深度检测器的性能。代码可在https://github.com/ruinmessi/RFBNet获取。

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

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

专栏链接: YOLO基础解析+创新改进+实战案例

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

Receptive Field Block(RFB)模块是一种多分支卷积块,旨在增强轻量级CNN模型学习到的深层特征,以提高目标检测的准确性和速度。

  1. 结构组成

    • RFB模块由两个主要组件组成:多分支卷积层和后续的扩张池化或卷积层。

    • 多分支卷积层采用不同的核大小,类似于Inception结构,用于模拟多尺度的感受野。

    • 扩张池化或卷积层用于控制感受野的偏心性,模拟人类视觉系统中感受野大小和偏心性之间的关系。

      image-20240604085948287

  2. 功能

    • RFB模块旨在提高特征的可区分性和鲁棒性,使得轻量级CNN模型也能够产生深层次的特征表示。
    • 通过多分支卷积和扩张操作,模拟人类视觉系统中感受野的特性,从而更好地捕获目标检测任务中的多尺度信息。
  3. 模块设计

    • RFB模块采用多个分支,每个分支包含不同的卷积核大小和扩张率,以模拟不同尺度的感受野。
    • 最终,所有分支的特征图被串联起来,形成一个空间池化或卷积数组,以生成最终的特征表示。
  4. 应用

    • RFB模块被嵌入到SSD等目标检测框架中,用于改善从轻量级骨干网络提取的特征,从而提高检测器的准确性和速度。
    • 通过引入RFB模块,研究人员实现了在保持实时性能的同时,达到了先进深度检测器的性能水平。

      核心代码

 class BasicRFB(nn.Module):

    def __init__(self, in_planes, out_planes, stride=1, scale=0.1, visual=1):
        super(BasicRFB, self).__init__()
        self.scale = scale
        self.out_channels = out_planes
        inter_planes = in_planes // 8
        # 定义分支0,包含两个卷积层,第一个卷积层的卷积核大小为1,第二个卷积层的卷积核大小为3,步长为1,膨胀系数为visual
        self.branch0 = nn.Sequential(
            BasicConv(in_planes, 2*inter_planes, kernel_size=1, stride=stride),
            BasicConv(2*inter_planes, 2*inter_planes, kernel_size=3, stride=1, padding=visual, dilation=visual, relu=False)
        )
        # 定义分支1,包含三个卷积层,第一个卷积层的卷积核大小为1,第二个卷积层的卷积核大小为3,步长为stride,第三个卷积层的卷积核大小为3,膨胀系数为visual+1
        self.branch1 = nn.Sequential(
            BasicConv(in_planes, inter_planes, kernel_size=1, stride=1),
            BasicConv(inter_planes, 2*inter_planes, kernel_size=(3, 3), stride=stride, padding=(1, 1)),
            BasicConv(2*inter_planes, 2*inter_planes, kernel_size=3, stride=1, padding=visual+1, dilation=visual+1, relu=False)
        )
        # 定义分支2,包含四个卷积层,第一个卷积层的卷积核大小为1,第二个卷积层的卷积核大小为3,步长为1,第三个卷积层的卷积核大小为3,步长为stride,第四个卷积层的卷积核大小为3,膨胀系数为2*visual+1
        self.branch2 = nn.Sequential(
            BasicConv(in_planes, inter_planes, kernel_size=1, stride=1),
            BasicConv(inter_planes, (inter_planes//2)*3, kernel_size=3, stride=1, padding=1),
            BasicConv((inter_planes//2)*3, 2*inter_planes, kernel_size=3, stride=stride, padding=1),
            BasicConv(2*inter_planes, 2*inter_planes, kernel_size=3, stride=1, padding=2*visual+1, dilation=2*visual+1, relu=False)
        )
        # 定义一个线性卷积层
        self.ConvLinear = BasicConv(6*inter_planes, out_planes, kernel_size=1, stride=1, relu=False)
        # 定义一个shortcut路径的卷积层
        self.shortcut = BasicConv(in_planes, out_planes, kernel_size=1, stride=stride, relu=False)
        # 定义一个ReLU激活层
        self.relu = nn.ReLU(inplace=False)

    def forward(self, x):
        # 前向传播:分别通过三个分支
        x0 = self.branch0(x)
        x1 = self.branch1(x)
        x2 = self.branch2(x)
        # 将三个分支的输出沿通道维度拼接
        out = torch.cat((x0, x1, x2), 1)
        # 通过线性卷积层
        out = self.ConvLinear(out)
        # 通过shortcut路径的卷积层
        short = self.shortcut(x)
        # 进行加权求和
        out = out * self.scale + short
        # 通过ReLU激活层
        out = self.relu(out)
        return out

task与yaml配置

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

相关文章
|
7月前
|
机器学习/深度学习 计算机视觉 Python
【DRConv】动态区域感知卷积结构可提升卷积的表示能力 | 复现《Dynamic Region-Aware Convolution》
【DRConv】动态区域感知卷积结构可提升卷积的表示能力 | 复现《Dynamic Region-Aware Convolution》
227 1
【DRConv】动态区域感知卷积结构可提升卷积的表示能力 | 复现《Dynamic Region-Aware Convolution》
|
1月前
|
机器学习/深度学习 测试技术 计算机视觉
【YOLOv11改进 - 注意力机制】LSKA(Large Separable Kernel Attention):大核分离卷积注意力模块
【YOLOv11改进 - 注意力机制】LSKA(Large Separable Kernel Attention):大核分离卷积注意力模块
【YOLOv11改进 - 注意力机制】LSKA(Large Separable Kernel Attention):大核分离卷积注意力模块
|
5月前
|
机器学习/深度学习 编解码 测试技术
【YOLOv10改进-注意力机制】LSKNet(Large Selective Kernel Network ):空间选择注意力
YOLOv10专栏聚焦遥感目标检测,提出LSKNet,首个探索大型选择性核的模型。LSKNet利用LSKblock Attention动态调整感受野,处理不同目标的上下文。创新点还包括极化滤波和增强技术,提升信息保留和非线性输出。在HRSC2016等遥感基准上取得SOTA性能。LSKNet代码展示其网络结构,包括多阶段模块和注意力机制。详细配置和任务说明见相关链接。
|
6月前
|
计算机视觉
【CV大模型SAM(Segment-Anything)】如何保存分割后的对象mask?并提取mask对应的图片区域?
【CV大模型SAM(Segment-Anything)】如何保存分割后的对象mask?并提取mask对应的图片区域?
【CV大模型SAM(Segment-Anything)】如何保存分割后的对象mask?并提取mask对应的图片区域?
|
1月前
|
机器学习/深度学习 编解码 算法
【YOLOv11改进 - 注意力机制】MLCA(Mixed local channel attention):混合局部通道注意力
【YOLOv11改进 - 注意力机制】MLCA(Mixed local channel attention):混合局部通道注意力本项目提出了一种轻量级的 Mixed Local Channel Attention (MLCA) 模块,结合通道信息和空间信息,提升网络表达效果。基于此模块,开发了 MobileNet-Attention-YOLO (MAY) 算法,在 Pascal VOC 和 SMID 数据集上表现优异,mAP 分别提高了 1.0% 和 1.5%。MLCA 通过局部池化、一维卷积和信息融合,有效捕获局部和全局信息。项目代码和详细配置可在 GitHub 和 CSDN 获取。
|
5月前
|
计算机视觉
【YOLOv10改进-卷积Conv】动态蛇形卷积(Dynamic Snake Convolution)用于管状结构分割任务
YOLOv10专栏介绍了一种用于精确分割管状结构的新方法DSCNet,它结合了动态蛇形卷积、多视角融合和拓扑连续性约束损失。DSConv创新地聚焦细长局部结构,增强管状特征感知,而多视角融合和TCLoss则改善了全局形态理解和分割连续性。在2D和3D数据集上的实验显示,DSCNet在血管和道路等分割任务上超越了传统方法。DySnakeConv模块整合到YOLOv10中,提升了目标检测的准确性。[链接指向详细文章](https://blog.csdn.net/shangyanaf/article/details/140007047)
|
6月前
|
机器学习/深度学习 计算机视觉
YOLOv8改进 | 卷积模块 | 在主干网络中添加/替换蛇形卷积Dynamic Snake Convolution
本专栏介绍的DSCNet采用蛇形动态卷积,增强对管状结构特征提取,尤其适合血管等弯曲目标。动态卷积核自适应调整,灵感来自蛇形曲线,能灵活捕捉不同尺度细节。论文及官方代码链接已提供,适用于提升目标检测的准确性和鲁棒性。
|
6月前
|
测试技术 计算机视觉
【YOLOv8改进】LSKA(Large Separable Kernel Attention):大核分离卷积注意力模块 (论文笔记+引入代码)
YOLO目标检测专栏介绍了大可分卷积核注意力模块LSKA,用于解决VAN中大卷积核效率问题。LSKA通过分解2D卷积为1D卷积降低计算复杂度和内存占用,且使模型关注形状而非纹理,提高鲁棒性。在多种任务和数据集上,LSKA表现优于ViTs和ConvNeXt,代码可在GitHub获取。基础原理包括LSKA的卷积核分解设计和计算效率优化。示例展示了LSKA模块的实现。更多详情及配置参见相关链接。
|
6月前
|
机器学习/深度学习 编解码 算法
【YOLOv8改进】MLCA(Mixed local channel attention):混合局部通道注意力(论文笔记+引入代码)
**摘要:** 本文提出轻量级MLCA模块,结合通道、空间、局部及全局信息,提升网络表达效率。在MobileNet-Attention-YOLO(MAY)中应用MLCA,于PASCAL VOC和SMID数据集上对比SE和CA,mAP提升1.0%和1.5%。论文及代码链接提供。MLCA通过局部池化和反池化处理,增强通道交互和空间信息,实现更精确的目标检测。详情见YOLO改进与实战专栏。
|
7月前
|
计算机视觉
【YOLOv8改进】动态蛇形卷积(Dynamic Snake Convolution)用于管状结构分割任务
YOLO目标检测专栏介绍了DSCNet,它针对血管和道路等管状结构的分割任务进行优化。DSCNet采用动态蛇形卷积(DSConv)聚焦细长结构,多视角融合策略增强全局形态理解,且通过持久同调的连续性约束损失改善拓扑连续性。DSConv在2D和3D数据集上表现优于传统方法,实现更高精度和连续性。该技术已应用于yolov8,提升对管状结构的检测效果。
下一篇
DataWorks