当前位置: 首页 > news >正文

YOLOv11 改进 - 检测头 DetectDeepDBB 基于深度多样分支块的检测头:优化特征提取流程,改善多尺度目标检测

前言

本文介绍了 DeepDBB 技术在 YOLOv11 中的结合应用。DeepDBB 是改进的网络模块,继承 WDBB 思想,通过多分支和多样化卷积设计提升特征提取能力。其核心是多样化的多分支卷积结构,包括常规 KxK 卷积、1x1 卷积、深度可分离卷积和非对称卷积,能处理不同特征模式。还进行多尺度特征融合,增强模型对不同尺寸目标的处理能力。训练时用多分支结构,推理时合并卷积核,减少计算负担。我们将 DeepDBB 集成进 YOLOv11 的检测头,替换原有模块。实验表明,改进后的 YOLOv11 在目标检测任务中表现出色。

文章目录: YOLOv11改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

专栏链接: YOLOv11改进专栏

@

目录
  • 前言
  • 介绍
    • 摘要
    • 创新点
      • 1. 多样化的多分支卷积结构
      • 2. 多尺度特征融合
      • 3. 卷积核重构和身份转换
      • 4. 训练与推理阶段的分离优化
      • 5. 深度卷积与残差连接的结合
  • 文章链接
  • 核心代码
  • 实验
    • 脚本
    • 结果

介绍

image-20241028112427899

摘要

本文针对灰度图像中目标检测的挑战,提出了一种增强型目标检测网络YOLO-MIF,该网络整合了多种多信息融合策略,以改进YOLOv8网络。文章首先介绍了一种技术,用于创建伪多通道灰度图像,增加网络的通道信息,并减轻潜在的图像噪声和虚焦模糊问题。随后,采用网络结构重新参数化技术,提升网络的检测性能而不增加推断时间。另外,引入了一种新颖的解耦式检测头,增强了模型在处理灰度图像时的表现力。文章还对该算法在两个开源灰度图像检测数据集(NEU-DET和FLIR-ADAS)上进行了评估。结果表明,在相同速度下,该算法在平衡检测效率和有效性方面优于YOLOv8 2.1%,优于Faster R-CNN 4.8%,取得了更好的性能表现。

创新点

DeepDBB(Deep Diverse Branch Block)是一种改进的网络模块,设计用于提升卷积神经网络的特征提取能力,特别是对于复杂的目标检测和分类任务。DeepDBB 继承了 WDBB (Wide Diverse Branch Block) 的思想,通过多分支和多样化的卷积设计,实现更为丰富的特征表达。其核心在于结合多个不同类型的卷积操作,在增强网络的特征提取能力的同时减少推理阶段的计算负担。以下是 DeepDBB 的技术原理和实现细节:

1. 多样化的多分支卷积结构

DeepDBB 模块的设计核心是通过多个卷积分支来丰富特征空间,不同的卷积分支负责不同的特征提取任务,从而形成更加多样的特征表征。典型的分支结构包括:

  • 常规 KxK 卷积:用于标准的特征提取。
  • 1x1 卷积:用于降低维度,通常被用作瓶颈层来减少计算量,并增加网络的非线性表达能力。
  • 深度可分离卷积:通过深度卷积和逐点卷积的组合来提取更细粒度的特征,并显著降低计算量。
  • 非对称卷积(如 1xK 和 Kx1):通过在特定方向上扩展感受野,使网络能够捕捉到更广泛的特征。

这些分支结构能够处理不同的特征模式,例如大尺度特征、边缘特征和方向性特征,从而实现特征的多样性表达。

2. 多尺度特征融合

DeepDBB 通过不同分支卷积的组合,在不同的尺度上提取特征,并将这些特征进行融合。这种多尺度特征融合使得模型可以处理不同尺寸的目标,尤其是在目标检测任务中表现出色。多尺度融合的方式可以有效增强网络对小目标和大目标的识别能力。

3. 卷积核重构和身份转换

在训练阶段,DeepDBB 使用多分支结构增加模型的学习能力,但在推理阶段会将多分支卷积核进行合并,转换为等效的单一 KxK 卷积核。这个过程可以分为以下步骤:

  • 分支扩展:将各个分支的卷积核进行扩展,例如将 1x1 卷积核通过零填充扩展为 KxK 卷积核。
  • 卷积核融合:对不同分支的卷积核进行线性组合或加权融合,生成一个单一的 KxK 卷积核。这一融合过程确保了模型在推理阶段可以简化为单一的 KxK 卷积,从而减少计算量。

4. 训练与推理阶段的分离优化

DeepDBB 利用了“训练-推理分离优化”的思想,在训练阶段采用多分支和多样化卷积设计来提升特征学习能力,而在推理阶段通过合并分支简化网络结构。这种设计使得模型在推理时更加轻量化和高效,同时保留了训练阶段的丰富特征表达能力。

5. 深度卷积与残差连接的结合

在 DeepDBB 中,深度卷积操作通常与残差连接结合使用,以增强梯度传播和特征复用。这种结构能够缓解深层网络中梯度消失的问题,使得网络可以更深,从而学习更复杂的特征。此外,残差连接能够促进不同层次特征的融合,进一步增强特征提取能力。

image-20241106160401346

文章链接

论文地址:论文地址

代码地址:代码地址

核心代码

 
class DetectDeepDBB(nn.Module):dynamic = False  # force grid reconstructionexport = False  # export modeshape = Noneanchors = torch.empty(0)  # initstrides = torch.empty(0)  # initdef __init__(self, nc=80, ch=()):  # detection layersuper().__init__()self.nc = nc  # number of classesself.nl = len(ch)  # number of detection layersself.reg_max = 16  # DFL channels (ch[0] // 16 to scale 4/8/12/16/20 for n/s/m/l/x)self.no = nc + self.reg_max * 4  # number of outputs per anchorself.stride = torch.zeros(self.nl)  # strides computed during buildc2, c3 = max((16, ch[0] // 4, self.reg_max * 4)), max(ch[0], self.nc)  # channelsself.cv2 = nn.ModuleList(nn.Sequential(DeepDiverseBranchBlock(x, c2, 3), DeepDiverseBranchBlock(c2, c2, 3), nn.Conv2d(c2, 4 * self.reg_max, 1)) for x in ch)self.cv3 = nn.ModuleList(nn.Sequential(DeepDiverseBranchBlock(x, c3, 3), DeepDiverseBranchBlock(c3, c3, 3), nn.Conv2d(c3, self.nc, 1)) for x in ch)self.dfl = DFL(self.reg_max) if self.reg_max > 1 else nn.Identity()def forward(self, x):"""Concatenates and returns predicted bounding boxes and class probabilities."""shape = x[0].shape  # BCHWfor i in range(self.nl):x[i] = torch.cat((self.cv2[i](x[i]), self.cv3[i](x[i])), 1)if self.training:return xelif self.dynamic or self.shape != shape:self.anchors, self.strides = (x.transpose(0, 1) for x in make_anchors(x, self.stride, 0.5))self.shape = shapex_cat = torch.cat([xi.view(shape[0], self.no, -1) for xi in x], 2)if self.export and self.format in ('saved_model', 'pb', 'tflite', 'edgetpu', 'tfjs'):  # avoid TF FlexSplitV opsbox = x_cat[:, :self.reg_max * 4]cls = x_cat[:, self.reg_max * 4:]else:box, cls = x_cat.split((self.reg_max * 4, self.nc), 1)dbox = dist2bbox(self.dfl(box), self.anchors.unsqueeze(0), xywh=True, dim=1) * self.stridesy = torch.cat((dbox, cls.sigmoid()), 1)return y if self.export else (y, x)def bias_init(self):"""Initialize Detect() biases, WARNING: requires stride availability."""m = self  # self.model[-1]  # Detect() module# cf = torch.bincount(torch.tensor(np.concatenate(dataset.labels, 0)[:, 0]).long(), minlength=nc) + 1# ncf = math.log(0.6 / (m.nc - 0.999999)) if cf is None else torch.log(cf / cf.sum())  # nominal class frequencyfor a, b, s in zip(m.cv2, m.cv3, m.stride):  # froma[-1].bias.data[:] = 1.0  # boxb[-1].bias.data[:m.nc] = math.log(5 / m.nc / (640 / s) ** 2)  # cls (.01 objects, 80 classes, 640 img)

实验

脚本

import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLOif __name__ == '__main__':
#     修改为自己的配置文件地址model = YOLO('/root/ultralytics-main/ultralytics/cfg/models/11/yolov11-DetectDeepDBB.yaml')
#     修改为自己的数据集地址model.train(data='/root/ultralytics-main/ultralytics/cfg/datasets/coco8.yaml',cache=False,imgsz=640,epochs=10,single_cls=False,  # 是否是单类别检测batch=8,close_mosaic=10,workers=0,optimizer='SGD',amp=True,project='runs/train',name='DetectDeepDBB',)

结果

在这里插入图片描述

http://www.jsqmd.com/news/798261/

相关文章:

  • 告别命令行:用Python脚本封装you-get,实现B站/抖音视频一键下载与自动合并
  • 如果在Dev-C++中配置TDM-GCC失败怎么办
  • 完全掌握TlbbGmTool:天龙八部单机版GM工具的3个核心技巧与进阶实战指南
  • Matlab repelem函数进阶玩法:从向量到多维数组,看这一篇就够了
  • 【C++学习之路02】|初识类:从定义到成员,C++类的基础语法梳理(上)
  • 第一篇博客!!!
  • 2026杭州西服定制店评测报告:工艺与性价比深度解析 - 西装爱好者
  • 免费在线去水印软件怎么选?2026年无广告去水印工具全面推荐 - 科技热点发布
  • 5分钟快速上手Efficient-KAN:高效Kolmogorov-Arnold神经网络实战指南
  • GENIVI DLT Viewer不止看日志:挖掘QT版客户端的隐藏插件与高级过滤技巧
  • 大湾区企业如何破解“品牌失语”,在AI时代夺回定义权?
  • 【AI】FastFolders.exe v5..14.2 许可分析
  • 到北京找陪诊,这家陪诊公司一定要知道 - 品牌排行榜单
  • 前端工程化:Git工作流最佳实践
  • LogExpert终极指南:Windows平台最强日志分析工具,轻松处理GB级日志文件
  • LeagueAkari英雄联盟自动化工具终极使用指南:本地化智能助手全面解析
  • HyperCeiler下载最新版
  • YOLOv11 改进 - 损失函数 Shape-IoU:形状感知交并比损失函数通过动态调整权重增强尺度适应性,优化不规则目标准确定位
  • 新手也能懂:用OllyDBG给exe程序“换句话”的保姆级图文教程
  • 芯片签核必知:SPEF文件里那些‘天书’一样的符号,到底在说什么?(附StarRC实例解析)
  • 抖音图片怎样去水印?2026 实测去水印方法与在线工具对比指南 - 科技热点发布
  • YOLOv11 改进 - 检测头 Detect_LSCD轻量共享卷积检测头:轻量化设计破解计算瓶颈,增强复杂场景目标感知能力
  • 全国重要的烟花爆竹生产基地
  • 组件库设计与开发:打造可复用的组件生态
  • 当Agent接入物联网:智能家居的终极形态畅想
  • 专业日志分析工具深度解析:LogExpert提升工作效率的7大实战技巧
  • 如何用3分钟永久保存你珍爱的B站视频?解密m4s-converter的智能转换方案
  • AD19原理图编译总报off grid pin警告?手把手教你从库源头搞定封装与栅格对齐
  • 华为光猫配置文件解密实战:网络工程师的高效工具箱
  • 项目-轻客管家1-环境准备