介绍
摘要
许多当前的研究直接采用多速率深度扩张卷积,以同时从一个输入特征图中捕获多尺度上下文信息,从而提高实时语义分割的特征提取效率。然而,由于不合理的结构和超参数,这种设计可能导致难以获取多尺度上下文信息。为了降低获取多尺度上下文信息的难度,我们提出了一种高效的多尺度特征提取方法,将原来的单步方法分解为两个步骤:区域残差化-语义残差化。在这种方法中,多速率深度扩张卷积在特征提取中扮演了一个简单的角色:在第二步中基于第一步提供的每个简明区域形式的特征图,执行具有一个期望感受野的简单基于语义的形态滤波,以提高其效率。此外,还详细说明了每个网络阶段的扩张率和扩张卷积的容量,以充分利用所有可以实现的区域形式的特征图。相应地,我们分别为高层和低层网络设计了一个新颖的扩张残差(DWR)模块和一个简单反转残差(SIR)模块,并形成了一个强大的DWR分割(DWRSeg)网络。在Cityscapes和CamVid数据集上的大量实验表明,我们的方法通过在准确性和推理速度之间实现最先进的权衡,展示了其有效性,并且重量更轻。在没有预训练或使用任何训练技巧的情况下,我们在Cityscapes测试集上以每秒319.5帧的速度在一张NVIDIA GeForce GTX 1080 Ti显卡上达到了72.7%的mIoU,这超过了最新方法的69.5帧每秒的速度和0.8%的mIoU。代码和训练好的模型已公开可用。
YOLO11目标检测创新改进与实战案例专栏
点击查看文章目录: YOLO11创新改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例
击查看专栏链接: YOLO11目标检测创新改进与实战案例
文章链接
论文地址:论文地址
代码地址: 代码地址
基本原理
DWRSeg(Dilation-wise Residual Segmentation)是一种用于实时语义分割任务的网络架构,旨在提高特征提取效率和多尺度信息获取能力。以下是关于DWRSeg及其技术原理的详细介绍:
- DWRSeg采用了一种高效的多尺度特征提取方法,将原始的单步方法分解为两步:区域残差化(Region Residualization)和语义残差化(Semantic Residualization)。这种方法利用多率扩张卷积(depth-wise dilated convolutions)在两个步骤中提取特征,以实现更高效的多尺度信息获取。
- DWRSeg设计了一种新颖的Dilation-wise Residual(DWR)模块和Simple Inverted Residual(SIR)模块,分别用于网络的高阶段和低阶段。这些模块具有精心设计的感受野大小,以充分利用各个网络阶段的区域形式特征图。
- DWRSeg的整体架构是基于编码器-解码器结构,包括干扰块、SIR模块的低阶段和两个DWR模块的高阶段。编码器用于特征提取,解码器用于生成最终预测结果,无需辅助监督。
- DWRSeg通过精心调整整个网络的超参数,实现了在准确性和效率之间的最佳平衡。最终,DWRSeg报告了两个版本:DWRSeg-Base(DWRSeg-B)和DWRSeg-Large(DWRSeg-L)。
YOLO11引入代码
在根目录下的ultralytics/nn/
目录,新建一个C3k2
目录,然后新建一个以 C3k2_DWR
为文件名的py文件, 把代码拷贝进去。
class DWR(nn.Module):
def __init__(self, dim) -> None:
super().__init__()
self.conv_3x3 = Conv(dim, dim // 2, 3)
self.conv_3x3_d1 = Conv(dim // 2, dim, 3, d=1)
self.conv_3x3_d3 = Conv(dim // 2, dim // 2, 3, d=3)
self.conv_3x3_d5 = Conv(dim // 2, dim // 2, 3, d=5)
self.conv_1x1 = Conv(dim * 2, dim, k=1)
def forward(self, x):
conv_3x3 = self.conv_3x3(x)
x1, x2, x3 = self.conv_3x3_d1(conv_3x3), self.conv_3x3_d3(conv_3x3), self.conv_3x3_d5(conv_3x3)
x_out = torch.cat([x1, x2, x3], dim=1)
x_out = self.conv_1x1(x_out) + x
return x_out
task与yaml配置
详见:https://blog.csdn.net/shangyanaf/article/details/143435663