CGNet: A Light-weight Context Guided Network for Semantic Segmentation

CGNet是一种针对移动设备设计的轻量、高效的语义分割网络,它通过CG模块结合局部和全局上下文信息来提高准确性。CG模块包括局部特征学习、周围特征学习和全局特征的逐通道加权,旨在捕获空间依赖性和语义信息。相比于传统的基于分类网络的分割模型,CGNet在保证准确率的同时减少了参数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CGNet: A Light-weight Context Guided Network for Semantic Segmentation

0.摘要

移动设备中语义分割模型应用增加,然大部分网络的参数量过大,而内存占用较小的网络基本上是根据分类网络设计的。这一设计呐忽视了分割网络的特点
our,提出了CGNet,轻量化、高效的语义分割网络,1 CG模块,将局部特征和周围特征进行联合 2 用全局特征改善联合特征 3 基于CG模块构建CGNet

1.引言

在这里插入图片描述图1
对于Fig1的描述:

  • 本图是在cityscapes数据集上不同框架的准确率和参数量的对比。
  • 高准确率的模型(蓝点),由图像分类网络转化而来且参数量大,因此大多不适于移动设备。
  • 低分辨率的小模型(红点),遵循分类网络的设计方式,忽略了分割特性,故而效果不好。

CGNet的设计:
为了提升准确率,用cgnet探索语义分割的固有属性。对于准确率的提升,因为语义分割是像素级分类和目标定位,所以空间依赖性和上下文信息发挥了

### YOLOv11 上下采样方法实现 #### 下采样方法 ContextGuided (C3k2) 轻量级下采样方法ContextGuided旨在提高模型效率的同时保持良好的检测精度。具体来说,ContextGuided采用了四个主要组成部分来构建更有效的特征表示[^2]。 - **局部特征提取器(floc)** 使用标准卷积层学习输入图像的局部特征。这有助于捕捉对象的关键细节和边缘信息。 - **周围上下文提取器(fsur)** 利用空洞/膨胀卷积层扩大感受野范围,从而能够更好地理解目标周围的环境信息。这种方法允许网络在不增加计算成本的情况下获得更大的视野。 - **联合特征提取器(fjoi)** 将上述两种类型的特征通过连接层组合在一起,并应用批量归一化(BN) 和参数化 ReLU(PReLU),最终形成综合性的中间表达形式。这种设计可以有效地融合不同层次的信息,增强特征描述能力。 - **全局上下文提取器(fglo)** 应用了全局平均池化(GAP) 来收集整个图片级别的统计特性;随后借助多层感知机(MLP) 进一步提炼这些高层次语义线索。最后再利用缩放机制调整之前得到的联合特征权重分布,突出重要部分而削弱无关紧要之处。 ```python import torch.nn as nn class ContextGuided(nn.Module): def __init__(in_channels, out_channels): super(ContextGuided).__init__() self.floc = nn.Conv2d(in_channels=in_channels, out_channels=out_channels//4, kernel_size=3, stride=1, padding=1) self.fsur = nn.Conv2d(in_channels=in_channels, out_channels=out_channels//4, dilation=2, kernel_size=3, stride=1, padding=2) self.bn = nn.BatchNorm2d(out_channels//2) self.prelu = nn.PReLU() self.connect_layer = nn.Sequential( nn.Conv2d(in_channels=out_channels//2, out_channels=out_channels, kernel_size=1), nn.BatchNorm2d(out_channels)) self.gap = nn.AdaptiveAvgPool2d((1, 1)) self.mlp = nn.Linear(out_channels, out_channels) self.scale = ScaleLayer() def forward(x): loc_feature = floc(x) surr_feature = fsur(x) combined_features = torch.cat([loc_feature, surr_feature], dim=1) normalized_combined = bn(combined_features) activated_combined = prelu(normalized_combined) connected_output = connect_layer(activated_combined) global_context = gap(connected_output).squeeze(-1).squeeze(-1) refined_global = mlp(global_context).unsqueeze(-1).unsqueeze(-1) scaled_output = scale(refined_global * connected_output) return scaled_output ``` #### 上采样方法 动态上采样模块 对于上采样的处理,在YOLO系列中引入了一种新的动态上采样模块,它不仅超越了传统的固定比例放大方式,而且可以根据实际需求灵活调节输出尺寸。该模块由两大部分构成:一是负责改变通道数量的标准卷积操作;二是执行空间维度扩展的双线性插值过程。其核心公式如下: \[F(x)=\text{conv}(x,W)+F_{upsample}(x,\text{scale}) \] 其中 \(W\) 表示可训练的滤波器矩阵,\(F_{upsample}\) 是指基于指定倍率进行重映射的过程[^3]。 ```python def dynamic_upsampling_module(input_tensor, output_channels, upscale_factor): convolved = nn.Conv2d(input_tensor.size()[1], output_channels, kernel_size=3, stride=1, padding=1)(input_tensor) upsampled = nn.functional.interpolate(convolved, scale_factor=upscale_factor, mode='bilinear', align_corners=True) return upsampled ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值