CV04-UNet笔记
目录
一、UNet模型
二、Encoder & Decoder
2.1 Encoder
2.2 Decoder
2.3 classifier
学习U-Net: Convolutional Networks for Biomedical Image Segmentation,记录一些自己认为重要的要点,以免日后遗忘。
代码:https://github.com/Ascetics/LaneSegmentation/blob/master/nets/unet.py
参考pytorch官方实现和文档做出自己的实现https://github.com/Ascetics/LaneSegmentation/blob/master/nets/unet.py
一、UNet模型
医学图像分类处理往往细化到像素级别。不仅仅是医学领域,语义分割都是像素级别的分类。于是U-Net诞生了,论文题目《U-Net:用于生物医学图像分割的卷积网络》,但是U-Net不仅仅是用于医学图像处理。
FCN的思想是特征提取阶段进行卷积、池化,图像分辨率减小,特征提取后面接上几层上采样(转置卷积)来提高分辨率。为提高分割精确度,将特征提取阶段的输出和上采样阶段输出做特征融合,这样网络就能学习到更精确的输出。
U-Net在FCN的基础上改造,需要的训练集更小,分割精确度更高。改造的部分是:上采样中仍保持特征的channel很大,特征融合直接使用特征提取阶段的输出,特征提取的输出直接concatenate到上采样输出的后面,保证更多的信息传递到分类阶段。于是形成了如论文图片中这样的U型结构。
U-Net左边是encoder阶段,由5个相似结构encode block构成。第一个encode block,2个不加padding的3×3卷积,每个卷积后面跟BN和ReLU激活函数;第二个到第五个encode block,先maxpool下采样,分辨率减小一倍通道增大一倍,再接2个不加padding的3×3卷积,每个卷积后面跟BN和ReLU激活函数。这5个encode block,除了最后一个之外,输出都要保留,再decoder里作为shortcut使用。
U-Net右边是decoder阶段,由相似结构decode block构成。每个结构里面先是转置卷积上采样2倍(kernel_size=2, stride=2),然后在后面拼接经过剪裁的对应encode block的输出(shortcut),然后是2个不加padding的3×3卷积,每个卷积后面跟BN和ReLU激活函数。每个decode block结构将通道减少一倍。
最后一个1×1卷积,将channel调整到n_class分类。
注意:图中对encoder阶段的剪裁是必要的,由于不加padding的卷积操作、池化等造成了边界像素的损失,必须经过剪裁才能让两个张量spatial大小一致,才能拼接。
二、Encoder & Decoder
Encoder & Decoder 实际上就是下采样、上采样的一种方式。U-Net提出的Encoder & Decoder并不是一定之规,encoder和decoder都可以根据需要用其他模型作为backbone进行替换,比如可以用ResNet作为backbone。记录一下Encoder & Decoder的细节,以及扩展应用方式。
2.1 Encoder
U-Net论文里面encoder的卷积操作不加padding,实际工程中可以改成加padding变成same卷积。
U-Net使用预训练的模型。U-Net更像一个框架,而不是一个模型。论文里面下采样每个结构都是两个卷积,也可以把这个结构替换成ResNet、ResNeXt、MobileNet等已经训练好的模型。Encoder中encode block的数量也不一定是5个,可以根据自己的需要加深。
以ResNet为例。
- 第1个encode block和input一致,所以直接用输入作为输出,pytorch中用空的nn.Sequencial作为encode block。输出shortcut0。
- 第2个encode block下采样2倍,所以用ResNet的Conv1、BN、ReLU作为encode block。输出shortcut1。
- 第3个encode block下采样2倍,所以用ResNet的maxpool、layer1(论文Conv2_x不做下采样)作为encode block。输出shortcut2。
- 第4个encode block下采样2倍,所以用ResNet的layer2(论文Conv3_x)作为encode block。输出shortcut3。
- 第5个encode block下采样2倍,所以用ResNet的layer3(论文Conv4_x)作为encode block。输出shortcut4。
- 第6个encode block下采样2倍,所以用ResNet的layer4(论文Conv5_x)作为encode block。输出不作为shortcut。
2.2 Decoder
U-Net的decoder是和encoder对称的逐层上采样,每个上采样后面跟了相似的结构,都是2个3×3卷积作为decode block,这就增加了decode的深度。
U-Net的上采样可以使用Transposed Convolution转置卷积,也可以使用Bilinear Interpolation双线性差值。对于不同的数据集可能要采取不同的上采样策略。
U-Net的特征融合,使用的是拼接concatenate,这与FCN的直接相加是不同的。
以ResNet为例。
- 第1个decode block。用第6个encode block输出上采样2倍,和shortcut4做cat,然后2个3x3卷积。最终输出的channels应该是第6个encode block输出channels的一半。
- 第2个decode block。用第1个decode block输出上采样2倍,和shortcut3做cat,然后2个3x3卷积。最终输出的channels应该是第1个decode block输出channels的一半。
- 第3个decode block。用第2个decode block输出上采样2倍,和shortcut2做cat,然后2个3x3卷积。最终输出的channels应该是第2个decode block输出channels的一半。
- 第4个decode block。用第3个decode block输出上采样2倍,和shortcut1做cat,然后2个3x3卷积。最终输出的channels应该是第3个decode block输出channels的一半。
- 第5个decode block。用第4个decode block输出上采样2倍,和shortcut0做cat,然后2个3x3卷积。最终输出的channels应该是第4个decode block输出channels的一半。
2.3 classifier
最后一个decode block还需要经过1个1x1卷积,将输出channels调整到n_class个分类。
CV04-UNet笔记相关推荐
- 机器学习笔记: Upsampling, U-Net, Pyramid Scene Parsing Net
前言 在CNN-based 的 模型中,我们可能会用到downsampling 操作来减少模型参数,以及扩大感受野的效果. 下图是一个graph segmentation的例子,就先使用 downsa ...
- unet论文_图像分割之RefineNet 论文笔记
RefineNet: Multi-Path Refinement Networks forHigh-Resolution Semantic Segmentation (2017) 论文笔记 文章的创新 ...
- 最详细的U-net论文笔记
个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-84.html 论文:Olaf Ronneberger, Phi ...
- 使用Pytorch搭建U-Net网络并基于DRIVE数据集训练(语义分割)学习笔记
使用Pytorch搭建U-Net网络并基于DRIVE数据集训练(语义分割)学习笔记 https://www.bilibili.com/video/BV1rq4y1w7xM?spm_id_from=33 ...
- 【阅读笔记】《CFUN: Combining Faster R-CNN and U-net Network for Efficient Whole Heart Segmentation》
本文记录了博主阅读论文<CFUN: Combining Faster R-CNN and U-net Network for Efficient Whole Heart Segmentation ...
- 3D U-Net论文笔记
3D U-Net论文笔记 原文地址:Learning Dense Volumetric Segmentation from Sparse Annotation Abstract 本文介绍了一种从稀疏标 ...
- 【论文笔记】UNet++:一种用于医学图像分割的嵌套U-Net结构
本文是<UNet++: A Nested U-Net Architecture for Medical Image Segmentation>论文的阅读笔记.强烈建议大家去看下作者对这篇论 ...
- 医学图像分割——U-Net解读与个人笔记
最近开始尝试医疗影像分割的任务,先从之前的Unet开始阅读,记录一部分笔记以供回顾. 论文地址:http://www.arxiv.org/pdf/1505.04597.pdf 摘要 作者提出了一个相对 ...
- 【论文笔记】基于U-Net的医学图像分割模型nnU-Net(no-new U-Net)
本文是 nnU-Net 论文的笔记,稍微做了整合了一下,可能有些地方有所遗漏,等以后看完代码之后再补充. 1. 摘要 nnU-Net(no-new-Net)是基于 U-Net 的一种模型,它在达到很好 ...
- unet 层_【paper阅读笔记】UNet
基本信息 全名:<U-Net: Convolutional Networks for Biomedical Image Segmentation> 文章地址:http://www.arxi ...
最新文章
- 李德毅院士:未来交通——自动驾驶与智能网联
- 皮一皮:直男相亲还想着龙珠...
- windows 11预览版来了!
- 基于数字移相信号发生器的频率相位差测量系统的FPGA实现
- 全国计算机一级计算机基础及WPS考试题型,计算机一级考试科目有哪些?Wps和ms考试的题目一样吗?...
- python常见内置函数_python常见的内置函数
- python网页登录验证码不显示_进网页需要验证码?不好意思,Python从来不惧各种验证码!...
- 17年数据分析经验告诉你大数据行业的门道
- Linux 设置环境变量导致bash:command not found
- leetcode 646 python
- 搭建java框架写CRD_硬核:如何开发一个Operator
- hdu 5175 Misaki's Kiss again
- 全网首发:gstreamer中正确使用avdec_h264插件
- 对于“增霸卡“的介绍跟使用
- 黑马程序员_面向对象简介
- RSS源推荐大全(it版)
- 深度学习笔记(19) 多任务学习
- 固定偏置放大电路为何不能保证静态工作点的稳定性?
- (幼儿园毕业)Javascript小学级随机生成四则运算
- 【愚公系列】2022年02月 微信小程序-数据绑定