预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共25页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

肝脏CAD项目分类器算法的改进与GPU加速的研究PAGESHANGHAIJIAOTONGUNIVERSITY学士学位论文THESISOFBACHELOR论文题目:肝脏CAD分类器算法改进与GPGPU应用学生姓名:杨伟学生学号:5060379078专业:软件工程指导教师:孙焱学院(系):软件学院肝脏CAD项目分类器算法的改进与GPU加速的研究摘要肝癌患者在发病初期往往没有相应的症状和体征。于是在明确诊断时常常已经属于中晚期,目前对于肝脏的诊断还大量的使用肝脏组织活检穿刺术,它会给病患的生理和心理上带来很大的痛苦。于是计算机辅助诊断作为早期非介入的肝病诊断对于肝部病变的治疗有着重大的意义。由于肝脏辅助诊断的重要性,业界目前已经在肝脏辅助诊断领域内有了大量的研究,不过应该看到由于肝脏病变的特殊性,现在对于肝脏的辅助诊断并没有像对于肺结节和乳腺癌的辅助诊断那样取得理想的效果。肝脏病变不像其他的病变,其在影像学的表现上趋于弥漫性,并没有固定的形状,于是在肺结节和乳腺癌中得到广泛使用的形状先验知识就无法奏效。又由于不同的病变在平扫CT影像上的成像又往往比较相似,这无疑也是造成肝脏辅助诊断效果不佳的原因。REF_Ref263620816\r\h\*MERGEFORMAT[1]使用肝脏CT多期增强扫描技术,在造影剂的帮助下,CT图像分成动脉期、门静脉期和延迟期,加上无造影剂时的平扫期图像,算作4期。组织的对造影剂的通透性表现在图像上的明暗变化,而不同病变表现不同,从而给病变诊断提供了依据。已有的肝脏CAD项目正是使用这4期CT图像数据,通过提取感兴趣区域的纹理特征及时序特征,以SVM、KNN、神经网络等分类器,对病变进行分类。为了提高分类性能,采用了三层二分的分类器设计思想。项目虽然取得了一定的成果,如建立了辅助诊断从特征提取、训练到应用的整个流程、初步比较了各种分类器的性能,并提出了Scattergram分散图来提取时序特征等等,可以注意到,在特征提取和分类器训练上依旧有很多尚未考虑的问题。从样本特征值分布来看,数据虽然有一定的聚集性,但也有明显的交叉,比如正常样本的特征值范围基本被病变样本包含,意味着需要针对这个特点将正常类别检测出来。BP神经网络,进化神经网络,都可以获得比较好的训练结果,然而代价是缓慢的训练,特别是BP神经网络极易受初值影响,而且容易陷入局部极值之中,进化神经网络在编码规则上受到精度的限制,在种群数目比较大时,训练极为缓慢。更为重要的是,我们无法清楚的理解网络中蕴含的知识。KNN则意味着随着数据量增大,计算量也会增加,而且无法应对比较大的噪声问题。相比而言,模糊神经网络既可以应对学习,又可以比较清楚地了解网络所代表的含义。问题在于规则的处理和隶属函数的确定。先说隶属度函数,一般认为使用高斯函数可以比较好的反映数据的中心特性,对于动态构造的模糊神经网络,因为没有数据的统计数据,函数中心开始选取为数据点,函数半径设置一个与误差相关的初值,随着数据的增加,采取一个合适的策略优化隶属度函数。然后是规则推理问题,有2种可选方案,1种是隶属函数按类别分组,每组给出类的隶属度,然后推理出最终归属;另一种,则是只按特征值分组,需要根据隶属位置形成子规则,再加以推理。前者是在隶属函数上加上了权重,推理变得非常简单;后者则将数据位置绑定在规则之上,可以更好的反映不同特征值之间的关系,但训练样本需要更多,规则数也会更多,从而泛化能力可能受到限制。GPU应用于并行运算,即GPGPU技术,在CUDA推动下变得极为简单,考虑到神经网络的大量并行运算,如果使用GPU,我们就可以方便的处理大规模的网络,而不必过于担心速度问题。单纯的CPU,随着数据的增大,无论是训练还是应用,处理速度都会极大受到限制,如果为提高处理能力而配置高性能服务器,就会加大成本,不利于技术推广。而性价比极高的GPU则可以看作一个折中的方案。在初次尝试GPU中,也发现了许多值得注意的问题,最为重要的是数据结构和数据同步。目前我们尚不能像使用CPU一样控制GPU,需要额外为GPU进行编程,尽管CUDA已经极大地简化了编程模式,对初学者还是比较困难的。GPU运算时使用单独的存储器,需要自己手动进行数据在内存和显存中同步。为了提高GPU的加速比,显然就要尽量减少这些同步的次数。这些在GPU编程中都是需要注意的。就测试结果来看,只有在数据规模比较大的情况下使用GPU才比较划算,而规模比较小时,由于数据同步的额外开销,反而远不如直接CPU。然后是开发环境,原有CAD项目采用的是VC++,MFC+VTK编程,使用Python进行诊断模型训练,虽然有模块化设计,却没有真正做到模块化链接。本人之前使用