| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 医学图像分割——U-Net解读与个人笔记 -> 正文阅读 |
|
[人工智能]医学图像分割——U-Net解读与个人笔记 |
最近开始尝试医疗影像分割的任务,先从之前的Unet开始阅读,记录一部分笔记以供回顾。 论文地址:http://www.arxiv.org/pdf/1505.04597.pdf 摘要作者提出了一个相对当时来说全新的网络,Unet。Unet主要由contracting path(特征提取通路),symmetric expanding path(合成扩张通路)组成,运行速度很快,且远胜于当时最好的方法——基于滑动窗口。在生物医学中应用CNN有很多难点,其中之一便是医学图像数据往往比较稀有。因此,论文也提出了一些新的数据增强的思路。 1.网络结构图像分割任务其实和图像分类任务有很多相似之处,区别在于图像分割任务需要将每一个像素都分类,而图像分类则只需要将整张图片分类。或者换个说法,图像分割不仅需要分类,还需要定位,定位分类结果的位置。在生物医学领域,大规模的数据集往往是难以获得的,因此Ciresan等人训练了一个基于滑动窗口(sliding-window)的网络,对每一个需要预测的像素,输入其局部的图像信息(patch),然后对改像素进行分类。对输入的图像分割成patch然后输出对应像素的类别可以有效地扩充数据集。 然而,Ciresan等人的方法有两个明显的缺点
因此,作者借鉴FCN(fully convolutional network)提出了Unet,其中没有使用任何的全连接层,几乎都是卷积层和池化层的搭配。左边部分为contracting path,由连续的卷积层来提取特征,并不断缩小特征图的尺寸,并增加特征图的通道数。右边部分为symmetric expanding path,通过上采样改变输出特征图的尺寸。同时,为了定位(分割 ≈ 分类+定位)由contracting path得到的不同尺度的特征图与上采样得到的对应尺度的特征图做拼接(concat)。 值得注意的是,FCN 中深层信息与浅层信息融合是通过对应像素相加(add)的方式,而 Unet 是通过拼接的方式。其实在 ResNet 与 DenseNet 中也有一样的区别,Resnet 使用了对应值相加,DenseNet 使用了拼接。个人理解在相加的方式下,feature map 的维度没有变化,但每个维度都包含了更多特征,对于普通的分类任务这种不需要从 feature map 复原到原始分辨率的任务来说,这是一个高效的选择;而拼接则保留了更多的维度/位置 信息,这使得后面的 layer 可以在浅层特征与深层特征自由选择,这对分割这种需要将输入像素级地恢复到原始图像的任务来说更有优势。 而在symmetric expanding path中Upsampling 上采样常用的方式有两种:1.FCN 中的转置卷积;2. 插值。文中使用了插值的方式,具体是bicubic(双三次插值)。此外,在其他的插值实现方式中,bilinear (双线性插值)的综合表现较好也比较常见 。 2.无缝分割总体的U-Net结构是对称的,但是输出的分辨率小于输入,因为无论左边右边,每次无padding的卷积操作都减小了特征图的尺寸。 作者这样设计的原因,主要在于应用场景。U-Net可以被应用于任意较大尺寸的生物医学图像的无缝分割。对于较大的输入图像,例如训练的是572 * 572的输入尺寸,而实际需要输入5720 * 5720 的尺寸并进行分割,受输入大小的限制,可以采用slide window的形式遍历整张大图像,每次通过网络产生当前区域的分割输出。最后将所有的silding windows无缝拼接起来就可以完成整张超大尺寸的图像(5720 * 5720)的分割任务。
另外,当位于图像的边界区域时,采用将图像按水平竖直方向镜像翻转的方式补充空缺区域,也是保持着完成利用图像信息的思想。文中将其称之为Overlap-tile , 具体操作结果如下图所示: 3. 数据增强由于医学图像分割的任务数据集往往比较小,因此作者充分利用弹性形变对训练集进行扩充。这将一定程度上迫使网络学习到在弹性形变中的,待检测物体(如细胞)图像数据中的不变量。这一方法对于生物医学的图像分割非常重要,人为的对图像进行形变处理,可以很容易且有效地模拟出真实生物细胞或组织的形变。 具体而言,对于显微图像,主要需要平移和旋转不变性以及对变形和灰度变化的鲁棒性。特别是训练样本的随机弹性变形是训练一个只有很少注释图像的分割网络的关键。作者使用3×3的coarse grid上进行随机替换向量以生成平滑的变形图像。随机替换的内容是从标准偏差为10像素的高斯分布中采样的。然后使用双三次插值计算每像素的替换。contracting path末端的Drop-out层实现了进一步的隐式数据扩充。 4.Weighted Loss及训练过程在生物医学图像分割时还面临一个问题,即对相互接触的同类物体进行分割。文中采取的做法是对每个像素位置分配权重,计算加权损失,在训练过程中以期更好地分割各物体的边界。这一部分的笔记主要参考:https://zhuanlan.zhihu.com/p/128539526,博主写得很好,因此摘录过来借鉴学习。 N 表示和一个神经元节点连接的输入结点的数量。例如对于3 * 3的卷积,特征通道为64的层,则N= 3 * 3 * 64 = 576。 5.评价指标本文使用的评价指标包括wraping error,Rand error,pixel error以及IoU。 5.1warping errorwarping error是基于拓扑不变性衡量分割质量。当pixel error很大当分割效果更好可以引入warping error,主要用来衡量分割目标的拓扑形状效果。 将ground truth L*保持拓扑不变(没有分裂、合并、产生或消去空洞、增加或减少物体数量等,可以增减像素的数量),并只在一定范围产生像素变化,得到许多L,计算预测输出 T和 L 间的最小距离作为warping error结果。计算公式如下: 5.2 Random errorRand error是根据Rand Index而来,是一种聚类的评价指标。即将分割任务看作是一种对像素的聚类,来衡量分割质量。 定义 a 表示在 SC 和 SK 上都属于同一类的像素对数量。 b表示在 SC 和 SK 上都属于不同类的像素对数量。则此处的Rand Index(兰德指数)的计算公式为: Rand Error 计算公式为: 5.3 Pixel Errorpixel error 则是根据每个像素位置计算分类错误的数量。 即Pixel Error = 预测错误的像素个数 / 总像素个数。对于二进制的labels,欧式距离和汉明距离结果相同。 Pixel error过于敏感,会考虑所有分割细节,warping error 和 Rand error则相对缓和,更倾向于形态和整体的分割质量,在生物医学图像分割上是较为合理的评价指标。 5.4 交并比(IOU intersection over union)
IOU = I / U IOU越大,说明预测结果与ground truth的重叠比例越大。 6.实验结果6.1 在EM segmentation challenge上的结果:
6.2 在ISBI数据集上的IoU结果:7 .U-Net总结UNet的设计,为当时的分割任务带来了很多新的思路,很多方法沿用至今,也产生了很多变体,如U-Net++和U-Net3+等。后续再补上相关的论文笔记。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 9:52:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |