UNet代码详解
第一步,还是加载一些库
import torch
import torch.nn as nn
import torch.nn.functional as F
创建一个卷积Block类
论文题目:U-Net: Convolutional Networks for Biomedical Image Segmentation
论文地址:https://arxiv.org/pdf/1505.04597v1.pdf
医学图像处理方向,U-Net可以说是一个更加炙手可热的网络,基本上所有的分割问题,都可以尝试用U-net看看效果,这在阿里天池比赛中,经常被用到。
论文通过数据增强使得有限且宝贵的的训练集利用的更加充分。
U型结构使定位准确,解决了医学图片的定位,而不是简单的二分类。
U-Net整体的流程是编码和解码(encoder-decoder),而这个过程早在2006年就被Hinton大神提出来发表在了nature上。当时这个结构提出的主要作用并不是分割,而是压缩图像和去噪声。这个思路也可以用在原图像去噪,做法就是在训练的阶段在原图人为的加上噪声,然后放到这个编码解码器中,目标是可以还原得到原图。
问题1:降采样和上采样有什么用?
它可以增加对输入图像的一些小扰动的鲁棒性,比如图像平移,旋转等,减少过拟合的风险,降低运算量,和增加感受野的大小。升采样的最大的作用其实就是把抽象的特征再还原解码到原图的尺寸,最终得到分割结果。