点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

作者丨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.csdn.net/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.csdn.net/attitude_yu/article/details/84697181

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

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

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

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

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

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

FCN、Unet、Unet++:医学图像分割网络一览相关推荐

  1. 【医学图像分割网络】之Res U-Net网络PyTorch复现

    [医学图像分割网络]之Res U-Net网络PyTorch复现 1.内容 U-Net网络算是医学图像分割领域的开山之作,我接触深度学习到现在大概将近大半年时间,看到了很多基于U-Net网络的变体,后续 ...

  2. tensorflow版使用uNet进行医学图像分割(Skin数据集)

    tensorflow版使用uNet进行医学图像分割(Skin数据集) 深度学习.计算机视觉学习笔记.医学图像分割.uNet.Skin皮肤数据集 tensorflow版使用uNet进行医学图像分割(Sk ...

  3. Nvidia力作:医学图像分割网络

    来源:投稿 作者:梦飞翔 编辑:学姐 引自Unetr: Transformers for 3d medical image segmentation 1.序言 本文将以Nvidia团队最近提出的一种新 ...

  4. MICCAI 2022:基于 MLP 的快速医学图像分割网络—UNeXt

    MICCAI 2022:基于 MLP 的快速医学图像分割网络 UNeXt 文章目录 前言 方法概述 UNeXt 架构 TokMLP 设计思路 实验部分 一些理解和总结 参考链接 前言 最近 MICCA ...

  5. U-Net实现医学图像分割(pytorch)

    刚开始学习pytorch框架时候,在github上下载过大佬的图像分割代码来训练自己数据集,但是却经常报错.后面在kaggle上下载了一个比较简洁易理解的分割代码,又根据自己的需求进行了修改评价指标. ...

  6. 【论文笔记】基于U-Net的医学图像分割模型nnU-Net(no-new U-Net)

    本文是 nnU-Net 论文的笔记,稍微做了整合了一下,可能有些地方有所遗漏,等以后看完代码之后再补充. 1. 摘要 nnU-Net(no-new-Net)是基于 U-Net 的一种模型,它在达到很好 ...

  7. U-net实现医学图像分割

    here U-net论文 学Unet,那么用keras版的也是蛮好的,但是到最后有自己的一点需求后再在此基础上搭自己的模块后Keras就显得很麻烦了,你需要考虑很多东西,比如张量对齐一类的,甚至调试都 ...

  8. UneXt 基于MLP的快速医学图像分割网络

    1.multilayer perceptron (MLP) 多层感知机 2.参数量减少了72倍,计算复杂度降低了68倍,推理速度(inference speed)提高了10倍 根据其实验结果表,同结构 ...

  9. 新突破!Swin-UNet:基于纯 Transformer 结构的医学图像分割网络

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:Sophia知乎 https://zhuanlan.zhihu.com/p/393412176 AI博士笔记系 ...

最新文章

  1. Java HashMap、Hashset、ArrayList和函数间调用的练习
  2. Mybatis Plugin插件安装破解及使用
  3. 以太网实习_一位工科男在拿到华为实习生offer后的面经干货
  4. 四、Netty 实现心跳机制与断线重连
  5. cxgrid动态创建列
  6. leetcode 327. 区间和的个数(treemap)
  7. 乘方取模计算(模幂计算)
  8. 企业memcahe如何连接mysql_Mysql和Memcached的连动
  9. 【实用工具】GLIBC降级
  10. iPhone 竟没人要了?
  11. 美国商务部发布软件物料清单 (SBOM) 的最小元素(下)
  12. Oracle 忘记/修改密码
  13. apache ii评分怎么评_APACHEⅡ评分系统
  14. python文献翻译_英文学术文献翻译软件有哪些推荐?
  15. 如何查询快递单号的全部物流信息
  16. MySQL索引创建、删除及事务控制
  17. 【2022年】软件测试前景和发展方向,软件测试行业出路?
  18. 使用GifCam录制程序演示效果图GIF(基于模拟器录制)
  19. 数据可视化-设计原则
  20. NB-IoT技术实战开发----keil安装和使用

热门文章

  1. 超详细中文预训练模型ERNIE使用指南
  2. 包云岗:关于RISC-V成为印度国家指令集的一些看法
  3. AI大潮来袭,Python将纳入高考?!你怎么看
  4. 我亲手调教的AI,竟然开始歧视我了!
  5. 如何高效快速搞散一个团队?
  6. 一套基础自动化部署搭建过程
  7. MySQL:left join 避坑指南
  8. 机器学习的基础图表!
  9. 查阅arXiv论文新神器,一行代码比较版本差别,Github新开源!
  10. 组合特征(二)tfidf(word+article)+lsa