详细内容或原文请订阅后点击阅览
论文演练:U-Net
最流行的语义分割模型之一的 PyTorch 实现。继续阅读 Towards Data Science »
来源:NoneU-Net简介
当我们谈论图像分割时,我们不应该忘记U-Net,这是一种由Ronneberger等人首先提出的神经网络架构。 [1] 早在 2015 年。该模型最初旨在对医学图像执行分割任务。后来,其他研究人员发现这种架构实际上也可以用于一般的语义分割任务。此外,还可以将该模型用于其他用途,例如超分辨率(即将低分辨率图像升级为高分辨率图像)和扩散(即从噪声生成图像)。在本文中,我想向您展示如何使用 PyTorch 从头开始实现 U-Net。您可以在图 1 中看到整个 U-Net 架构。通过查看这个结构,我认为这个网络的名称是如何得名的非常简单。
该架构中有几个关键组件。首先,有一个契约路径,也称为编码器。该组件负责将输入图像的空间维度从 572×572 逐渐缩小到 64×64。然而,请注意,每个下采样阶段中的通道数量加倍,而不是补偿空间维度减少造成的信息损失。相比之下,扩展路径(解码器)将特征图扩展到更大的空间维度,同时减少通道数。尽管采用对称架构,但值得注意的是,最终上采样阶段产生的输出在图像分辨率方面与输入不同。
使用 PyTorch 实现 U-Net
我为这个项目做了三个导入:用于标准数学功能的基本 PyTorch 模块 (torch)、用于加载神经网络层的 nn 子模块以及从 torchinfo 获取的用于打印模型详细信息的summary() 函数。
火炬
nn
摘要()
火炬信息
编码器
DoubleConv()
conv_0
conv_1
bn_0
bn_1
偏差
正确
#(1)
#(2)
前进()
x
