在前面的文章中,我们已经从零手写了一个原汁原味的 U-Net。但在实际的工业界项目或顶级学术竞赛(如 Kaggle)中,我们很少会用普通的卷积层从零开始搭建编码器。为什么?因为自己从零训练太慢了,且容易遇到梯度消失!今天这篇文章,我们要玩点高级的——给 U-Net 换骨架(Backbone)。我们将 U-Net 拆分,塞进 U-Net 的左半边作为特征提取器(编码器),用来提高模型特征提取能力🏗️ 第一步:准备解码器的基础积木在右侧的解码器中,我们依然需要用到“双卷积”和“上采样融合”。为了代码整洁,我们先封装两个类:ConvBlock和DecoderBlock。1. 基础双卷积模块这个没什么特别的,就是标准的连续两次3 × 3 3\times3