这里写目录标题
论文精读
先验知识
编码器 - 解码器结构(Encoder - Decoder frame)
编码器结构:
由普通卷积层和下采样层将特征图尺寸缩小
解码器结构:
由普通卷积、上采样层和融合层组成,用来逐渐恢复空间维度,在尽可能减少信息损失的前提下完成同尺寸输入输出

随机丢弃层(Dropout)
当一个复杂的前馈神经网络被训练在小数据集上时,容易造成过拟合。Dropout通过忽略特征检测器来减少过拟合现象。
反池化(unpooling)
解码器中每一个最大池化层的索引都存储起来,用于之后在解码器中进行反池化操作。
- 有助于保持高频信息的完整性
- 对低分辨率的特征图进行反池化时,会忽略临近的信息
SegNet
本文创新点
- SegNet 核心的训练引擎包括一个 encoder 网络和一个对称的 decoder 网络,即编码器 - 解码器结构
- decoder 中直接利用与之对应的 encoder 阶段中最大池化时保留的 pooling index 来反池化
算法架构
DeconvNet
本文创新点
- 编码部分使用 VGG-16 卷积层
- 解码部分使用反卷积和反池化
- 特殊方法:将 object proposal 送入训练后的网络,整幅图像是由 proposal 分割结果的组合,解决了物体太大或太小带来的分割问题
算法架构
DeconvNet 与 SegNet 的不同之处主要在于
- 反池化与反卷积结合来形成 decoder
- encoder 和 decoder 之间加入了全连接
算法实现
除了模型以外,其他部分与FCN无异
SegNet.py
导入包
import torch
import torchvision.models as models
from torch import nn
解码器中的卷积部分的定义
def decoder(input_channel, output_channel, num=3):
if num == 3:
decoder_body = nn.Sequential(
nn.Conv2d(input_channel, input_channel, 3, padding=1),
nn.Conv2d(input_channel, input_channel,