语义分割 - DeepLab系列(v1, v2, v3, v3+)

本文深入探讨DeepLab系列的四个版本,从v1到v3+,详细解析空洞卷积、深度可分离卷积、ASPP模块及其在Pytorch中的实现。通过对比不同版本的网络架构,分析如何解决分辨率损失和多尺度特征的问题,以提升图像语义分割的效果。

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

论文精读

四种版本网络的对比

v1

  • 修改 VGG16
  • 空洞卷积
  • CRF 作为后处理

v2

  • 设计 ASPP 模块,将空洞卷积的性能发挥到最大
  • 沿用 VGG16 作为主网络
  • 尝试使用 ResNet-101 进行对比实验
  • CRF 作为后处理

v3

  • 以 ResNet 作为主网络
  • 设计了一种串行和一种并行的 DCNN 网络
  • 微调 ASPP 模块
  • 取消 CRF

v3+

  • 以 ResNet 或 Xception为主网络
  • 加入了编解码结构
  • 取消 CRF

先验知识

分辨率的损失

  • 连续的池化和下采样会导致图像分辨率大幅下降,丢失原始信息,且在上采样过程中难以恢复
  • 为了减少分辨率损失,可以采样空洞卷积步长为2的卷积操作代替池化

多尺度特征(multi-scale features)

  • 由于图片中的目标大小不同、远近不同,可能会导致分割效果不尽人意
  • 通过设置不同的不同参数大小的池化层或卷积层,提取到不同尺度的特征
  • 再将这些特征图送入到网络中融合,对网络的性能提升很大

空洞卷积(Dilated/Atrous Convolution)

标准卷积与空洞卷积

标准卷积如下图所示:
在这里插入图片描述

空洞卷积就是在标准卷积核中间填充0,如下图所示:
在这里插入图片描述

空洞卷积的作用
  • 在尽量不丢失分辨率的情况下扩大感受野
  • 通过设定不同参数捕获上下文多尺度信息
为了保证输出图像尺寸不变时,padding的设定值

以实际卷积核尺寸为3为例:
在这里插入图片描述

DeepLab v3+

深度可分离卷积(depthwise separable convolution)

深度可分离卷积可以大大减少参数量,而效果与常规卷积几乎无异甚至要略好

方法:逐通道卷积 + 逐点卷积

逐通道卷积中,一个卷积核负责一个通道,如下图所示:
在这里插入图片描述
逐点卷积类似常规卷积,卷积核尺寸为 1×1×M,M 为上一层的通道数,如下图所示:
在这里插入图片描述

在Pytorch中的实现

分两个

算法架构

架构总览:
在这里插入图片描述
其中,DCNN 为 Xception 网络,如下图所示:
注意:最后一个Res块的最后一个卷积以及跳跃连接的卷积的步长应为1,因为在本次代码中想在下采样最终获得1/8或1/16的尺寸(通过改变Entry_Block3卷积层的步长)
在这里插入图片描述

算法实现

导入包

import math
import torch
import torch.nn as nn
import torch.nn.functional as F

Xception

fixed_padding()

该函数是对图像进行padding,以保证在步长为1的卷积中,其尺寸不变

torch.nn.functional.pad() 用法

根据下图所示公式:
在这里插入图片描述

def fixed_padding(inputs, kernel_size, dilation):
    kernel_size_effective = kernel_size + (kernel_size - 1) * (dilation - 1)   # 有效kernel_size的公式
    pad_total = kernel_size_effective - 1
    pad_beg = pad_total // 2
    pad_end = pad_total - pad_beg
    padded_inputs = F.pad(inputs, (pad_beg, pad_end, pad_beg, pad_end))   # 上下左右补零未必是对称的
    return padded_inputs

深度可分离卷积

此处定义的是流程图中每一个Res小块中相同的、可重复使用的深度可分离卷积

方法:逐通道卷积 + 逐点卷积

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值