文摘
本文提出一种新颖的方法并行播种地区增长分析算法使用统一计算设备架构(CUDA)技术,与打算克服理论的弱点分析算法的计算时间是直接与分段区域的大小成正比。的分割性能提出CUDA-based分析比较与分析实现单核cpu,四核cpu,和材质语言编程,使用合成数据集和20身体CT扫描。基于实验结果,CUDA-based分析优于其他三个实现,主张,它可以大大帮助细分在大规模CT筛查。
1。介绍
图像分割,确定功能或2 d图像中的对象或3 d体积数据,是一个具有挑战性的视任务在医学图像分析。虽然全自动分割、自动识别对象没有用户交互和反馈,可以作为一个最优的解决方案计算机辅助诊断(CADx),它不经常保证准确的分割。相比之下,涉及用户交互的半自动分割提供更快和更准确的分割。已经有大量研究半自动分割方法(1- - - - - -14]。在这些研究中,种子区域生长分析是一种广泛使用的分割方法对于识别相对同质的对象(如肺部和冒号由于其计算简单2,3,5,8]。
分析检测所有的连接体素,满足预定义的条件(例如,强度阈值)。给定一组由用户指定的种子点,他们的邻近像素点检查,以确定是否有特性(例如,强度值),类似于种子点。收集足够的相似的相邻像素点,然后添加到分割区域。继续这个过程,通过检查添加的邻居像素点进行进一步的收集。算法停止当没有更多的像素点检查。
理论上分析的计算时间是成正比的体素的3 d体积数据(或2 d图像的像素数量)对应于最终的分割区域,因为分割区域由一个立体像素扩展。分析识别小区域在一个互动的速度;然而,它需要在十秒段相对较大地区30多个百万像素点组成的,即使在一个高端电脑,例如,一个2.83 GHz四核处理器和8 GB的内存。
为了加快分析计算和独立分割的区域大小,可以应用一种并行处理技术。现代cpu 16芯(通常双核或四核),和高度并行计算设备(如图形处理单元(gpu)有超过几百个内核15]。开放多处理(OpenMP)可以用作对CPU并行处理方法。OpenMP是一种应用程序编程接口,支持多平台共享内存并行编程的C、c++和Fortran (16]。随着商品便宜的多核处理器和相应OpenMP-capable依令行事,OpenMP获得声望(17- - - - - -19]。
gpu近年来发展非常迅速,现在更强大的比现代的cpu (15]。gpu本质上是大规模并行处理设备和许多小的处理单元。因此,他们可以成功地应用于高度并行计算问题。gpu成为与材质的引入可编程语言(例如,高水平的材质语言,或HLSL;OpenGL着色语言,或GLSL;图形和C,或Cg)。然而,材质语言编程是复杂的,因为它需要先验知识的计算机图形学。随着新技术的出现,比如统一计算设备架构(CUDA) [20.),它变得更加可行的执行复杂的算法在gpu上相对简单的编程方法。
有研究报道使用gpu并行分割算法。杨和韦尔奇(21)使用寄存器组合器执行阈值和基本运算对二维彩色图像。与NVIDIA GPU实现Geforce4证明加速了30%在2.2 GHz CPU实现英特尔奔腾4个CPU。中提琴et al。22)提出了一种三维分割方法使用阈值结合交互式可视化,观察近一倍的加速一个CPU实现。
Rumpf和Strzodka23]介绍了水平集分割的实现在GPU上。他们进行2 d图像分割使用一个2 d水平集方程与强度和梯度力。Lefohn和惠特克24扩展,努力实施第一个3 d水平集分割在GPU上。实施允许用户控制发展的曲率分段交互和支持更复杂的进化函数更精确的分割。这些实现并不比高度优化的CPU实现的计算整个图像的水平集值。Lefohn et al。25,26增强他们早期研究通过使用一个优化3 d水平集方法。他们的方法计算水平集值只在水平集的边界区域轮廓而不是整个形象,导致10-15x高度优化的CPU实现加速。Sherbondy et al。27)也提出了一个基于gpu的三维分割方法使用深度扑杀技术条件执行计算水平集值在边界地区的水平集轮廓。
只有少数方法已经提出,利用CUDA技术来实现分割算法。Vineet和Narayanan28)提出了一个快速的实现push-relabel mincut / maxflow算法使用CUDA graph-cuts算法。他们使用640×480尺寸基准图像和1024×1024尺寸合成图像的NVIDIA GTX 280性能比较。他们的实现是10 - 12倍最好的顺序算法报告。锅等。29日]在CUDA实现分析。他们比较了分析在CUDA实现,Cg系列CPU。实验结果,CUDA实现略有改善效率与Cg实现与大数据相比,但它比串行CPU实现快1.6倍。
在本文中,我们提出一个新颖的方法,使用CUDA并行分析算法技术。该方法的分割性能评估与分析实现单一相比,四核cpu和材质语言编程,使用合成数据集和医学CT数据集。
2。方法
2.1。CUDA架构
gpu特别适合解决并行处理问题在同一个程序并行执行在许多数据元素。这样的方式来表述数据并行处理处理地图数据元素(例如,像素在2 d图像处理或压在3 d渲染)并行处理线程。最近,由NVIDIA CUDA介绍了通用计算架构,利用gpu的并行处理单元来解决许多复杂的计算问题(15]。通过支持各种高级程序设计语言,CUDA使开发人员熟悉标准编程语言如C适应使用CUDA并行编程以较低的学习成本。
CUDA并行编程基于单指令多线程(SIMT),多个线程执行相同的单一指令。当一个函数被调用时,它将执行在平行的不同的CUDA线程。CUDA线程以分层的方式组织如下(图1)。(我)线程,每个线程执行一个给定的函数,都有一个独特的指数,称为线程id。(2)线程:线程被分组到一个线程阻塞。线程块需要执行independently-they应该可以在任何顺序执行,并行,或连续。(3)网格:一组线程块被组织成一个网格。一个网格分配给一个GPU;因此可以在一个GPU执行网格,而不是在多个GPU。
这些层次CUDA线程,它们的执行期间,访问数据从多个(读写)内存空间也分层次组织匹配的线程层次结构。内存层次结构如下(图1)。(我)本地内存:每个线程都有自己的私人地方的记忆。(2)共享内存:每个线程块的所有线程共享内存访问的块。共享内存有相同的生命周期作为其相应的块。线程在一块可以互相配合通过共享数据通过共享内存。(3)全局内存:所有线程访问相同的全局内存。全局内存充当缓冲区为组间通信的所有线程在相同的GPU。
有两个额外的只读存储器空间由所有线程访问和常数和纹理内存空间(图1)。全球、常数和纹理内存空间优化的具体内存用法。基于这些线程和内存层次结构,CUDA架构带来的高吞吐量和灵活性SIMT范例。
2.2。使用CUDA技术分析并行化
分析并行使用CUDA技术包括三个步骤:体积/掩码数据加载3 d阈值,和3 d区域增长。
2.2.1。体积/掩盖数据加载
原始体积数据和面具体积数据存储分割结果从CPU内存加载到CUDA全局内存。原来的体积数据(CT或MR数据在医疗领域)通常由一系列的二维切片图像。每一个2 d切片图像的位深度12位/像素,每个像素是与四两字节边界填充比特。CUDA设备能够读一本32,64,或128位词从全球记忆在一个单一的指令(15]。从初步测试,一个64位的字显示最佳的计算性能。因此,原始数据和面具体积数据量都是加载到一个64位的词的全局内存。体积与原始数据由16位的体素,四个连续的体素的设在存储在一个词的CUDA全局内存(GPU原始体积,或政府)(图2)。
面具卷CPU内存中的数据(CPU掩模体积,或巨细胞病毒)具有相同的分辨率与原始体积数据,由8位二进制体素,0或255“nonsegmented分段。“巨细胞病毒是加载到两套3 d CUDA全局内存记忆,用烟草花叶病毒(阈值面具卷存储试探性的阈值结果)和RMV(地区面具体积来存储最终分割结果)。每体素TMV和RMV是一个64位的词,在八个连续体素的面具设在巨细胞病毒都存储在一个词中TMV和RMV(图2)。这样,四个像素点在原来的体积和八个面具面罩体素体积可以同时处理一个CUDA操作。
2.2.2。3 d的阈值
加载数据到CUDA全局内存后,一个3 d的阈值是暂时的使用用户指定的种子点。结果是然后存储到烟草花叶病毒。在CUDA技术,一个线程是一个处理单元负责操作的体素在CUDA全局内存。每体素在整个体积,其相应的线程读取其强度值。如果当前体素的强度值与用户指定的相似准则下的种子点,烟草花叶病毒的掩码值设置为255,表示在接下来的3 d立体像素处理地区发展步骤;否则,面具值设置为0,表明该体素不做进一步的处理。
2.2.3。三维区域生长
三维阈值后,执行三维区域生长只通过引用两个面具卷,TMV和RMV。烟草花叶病毒已经包含面具结果阈值相似准则,原来的体积中引用数据不需要这3 d区域增长的操作。
RMV存储最终分割结果是初始化,因此只有面具种子点的值设置为255。对于每个体素,其相应的线程读取从RMV面具的价值。如果当前RMV掩码值为255(分段),线程读取一个面具从烟草花叶病毒(伪代码1)。如果TMV掩码值也是255,每个RMV掩码值更新6相邻像素点与相应的烟草花叶病毒“bitwise-OR”面具的价值。更新后RMV面具6相邻像素点的值,当前TMV面具值设置为0,阻止当前体素在后面的迭代中被处理。通过这种方式,分段从种子点区域生长的- - - - - -,- - - - - -,相互重合。在伪代码1,和函数引用掩码值的体素位置分别从TMV和RMV。这些定义如下:
|
||||||||||||||||||||||||||||||||||
前面提到的面具体积更新迭代,直至没有RMV掩码值的变化。计数器变量,num_updated,数量的线程数量更新RMV掩码值。num_updated在每个迭代中被初始化为0。当一个线程更新RMV面具6相邻像素点的值,num_updated增加1。如果num_updated是0迭代后,指示在RMV掩码值没有变化,3 d地区不断增长的终止。
2.3。利用CUDA编程/材质语言编程
分析算法可以使用材质语言编程实现以类似的方式使用CUDA技术。体积/面具后数据加载和种子点规范,执行三维区域生长和更新迭代面具卷。因为材质语言编程的GPU纹理内存不能使用“读”和“写”操作,应分配两个纹理的记忆,一个“读”和“写的其他。“两个纹理记忆转换自己的角色是“读”和“写”面具卷每次迭代后更新记忆。
在着色语言编程中,一个像素着色器处理器是一个处理单元负责特塞尔绵羊的GPU纹理内存的操作。每体素,其相应的像素着色器处理器读取和写入掩码值。如果当前体素的掩码值是255(分段),相应的像素着色器处理器255副本中相应的位置写面具的记忆。面具当前体素值为0时,它的强度是类似于用户指定的相似准则下的种子点,bitwise-OR值掩码值的六个相邻像素点的位置设置为当前体素在写作面具的记忆里。这样,体素的强度相似的种子点和有一个分段的体素6-neighborhood逐步添加到分割区域。
分析并行使用材质语言编程有几个局限性由于材质语言编程的基本约束。是理想的确定分割区域的体素包含在一个阅读和一个写操作。然而,作为一个像素着色器处理器只能更新相应的单一的体素值,像素着色器处理器为每个nonsegmented体素读6相邻的面具只更新相应的体素单掩模值在每个迭代中。此外,由于像素着色器处理器、图形管道后,应该写相应的体素值在每次迭代GPU纹理内存;它应该写一个面具价值写面具内存甚至以前分段压,导致多余的写操作。
可以克服这些限制的shader-language-based分析并行使用CUDA技术。相比单一立体像素的像素着色器处理器与约束在材质语言编程,CUDA的线程可以写多个掩码值,所以线程可以更新多达六个面具6相邻像素点的值。这可以真实地模拟多个写操作的原始分析算法。此外,CUDA-based分析并行处理可以避免进一步处理之前分段压在迭代3 d地区日益增长的操作。
3所示。实验结果
我们测试了该CUDA-based分析并行的英特尔酷睿i5 - 3570桌面系统3.4 GHz的四核处理器,8 GB的内存。系统还配备了GeForce GTX 285 GPU和1 GB的内存。的性能比较,我们也实现了使用HLSL分析,常用的材质语言之一,在GeForce 285 GTX公司。CUDA 2.3和HLSL着色模型4.0举10.0。此外,我们实现了CPU-based单核和四核架构分析。我们使用了OpenMP图书馆4.0 CPU-based四核架构分析。我们测试了四个方法(CUDA HLSL,单核CPU、和四核CPU方法)的合成和病人数据。这四个方法的计算时间与患者数据比较用弗里德曼测试posthoc测试用值阈值为0.05。
3.1。合成数据结果
一个立方体的合成数据包括三个数据集,一个缸,一个球体。合成数据的体积大小是512×512×512在所有情况下。为了演示的效果大小分割区域的计算性能,我们不同的正方体的边长,高度和半径的圆柱体,球体的半径(表1)。
图3显示了结果的计算时间秒,平均在多个测试。当segmented-region大小10大型体素(Mvoxels),计算时间增加在CUDA的顺序,HLSL,四核CPU和单核CPU的方法。的增量10 Mvoxels segmented-region大小、单核CPU,四核CPU、HLSL和CUDA方法表现出的增量(平均数±标准差),,,秒,分别计算时间。
(一)
(b)
(c)
随着segmented-region大小的增加,两个CPU方法的计算时间大大增加,而那些HLSL和CUDA的方法增加非常缓慢。特别是,CUDA方法需要近常数计算时间不管segmented-region大小。这些结果为所有三个合成数据集是一致的。两个CPU计算时间的巨大增量方法预计考虑voxel-by-voxel邻近像素点的集合的基本原则与足够的相似性。相比之下,几乎没有增加计算时间分钟HLSL和CUDA方法是由于他们都压在体积读至少一次在每个迭代。因此,他们不受数量的影响分段压(即。,the segmented-region size), but they might be rather affected by the number of whole voxels.
CUDA方法所需的最少的计算时间为所有测试segmented-region尺寸在所有三个合成数据集。视觉代表利用CUDA方法(最好的GPU方法在这项研究)的CPU方法,我们计算的比率的计算时间CPU CUDA的方法。因为所有三个合成数据集表现出类似的图形模式,我们只绘制立方体的计算时间比数据集(图4)。随着segmented-region大小增加,CUDA方法的相对优势在CPU方法增加,展示一个更大的增加计算时间比单核CPU比四核CPU。
3.2。病人数据结果
病人数据包括10肺癌和结肠癌CT扫描(表2)。表3显示的结果在几秒钟内计算时间和迭代次数对病人数据。与原始分析算法并不是一个迭代算法,迭代的数量是不包括在CPU实现表3。图5显示的volume-rendered图像分割实验的肺癌和结肠癌。
(一)
(b)
对肺CT扫描,计算时间显著增加在CUDA的顺序,HLSL,四核CPU和单核CPU方法(对于所有成对比较)。结肠CT扫描,计算时间显著增加在CUDA的顺序,四核CPU、单核CPU和HLSL方法(对于所有成对比较)。
HLSL方法有趣显示结肠扫描的最差表现甚至并行计算。结肠扫描,肺扫描相比,有一个小segmented-region大小(结肠癌和肺癌,(平均数±标准差)和),但一个更大的的迭代次数(与HLSL方法)。单芯和四核CPU方法直接受益于segmented-region结肠扫描的规模越小,表现出更少的计算时间结肠扫描。相比之下,HLSL方法,与其说是受到segmented-region大小作为合成数据结果,证明了迭代增加结肠扫描可能由于折叠的结构复杂性和起皱的结肠。CUDA和HLSL方法都需要更多的迭代结肠扫描比肺扫描,导致结肠扫描更多的计算时间。然而,CUDA的方法,这档节目的特点就是写多个掩码值和避免冗余的作品,仍然表现出最好的性能为结肠扫描以及肺扫描。
4所示。讨论
当segmented-region规模很小的合成数据,计算时间增加在CUDA的顺序,HLSL,四核CPU和单核CPU的方法。随着segmented-region大小的增加,所需的单和四核CPU方法显著增加计算时间,而CUDA和HLSL方法表现出一种非常缓慢的增加计算时间。特别是,CUDA方法表现出近常数计算时间不管CUDA segmented-region大小的方法。原始的性能分析算法从根本上受到segmented-region大小的影响,这可能是一个因素。CUDA方法显示所有测试segmented-region大小的最佳性能在所有合成数据集。它也表现为病人提供最好的肺癌和结肠癌CT扫描的数据集。
分割在肺癌和结肠癌CT数据集最近已成为一个重要的话题,作为考试迅速上涨的支持,在人群中筛查。从实用的观点来看,这是非常具有挑战性的解释等大量及时的检查。因此,任何新技术将欢迎如果它有助于解释的任何部分自动化流程。拟议中的CUDA-based分析方法,证明了最佳性能在我们的实验中,将有助于改善这种自动化系统的性能。另一个实际利用CUDA的方法在一个CPU方法会导致其性能可以提高更多的如果是一起使用的指定一个ROI(感兴趣的区域)。如我们的研究结果所示,两个CPU方法的性能高度依赖于segmented-region无论大小的存在这样一个ROI。因此,CPU的方法不会受益的ROI名称不会改变segmented-region大小。相比之下,CUDA方法的性能,而取决于数据的分辨率(即。,the number of whole voxels), may realize a substantial practical gain in the computational efficiency via the ROI designation.
最近的工作是由锅等。29日),播种地区增长使用CUDA技术实现。与潘et al。29日),我们的方法设计数据结构最大化利用CUDA架构。他们的方法从全局内存读取一个8位的词在一个单一的指令,而我们的方法从全局内存读取一个64位的词在一个单一的指令。由于可用的线程的数量的限制,数据大小由一个线程处理决定加速性能。他们的方法处理每一个线程只有一个立体像素,而我们的方法处理8个像素点每一个线程。自从分析算法是指相邻像素点的信息,我们开发了数据结构来表示当前和相邻像素点效率,同时被存储在一个64位的数据。
直接比较他们的工作之间的处理时间(29日),我们可能是不公平的,因为不同的显卡(即使用。的Geforce 8500 GT的工作和在我们的Geforce 285 GTX公司)。他们分割心脏,动脉和骨同时使用多个种子点在腹部CT扫描图像的分辨率为512×512×289。相比之下,我们分割肺肺CT扫描分辨率512×512×332,数量最接近的切片图像作为他们的工作。考虑到切片图像的数量在我们的实验中超过锅等人的和肺总量的体积比心脏,动脉,和骨骼,比较是对我们不利,而倾向于锅的et al . .均值计算时间0.53秒,而他们是12.88秒(2.26年代考虑5.71 x GPU的性能提升的Geforce 8500 GT的Geforce 285 GTX)。
拟议中的CUDA-based分析方法有局限性。记忆的方法需要两倍原来的体积数据。它使用两套面具体积数据存储分割结果。每个面具与8位数据集每体素体积相当于一半的原始数据,因此这两个数据集需要完全相同的原始体积数据存储的内存数量。这些额外的存储是不可能忽略考虑到有限的GPU内存空间。然而,使用额外的存储可能是不可避免的考虑提出的计算效率获得CUDA的方法。
5。结论
本文提出了一种并行的方法使用CUDA技术分析算法。的分割性能提出CUDA-based分析方法评估与分析实现单一相比,四核cpu和材质语言编程。利用CUDA技术的特点同时写入多个掩模体素和避免冗余的著作,拟议中的CUDA-based分析优于其他三种方法合成和病人数据集。考虑其无与伦比的计算效率和近的有利特性常数计算时间不管segmented-region大小,提出CUDA-based分析可以提倡大力协助分割在大规模CT筛查。
利益冲突
作者宣称没有利益冲突有关的出版。
确认
本研究在一定程度上支持基础科学研究项目通过韩国国家研究基金会(NRF)由科技部,ICT和未来规划(NRF - 2013 r1a1a3006706)。这部分工作是支持的MSIP / KEIT研发项目。(10044316,移动创作高质量的立体平台内容)和部分支持基础科学研究项目通过韩国国家研究基金会(NRF)由科技部,ICT和未来规划(没有。2014 r1a2a2a03002574)。这部分工作支持的信息通信技术研发项目MSIP / IITP(10044910,开发的多峰性成像和三维仿真综合诊断软件系统支持心血管疾病)。