语义分割--DeepLabV2

本文介绍了使用PyTorch实现的DeepLabv2模型,重点讲解了ASPP(Atrous Spatial Pyramid Pooling)模块如何融合多尺度信息,以及Atrous Convolution和全连接CRF的应用。通过实验展示了模型在Pascal VOC数据集上的性能,并提供了训练和测试代码实例。

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

Deeplabv2-pytorch

写在前面

本博客参考的代码:https://github.com/zhoulukuan/deeplab_v2_pytorch

deeplabv2论文地址:https://arxiv.org/pdf/1606.00915.pdf​​​​​​​

数据集介绍

文章中使用的数据集并不全是pascal-voc2012,而是由voc2012和另外一个数据集合并而成,需要用到JPEGImages和SegmentationClassAug.

模型介绍

1、​​​​​​​deeplabv2改进点

  • 最大的改进就是采用了ASPP(atrous spatial pyramid pooling)模块,成功地融合了多尺度信息。
  • Atrous Convolution取代原本的上采样的方法,比之前得到更高像素的score map,在不增加参数数量和计算量的情况下,有效地扩大感受野,以获得更多的上下文信息;
  • 全连接的CRF,利用底层的细节信息对分类的局部特征(边缘)进行优化

与deeplabv1的区别还有,deeplabv2使用resnet和vggnet进行实验,但是deeplabv1仅仅使用了vggnet。整体的deeplabv2结构图如下所示:

0

2、Atrous Convolution 

1维展示:

2

其中rate表示膨胀因子 ,空洞卷积公式如下所示:

3

  公式中的 y是输出信号,x是输入信号,w是卷积模板,K是滤波器长度,r则是输入信号的采样间隔。

2维展示 :

4

空洞卷积的两种实现方式介绍参考:空洞卷积实现方式​​​​​​​

3、 ASPP

具体结构如图所示:
​​​​​​​
5

 通过不同的rate构建不同感受野的卷积核,从而获得多尺度的对象信息;

4、CRF

作者使用全连接的条件随机场获取细节信息。详细内容可参考:

CRF大白话解释​​​​​​​​​​​​​​

结果展示

demo.py

运行demo.py可以得到如下结果:

输入命令:

python demo.py --img_path path/to/your/img(输入自己的图片路径) 

image文件夹下测试test.jpg的结果如下图所示:

上侧为原图,下侧为结果:

trainval.py 

运行trainval.py(由于电脑算力有限,将cfgs中的MAX_ITERS设为4000),运行结果如下:(只贴出了开始迭代的部分和结束迭代的部分)

test.py


没有刻意的记录运行时间,但是不超过5个小时,运行完成,最后的结果Mean IOU=73.10% 

### LR-ASPP 与 DeepLabV3 的关系 LR-ASPP(Lightweight Refine ASPP)可以视为对传统 DeepLabV3 中使用的 ASPP(Atrous Spatial Pyramid Pooling)模块的一种轻量化改进版本[^1]。DeepLabV3 提出了通过 ASPP 来捕获多尺度上下文信息的方法,这种方法利用不同采样率的空洞卷积来提取特征图的不同感受野大小的信息[^2]。 #### 联系 1. **核心思想一致** LR-ASPP 和 DeepLabV3 都基于 Atrous Convolution 技术实现多尺度特征融合。二者都旨在解决语义分割中的多尺度对象检测问题,提升模型对于不同尺寸目标的理解能力[^3]。 2. **继承与发展** LR-ASPP 继承了 DeepLabV3 的设计理念,在保持高性能的同时进一步优化计算效率和参数量。它通常被设计用于移动端或资源受限环境下的应用,而 DeepLabV3 更注重在高算力设备上的表现[^1]。 #### 区别 1. **复杂度对比** - DeepLabV3 使用标准的 ASPP 模块,包含多个并行分支的空洞卷积层以及全局平均池化操作,结构相对复杂且计算开销较大。 - LR-ASPP 则简化了该过程,减少了不必要的冗余运算,从而降低了内存占用和推理时间[^1]。 2. **适用场景差异** - DeepLabV3 主要适用于桌面级 GPU 或服务器端部署,适合追求极致精度的任务。 - LR-ASPP 更加关注于移动平台或其他低功耗硬件的支持,能够在保证一定准确性的前提下大幅减少资源消耗[^2]。 3. **性能权衡** 尽管 LR-ASPP 对原始 ASPP 进行了一定程度的裁剪,但在实际应用场景中仍然能够达到接近甚至优于原版的效果,特别是在搭配高效骨干网络如 MobileNetV3-Large 时表现出色[^1]。 ```python import torch.nn as nn class ASPP(nn.Module): def __init__(self, in_channels, out_channels): super(ASPP, self).__init__() rates = [1, 6, 12, 18] self.aspp_blocks = nn.ModuleList([ nn.Conv2d(in_channels, out_channels, kernel_size=3, dilation=r, padding=r) for r in rates ]) def forward(self, x): outputs = [] for block in self.aspp_blocks: outputs.append(block(x)) return torch.cat(outputs, dim=1) class LR_ASPP(nn.Module): def __init__(self, in_channels, out_channels): super(LR_ASPP, self).__init__() # Simplified version with fewer branches and less complexity self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, dilation=6, padding=6) def forward(self, x): return self.conv(x) ``` 以上代码展示了两种方法的核心组件定义方式的区别,其中 `LR_ASPP` 明显更加简洁明了。 --- ### 总结 综上所述,LR-ASPP 应当被认为是针对 DeepLabV3 所提出的更高效的变体之一。虽然它们共享相似的技术背景,但由于具体实施细节存在显著差别,因此各自适应不同的需求领域[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值