Data augmentation using learned transformations for one-shot medical image segmentation-论文详解

本文主要是介绍Data augmentation using learned transformations for one-shot medical image segmentation-论文详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是一篇CVPR2019的论文,主要是做Magnetic resonance imaging(MRI)医学图像的分割(segmentation)。

MRI

磁共振成像MRI)是一种用于放射学中的医学成像技术,用于形成人体解剖结构和生理过程的图片。MRI扫描仪使用强磁场,磁场梯度和无线电波来生成体内器官的图像。MRI不涉及X射线或使用电离辐射,这与CT或CAT扫描以及PET扫描不同。磁共振成像是一种医学上的应用的核磁共振(NMR)。NMR也可用于其他NMR应用(例如NMR光谱)中的成像

虽然现在在大多数医学环境中都可以很好地控制X射线的危害,但MRI扫描仍可能比CT扫描更好。MRI在医院和诊所中广泛用于医疗诊断,疾病分期和随访,而无需将身体暴露于放射线下。与CT相比,MRI可能会产生不同的信息。风险和不适可能与MRI扫描有关。与CT扫描相比,MRI扫描通常需要更长的时间并且声音更大,并且通常需要对象进入狭窄的封闭管中。此外,体内装有某些医疗植入物或其他不可移动金属的人可能无法安全地进行MRI检查。

MRI最初称为NMRI(核磁共振成像),但为了避免负关联而放弃了“核”。[1]当置于外部磁场中时,某些原子核能够吸收和发射射频能量。在临床和研究MRI中,氢原子最常用于生成可检测到的射频信号,该信号被靠近要检查的解剖结构的天线接收。氢原子在人和其他生物有机体中自然丰富,尤其是在水和脂肪中。由于这个原因,大多数MRI扫描本质上都绘制了体内水和脂肪的位置图。无线电波脉冲激发核自旋能量跃迁和磁场梯度将信号定位在空间中。通过改变脉冲序列的参数,可以基于组织中氢原子的弛豫特性在组织之间产生不同的对比度。

image segmentation

图像分割为一个分区的过程的数字图像分成多个段(集的像素,也被称为图像对象)。分割的目的是将图像的表示简化和/或更改为更有意义且更易于分析的图像。[1] [2]图像分割通常用于在图像中定位对象和边界(线,曲线等)。更准确地说,图像分割是为图像中的每个像素分配标签,以使具有相同标签的像素共享某些特征的过程。

图像分割的结果是一组集体覆盖整个图像的片段,或者是从图像中提取的轮廓集(请参见边缘检测)。区域中的每个像素在某些特征或计算的属性(例如颜色,强度或纹理)方面都相似。相邻区域在相同特征方面存在显着差异。[1] 当应用于医学成像中典型的一叠图像时,图像分割后得到的轮廓可借助诸如Marching cubes之类的插值算法用于创建3D重建。

这篇文章要解决的问题是:由于利用MRI数据进行训练的过程中需要进行手动的标注数据,因此作者希望仅仅利用一个区域标注的数据来生成其他未标注的数据和标签。

 

\large $$ \tau_{s}^{(i)}(x)=x \circ \phi^{(i)}, \quad \phi=g_{\theta_{s}}\left(x, y^{(i)}\right) $$

\large $$ \tau_{a}^{(i)}(x)=x+\psi^{(i)}, \quad \psi^{(i)}=h_{\theta_{\alpha}}\left(x, y^{(i)} \circ \phi^{-1}(i)\right) $$

其中的x 就是带标签的MRI原始数据, y就是未被标注的MRI数据。\large $\phi$ 是Spatial deformation function,主要是进行空间转换, \large $\psi^{(i)}$ 是per-voxel volume 的计算,也就是对区域的灰度计算的函数。

\large $\tau_{s}^{(i)}(x)$ 形式化表述为 :x 经过了Spatial transformation。

 \large $\tau_{a}^{(i)}(x)$形式化表述为:X 经过了appearance transformation。

通俗的理解就是:Spatial transformation 就是对空间的变换, appearance transformation:是对像素灰度的变换。当然这里面的变换都是在三维的。

下面是整个的模型架构图:

最后整个的loss:

\large ${\mathcal{L}_{\alpha}\left(x, y^{(i)}, \phi^{(i)}, \phi^{-1(i)}, \psi^{(i)}, c_{\alpha}\right)}{=\mathcal{L}_{s i m}\left(\left(x+\psi^{(i)}\right) \circ \phi^{(i)}, y^{(i)}\right)+\lambda_{\alpha} \mathcal{L}_{s m o o t h}\left(c_{\alpha}, \psi^{(i)}\right)}$

其中第一项:\large $\mathcal{L}_{\operatorname{sim}}\left(\left(x+\psi^{(i)}\right) \circ \phi^{(i)}, y^{(i)}\right)$ 表示的是x经过变换后和y(未标注的)的相似度的损失。

注意:这里面的spatial transformation 和 appearance transformation 都是x和y共同训练所得到的。因此x 变换肯定接近于y的结构。

第二项:\large $\mathcal{L}_{s m o o t h}\left(c_{\alpha}, \psi\right)=\left(1-c_{\alpha}\right) \nabla \psi$ 其中的\large c_a是带标注的二值图像,一旦图片确定,这个是一个确定值,因此我们需要最小化\large $\nabla \psi$,这个表现为图像在变化的过程之中要保持平滑,避免图像的剧烈变化。

最后生成的就是带标签的MRI 数据。 

                                                                                    \large $$ \hat{y}^{(i, j)}=\tau_{s}^{(i)}\left(\tau_{a}^{(j)}(x)\right) $$

                                                                                    \large $$ \hat{l}_{y}^{(i, j)}=\tau_{s}^{(i)}\left(l_{x}\right) $$

利用这个数据可以进行image segmentation 的训练。

 

Experiment

                                                          

             

 

可以看到,从各种指标中论文的方法都取得了不错的成绩,最后的实际实验中也与ground truth最接近。

论文连接:论文

 

这篇关于Data augmentation using learned transformations for one-shot medical image segmentation-论文详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/911987

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input