UNET与简单自编码器有何区别?上采样方式有何差异?
Transpose2D上采样实现逻辑、及与普通自编码器的核心差异
Transpose2D卷积的上采样实现逻辑
这一操作本质是带可学习参数的上采样方式,和固定规则的插值(最近邻、双线性)不同,它的完整运行流程可以拆解为两步:
- 第一步是对输入的低分辨率特征图做“插零扩维”:根据设置的步长参数,在特征图的相邻像素之间插入对应数量的0值,先把特征图的尺寸初步撑开至目标输出尺寸的大致范围。比如要把2×2大小的特征图以步长2上采样到4×4,就会在每个像素的横向、纵向相邻位置各插1个0,得到3×3大小的临时特征图。
- 第二步是对插零后的临时特征图做标准卷积运算:通过可学习的卷积核,对临时特征图的邻域信息做加权计算,最终输出和目标尺寸完全匹配的高分辨率特征。
很多人对这个操作的来源有误解,它本质就是常规卷积在前向传播时梯度计算过程的逆操作,这也是“转置卷积”这个命名的由来。整个过程的卷积核参数会随着训练过程不断优化,不需要人工预设上采样的规则。
即便简单自编码器采用Transpose2D上采样,和UNet的核心差异
两者哪怕上采样的算子完全一致,从结构设计到输出能力上的核心区别都非常明确:
- 是否存在跨层跳跃连接是本质差异
普通自编码器不管采用哪种上采样方式,特征传递路径都是单向的:编码器从输入层开始逐层下采样,最终把所有信息压缩到最底层的瓶颈隐向量,解码器再从这个隐向量开始逐层上采样还原输出,全程不会把编码器中间层的特征直接传递给解码器。而UNet在解码器的每一层上采样完成后,都会把同分辨率的编码器对应层的特征,和上采样得到的特征在通道维度拼接,直接把下采样过程中丢失的边缘、纹理、小目标等细粒度细节补回到解码路径中。 - 结构的设计目标完全不同
普通自编码器的核心设计目标是把输入信息压缩成尽可能紧凑的低维隐空间表示,整个下采样过程会持续压缩信息、尽可能剔除冗余,解码过程完全依赖瓶颈层的特征还原全局结构;而UNet的编码器本质是密集任务的特征提取器,它不会把所有信息都压到最底层的瓶颈层,反而会刻意留存每一层下采样的特征给解码器用,最底层的瓶颈层只负责传递全局语义信息,细粒度的位置、轮廓信息全部通过跳跃连接直达解码端。 - 输出结果的精度倾向不同
普通自编码器哪怕用了Transpose2D上采样,训练目标通常是最小化输出和原始输入的全局像素误差,输出结果更关注全局结构的还原,对局部像素的定位精度没有额外约束;而UNet从结构设计上就是面向像素级密集预测任务的,结合了跨层特征的解码输出,能精准对应原始输入的像素位置,输出的轮廓、细节精度要远高于同算力配置下的普通自编码器。
内容的提问来源于stack exchange,提问作者Hamza
相关产品推荐
相关产品推荐

