FCN、Unet、Unet++:医学图像分割网络一览

基于深度学习的肺部CT影像识别——采用U-net、3D CNN、cGAN实现肺结节的检测(一) 在医学图像处理中,传统的特征提取方法依赖于含有先验知识的特征提取和感兴趣区域的获取,这将直接影响肺结节检测的精度。而卷积神经网络无需人工提取特征,采用深度学习方法,随着卷积层数的加深,能提取出更加抽象、语义更丰富的特征。这里首先采用U-net将肺结节分割出来,生成候选集。 阅读详情
AI摘要

本文详细解析了语义分割、实例分割及全景分割等概念,并深入探讨了FCN、Unet、Unet++等算法在医学图像上的应用。通过对比不同网络结构的特点,总结了Unet在医学图像分割领域的优势。

作者丨Error@知乎

来源丨https://zhuanlan.zhihu.com/p/159173338

转自 | 极市平台

导读

 

本文先厘清了语义分割、实例分割和全景分割等定义的区别。在此基础上,进一步分析了FCN、Unet、Unet++等算法在医学图像上的适用情况。

先上目录:

  1. 相关知识点解释

  2. FCN 网络算法的理解

  3. Unet 网络算法的理解

  4. Unet++ 网络算法的理解

  5. Unet+++ 网络算法的理解

  6. DeepLab v3+ 算法简阅

  7. Unet在医学图像上的适用与CNN分割算法的简要总结

一、相关知识点解释

1、图像分割中几种定义的区别

语义分割(Semantic Segmentation):就是对一张图像上的所有像素点进行分类。(eg: FCN/Unet/Unet++/...)

实例分割(Instance Segmentation):可以理解为目标检测和语义分割的结合。(eg: Mask R-CNN/...)相对目标检测的边界框,实例分割可精确到物体的边缘;相对语义分割,实例分割需要标注出图上同一物体的不同个体。

全景分割(Panoptic Segmentation):可以理解为语义分割和实例分割的结合。实例分割只对图像中的object进行检测,并对检测到的object进行分割;全景分割是对图中的所有物体包括背景都要进行检测和分割。

图像分类:图像中的气球是一个类别。[1]
语义分割:分割出气球和背景。
目标检测:图像中有7个目标气球,并且检测出每个气球的坐标位置。
实例分割:图像中有7个不同的气球,在像素层面给出属于每个气球的像素。

2. CNN特征学习的优势

高分辨率特征(较浅的卷积层)感知域较小,有利于feature map和原图进行对齐的,也就是我说的可以提供更多的位置信息。
低分辨率信息(深层的卷积层)由于感知域较大,能够学习到更加抽象一些的特征,可以提供更多的上下文信息,即强语义信息,这有利于像素的精确分类。

3. 上采样(意义在于将小尺寸的高维度feature map恢复回去)

上采样(upsampling)一般包括2种方式:

Resize,如双线性插值直接对图像进行缩放(这种方法在原文中提到)

Deconvolution(反卷积)[2],也叫Transposed Convolution(转置卷积),可以理解为卷积的逆向操作。

4. 医学影像语义分割的几个评估指标[3]

1)Jaccard(IoU)

用于比较有限样本集之间的相似性与差异性。Jaccard值越大,样本相似度越高。

关于对TP、FP、TN、FN的理解,可参考我的另一篇目标检测中mAP计算的博文:https://zhuanlan.zhihu.com/p/139073511

2)Dice相似系数

一种集合相似度度量指标,通常用于计算两个样本的相似度,值的范围0~1 ,分割结果最好时值为1 ,最差时值为0 。Dice相似系数对mask的内部填充比较敏感。

3)Hausdorff 距离(豪斯多夫距离)

描述两组点集之间相似程度的一种量度,对分割出的边界比较敏感。

4)F1-score

用来衡量二分类模型精确度的一种指标,同时考虑到分类模型的准确率和召回率,可看做是准确率和召回率的一种加权平均。

二、FCN网络的理解

FCN将一般的经典的分类网络模型(VGG16...)的最后一层的FC层(全连接)换成卷积,这样可以通过二维的特征图,后接softmax获得每个像素点的分类信息,从而解决了分割问题。

核心思想:
- 不含全连接层(fc)的全卷积(fully conv)网络。可适应任意尺寸输入。
- 增大数据尺寸的反卷积(deconv)层。能够输出精细的结果。
- 结合不同深度层结果的跳级(skip)结构。同时确保鲁棒性和精确性。

FCN结构示意图

对于FCN-32s,直接对pool5 feature进行32倍上采样获得32x upsampled feature,再对32x upsampled feature每个点做softmax prediction获得32x upsampled feature prediction(即分割图)。


对于FCN-16s,首先对pool5 feature进行2倍上采样获得2x upsampled feature,再把pool4 feature和2x upsampled feature逐点相加,然后对相加的feature进行16倍上采样,并softmax prediction,获得16x upsampled feature prediction。


对于FCN-8s,首先进行pool4+2x upsampled feature逐点相加,然后又进行pool3+2x upsampled逐点相加,即进行更多次特征融合。

FCN缺点:

结果不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感。

对各个像素进行分类,没有充分考虑像素与像素之间的关系。忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性。

附FCN论文地址:https://arxiv.org/abs/1411.4038

三、U-net网络的理解

Unet网络结构图

整个U-Net网络结构类似于一个大型的字母U,与FCN都是很小的分割网络,既没有使用空洞卷积,也没有后接CRF,结构简单。

1. 首先进行Conv+Pooling下采样;
2. 然后反卷积进行上采样,crop之前的低层feature map,进行融合;
3. 再次上采样。
4. 重复这个过程,直到获得输出388x388x2的feature map,
5. 最后经过softmax获得output segment map。总体来说与FCN思路非常类似。

UNet的encoder下采样4次,一共下采样16倍,对称地,其decoder也相应上采样4次,将encoder得到的高级语义特征图恢复到原图片的分辨率。

它采用了与FCN不同的特征融合方式:

  1. FCN采用的是逐点相加,对应tensorflow的tf.add()函数

  2. U-Net采用的是channel维度拼接融合,对应tensorflow的tf.concat()函数

附Unet论文地址:https://arxiv.org/pdf/1505.04597.pdf

四、Unet++网络的理解 [4]

文章对Unet改进的点主要是skip connection,作者认为skip connection 直接将unet中encoder的浅层特征与decoder的深层特征结合是不妥当的,会产生semantic gap。

文中假设:当所结合的浅层特征与深层特征是semantically similar时,网络的优化问题就会更简单,因此文章对skip connection的改进就是想bridge/reduce 这个semantic gap。

附Unet++论文地址:https://arxiv.org/pdf/1807.10165.pdf

代码地址:https://github.com/MrGiovanni/UNetPlusPlus

五、Unet+++算法的理解 [5]

为了弥补UNet和UNet++的缺陷,UNet 3+中的每一个解码器层都融合了来自编码器中的小尺度和同尺度的特征图,以及来自解码器的大尺度的特征图,这些特征图捕获了全尺度下的细粒度语义和粗粒度语义。

附U-net+++论文地址:https://arxiv.org/abs/2004.08790

六、DeepLab v3+算法简阅 [6]

DeepLab v3+结构图

Encoder部分

Encoder就是原来的DeepLabv3,
需要注意点:
1. 输入尺寸与输出尺寸比(output stride = 16),最后一个stage的膨胀率rate为2
2. Atrous Spatial Pyramid Pooling module(ASPP)有四个不同的rate,额外一个全局平均池化

Decoder部分

先把encoder的结果上采样4倍,然后与resnet中下采样前的Conv2特征concat一起,再进行3x3的卷积,最后上采样4倍得到最终结果。
需要注意点:融合低层次信息前,先进行1x1的卷积,目的是降通道(例如有512个通道,而encoder结果只有256个通道)

附DeepLab v3+论文地址:https://arxiv.org/pdf/1802.02611.pdf

七、Unet在医学图像上的适用与CNN分割算法的简要总结

1. Unet结构特点

UNet相比于FCN和Deeplab等,共进行了4次上采样,并在同一个stage使用了skip connection,而不是直接在高级语义特征上进行监督和loss反传,这样就保证了最后恢复出来的特征图融合了更多的low-level的feature,也使得不同scale的feature得到了的融合,从而可以进行多尺度预测和DeepSupervision。4次上采样也使得分割图恢复边缘等信息更加精细。

2. 为什么适用于医学图像?[7]

1. 因为医学图像边界模糊、梯度复杂,需要较多的高分辨率信息。高分辨率用于精准分割。
2. 人体内部结构相对固定,分割目标在人体图像中的分布很具有规律,语义简单明确,低分辨率信息能够提供这一信息,用于目标物体的识别。
UNet结合了低分辨率信息(提供物体类别识别依据)和高分辨率信息(提供精准分割定位依据),完美适用于医学图像分割。

3. 分割算法改进总结:

  1. 下采样+上采样:Convlution + Deconvlution/Resize

  2. 多尺度特征融合:特征逐点相加/特征channel维度拼接

  3. 获得像素级别的segement map:对每一个像素点进行判断类别

参考

  1. 实例分割理解 https://blog.youkuaiyun.com/tony2278/article/details/90028747?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase

  2. 可以参考一下卷积运算的几种操作 https://blog.youkuaiyun.com/attitude_yu/article/details/84697181

  3. https://zhuanlan.zhihu.com/p/117435908?from_voters_page=true

  4. 周纵苇的研习Unet https://zhuanlan.zhihu.com/p/44958351

    UNet3+(UNet+++)论文解读 https://zhuanlan.zhihu.com/p/136164721

    DeepLab系列理解 https://www.jianshu.com/p/755b001bfe38

    Unet神经网络为什么会在医学图像分割表现好?https://www.zhihu.com/question/269914775

[pytorch]医学图像语义分割UNET和UNET变体代码(包含多个数据集) 一,UNET UNET可以称为医学图像语义分割的基石,而且经常作为baseline与其他模型对比。一般的器官分割,只要是正正常常,边界比较明显的,没什么特殊情况的,一般UNET就能做得很好。 UNET结构如下: UNET特点: 1.UNET结构和FCN十分相似,但是两者之间区分很大的一个地方就是,跳接(skip connection)处UNET是使用连接方式,即UNET采用将特征在ch... 阅读详情

相关推荐

UNET详解和UNET++介绍(零基础)

一·背景介绍 背景介绍: 自2015年以来,在生物医学图像分割领域,U-Net得到了广泛的应用,目前已达到四千多次引用。至今,U-Net已经有了很多变体。目前已有许多新的卷积神经网络设计方式,但很多仍延续了U-Net的核心思想,加入了新的模块或者融入其他设计理念。 编码和解码,早在2006年就发表在了nature上.当时这个结构提出的主要作用并不是分割,而是压缩图像和去噪声.后来把这个思路被用在了图像分割的问题上,也就是现在我们看到的FCN或者U-Net结构,在它被提出的三年中,有很多很多的论文去讲如何

qq_41105449的博客 3万+

Unet系列网络解析

当然,也有些同学会说,这个算法中的一些思想很多人在以前也有提出,比如下采样或是多尺度的思想,但是有一个问题,在众多思路中寻找合理的方法进行组合与重构以达到更有效的结果也是一种巨大的创新和进步。在encoder操作中,采用了5个池化层(在实际应用中也有采用4个池化层的操作),在不断的下采样过程中不断的降低分辨率以获得不同尺度的图像信息,图像的信息由底层信息中的点、线、梯度等信息逐渐向高程信息中的轮廓以及更抽象的信息过度,整个网路完成了“由细到粗”特征的提取与组合,使UNet得到的信息更加全面。

1万+

【Unet系列】Unet & Unet++

文章目录U-net概述细节部分1、结构的解析2、一些小点resultUnet++概述细节部分resultsummary U-net U-Net是一篇基本结构非常好的论文,主要是针对生物医学图片的分割,而且,在今后的许多对医学图像的分割网络中,很大一部分会采取U-Net作为网络的主干。 概述 博客都将用一个概述对论文进行一个很简介的概述: 解决什么问题? 医学图像的分割 使用的方法? 继...

OneCoder的博客 8万+

Unet网络架构讲解(从零到一,逐行编写并重点讲解数据维度变化)

Unet网络架构从零到一复现

knighthood2001 18万+

Unet图像分割网络Pytorch实现

介绍 之前计划写一篇tensorflow实现的,但是最近一个月接触了一下Pytorch,个人认为Pytorch相较于Tensorflow来说好用很多。本文的内容是我对Unet论文的总结与提炼,需要提醒的是,Unet原文发布的时候还没有提出BN(Batch Normalization). 所以在本文中我会增加这一个步骤。 如果想要安装Python和Pytorch或者获得进一步的信息可以点击pytho...

SUZOOSUGAR 3万+

UNet3+(UNet+++)论文翻译与详细解读

论文下载地址: 链接 UNET 3+: A FULL-SCALE CONNECTED UNET FOR MEDICAL IMAGE SEGMENTATION ABSTRACT Recently, a growing interest has been seen in deep learningbased semantic segmen...

程序客栈 2万+

【深度学习】FCN、Unet、Unet++:医学图像分割网络一览

作者丨Error@知乎 来源丨https://zhuanlan.zhihu.com/p/159173338 转自 | 极市平台导读本文先厘清了语义分割、实例分割和全景分割等定义的区别。在此基础上,进一步分析了FCN、Unet、Unet++等算法在医学图像上的适用情况。先上目录:相关知识点解释FCN 网络算法的理解Unet 网络算法的理解Unet++ 网络算法的理解Unet+++ 网络算法的理...

fengdu78的博客 2187

图像分割UNet (1) : 网络结构讲解

UNet 论文:Convolutional Networks for Biomedical Image Segmentation 这篇论文主要是针对生物医学影像这个领域提出的,所以一提到UNet一般都会联想到医学影像。 UNet它是一个encoder - decoder的结构,那么encoder对应就是这个u型网络左边这半部分,也就是我们特征提取及下采样这部分。decoder解码就是右边部分通过一系列上采样,我们得到最终的一个分割图。.........

@bangbang的博客 7039

【图像分割】Unet系列深度讲解(FCN、UNET、UNET++)

【图像分割】Unet系列深度讲解(FCN、UNET、UNET++)

Danger的博客 9258

unet 网络结构

unet 网络结构

qq_40107571的博客 1万+

基于resnet+unet的皮肤病变分割

该工程使用resnet50/101+hypercolumn+scse+unet算法实现对皮肤病变的分割

深度学习零基础学习之路——第四章 UNet-Family中Unet、Unet++和Unet3+的简介

深度学习小白的学习之路,从零开始,一步一步向深度学习大佬靠近。学习使用Unet网络模型,并对其后续提出的Unet++、Unet3+进行对比学习。

Monkey_King_GL的博客 1万+

设备树实践:从零构建一个嵌入式板级的设备树描述

本文详细介绍了如何从零开始为嵌入式Linux系统构建设备树(Device Tree),以i.MX6ULL处理器为例,涵盖硬件分析、设备树语法、外设配置及调试技巧。通过实践指导,帮助开发者掌握设备树编写,实现硬件与软件的高效对接,提升嵌入式开发效率。

plum99的博客 307

图像分割Unet、Unet++和Unet3+

向AI转型的程序员都关注了这个号????????????前言  最近学习了Unet、Unet++和UNet3+模型,并且对这三者进行了一些研究,并将其作为组会上报告的内容,效果还是不错,因此趁自己还记得一些,写一个博客记录一下,方便后续复习,不得不说Unet模型还是很强大的,也难怪Unet模型现在很火,值得一学。一、FCN全卷积网络模型  FCN网络模型全称为全卷积神经网络模型(Fully Convolution ...

datayx的文章 9580

WinCC ActiveX控件“许可证缺失”故障排查:从注册表修复到系统兼容性全解析

本文深入解析WinCC ActiveX控件报错“未找到许可证信息”的根本原因与解决方案。核心在于系统注册表中控件的设计时许可证密钥丢失或损坏。文章提供了从手动修复注册表、排查64位系统兼容性,到预防性环境部署的全流程专业指南,帮助工程师彻底解决这一常见故障。

oil88的博客 646

ISE 14.7 MCS文件的生成--- Spartan3AN XC3S200AN

步骤一: Generate Programming File生成 .bit文件 步骤二: Tools——>iMPCAT 步骤三: iMPACT Flows——>双击“Create PROM File(PROM File Formatter)” 步骤四: Non-Volatile FPGA——>点击”Spartan 3AN“——>点击“绿色箭头”——>Spartan3AN(bits)——>选择“xc3s200an"——>点击”Add storage Device“—

qq_40039676的博客 2100

Unet为代表的医学图像分割小记

Unet为代表的的医学图像分割小记

weixin_44307027的博客 4288

手把手拆解UCIe协议层:从Raw Mode到Flit Mode,数据包到底经历了什么?

本文深入解析UCIe协议层的数据包处理机制,从Raw Mode到Flit Mode的三大变体(Standard 256B、68B-Enhanced、Latency-Optimized),详细揭示数据包在不同模式下的封装与转换过程。通过工程师视角,展示协议层如何实现多模式动态切换、错误恢复及与D2D Adapter的协同设计,为芯片级互连技术提供实践指导。

weixin_28728495的博客 239

【论文笔记】UNet++:一种用于医学图像分割的嵌套U-Net结构

本文是《UNet++: A Nested U-Net Architecture for Medical Image Segmentation》论文的阅读笔记。强烈建议大家去看下作者对这篇论文的思维过程:研习UNet。 文章提出了一个UNet++的网络,它是一个使用了深度监督(deep supervised)的编码器-解码器结构,在解码器和编码器之间有一系列的密集跳跃连接(dense skip connections)。 一、跳跃连接的重要性 有很多效果不错的网络结构都采用了跳跃连接的方式,如UNet网络和

zuzhiang的博客 8853

做了一个3DTiles编辑器,支持3DTiles的预览和裁剪导出

3DTiles编辑器的功能极其简洁,核心就是3DTiles格式模型的预览和裁剪。为了演示方便,本文所使用的源数据为mipmap3d[1]网站所提供的无人机拍摄影像,并进行3DTiles构建。打开软件,输入的绝对路径之后,点击添加模型,就可以将模型加载进预览区。之后,点击裁剪模式按钮,默认会出现立方体裁剪框,可通过拖动句柄的方式去调整裁剪框的范围。同时,除了默认的盒体裁切模式外,还支持多边形裁切,点击多边形裁切后,可切换到顶视图,选择重绘多边形,可进行打点绘制。

兴趣使然的创作者 602

rk3568 Android12 默认授予预装app权限

默认授予预装应用权限可以避免用户在每次使用应用时都要重复同意权限请求。尽管在Android 12中,用户对权限的管理有了更高的控制权,但这也可能导致用户在频繁使用预装应用时感到繁琐和不必要的干扰。通过默认授权,减少了这种麻烦。一些厂商可能会根据其定制的Android系统(如Samsung的One UI、Xiaomi的MIUI)要求某些预装应用默认获得权限,以便应用能够提供厂商特定的功能。这也有助于设备厂商提供统一和稳定的服务,不至于因为权限问题导致某些功能无法使用。

weixin_35723192的博客 661
上一篇: 使用计算机视觉在钢铁平面上检测焊接缺陷
下一篇: 对比 | TensorFlow VS PyTorch下的深度学习框架之争
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值