基于加权深度特征的医学图像并行检索仿真
2021-12-10毛亚青胡俊峰
毛亚青,王 亮,胡俊峰
(徐州医科大学医学信息学院,江苏 徐州 221000)
1 引言
医学图像在当今医疗诊断中发挥着显著的作用,对这些医学图像数据的检索更是医学图像应用的前提和基础。然而,随着医学影像存储与传输系统、医学数字成像和通信等标准的不断发展和完善,医学图像数据呈现爆炸式的增长。目前,医学影像数据约占医院内部数据总数的70%[1],这些规模庞大的医学图像资源带来了诸如存储体量大、检索效率低的问题,传统的串行遍历检索模式已经出现瓶颈,也增大了检索系统的负担。如何有效地检索医学图像,快速准确地搜索出满足要求的图像是亟待解决的重要问题。
分布式平台Hadoop的出现为大规模医学图像数据的检索提供了新的方向[2-5],通过分布式文件存储系统HDFS和分布式数据库HBase分别存储海量图像和手动选取的图像特征,然后通过基于MapReduce的分布式编程对输入的检索图像执行分布式并行相似性匹配和图像检索。这种检索方式提高了图像检索的速度和效率,但MapReduce并行模型在磁盘中进行运算,与基于内存的分布式计算引擎Spark相比,Spark每个作业中间输出的结果可以存储在内存中,无需读写HDFS。因此,Spark可以更好地适应医学图像检索过程中的迭代匹配的过程[6],从而提高检索速度。
在医学特征提取方面,基于内容的医学图像检索最初主要通过对特定场景根据主观判断手动提取特征,如:纹理特征、边缘特征、GIST特征等单个或多个特征的融合,很容易导致图像特征提取不完整,从而降低检索的精度。卷积神经网络(Convolutional Neural Networks,CNN)的出现提供了一种隐式自动学习的图像特征提取方案。基于CNN的深度特征不仅能够保留更多图像细节信息[7],在图像特征表示方面也表现出优于传统特征的效果[8]。在近年来基于CNN的医学图像检索研究[9-11]中,通过对网络结构的优化,很多学者有效提高了基于深度特征医学图像检索的精度。文献[9]使用由多个卷积层和全连接层组成的卷积神经网络,文献[10]采用经典LeNet模型进行图像特征提取。与后续的新模型相比,他们特征提取使用的网络模型层数太少,无法保留更深层的图像特征。文献[11]使用层数更深且可移植性更强的VGG网络模型,并在此基础上增加了Dense Blok,改善了特征提取不能表达图像语义的问题。VGG模型简化了卷积神经网络的结构,但训练的特征数量非常大,且随着网络层数的增多也加入了较多与图像信息无关的噪声特征。受Xu等人[12]的启发,本文通过基于部分语义的加权聚合方法进行医学图像特征提取,利用无监督策略选择部分卷积层滤波器生成权值,通过聚合对应各语义内容的加权区域表示获取最终的特征表示,抑制了背景噪声并突出有效判别部分,从而提取更加有效的深度特征信息。
为了提高医学图像检索的准确性,提取的图像特征需要保留更多的图像信息。因此其特征往往包含更高的维度,如基于VGG-16的CNN模型[12]提取的深度特征有4096维,庞大的特征维度也降低了特征存储和检索的效率。为此,众多学者[9-11,13]采用哈希编码的方式对高维特征向量进行编码压缩,从而节省存储空间、提升计算效率。然而,这些研究普遍是在单机的环境下,对于分布式存储的场景仍需要先把所有数据集中在单个节点进行编码模型训练,带来了更高的数据计算与存储压力。因此,本文适应医学图像分布式存储环境进行分布式哈希编码模型训练,从而优化哈希模型训练与计算存储的过程。
综上所述,为了提高大规模医学图像检索的精度和效率,提出了一种基于加权深度特征的医学图像并行检索方法。通过构建基于部分语义加权聚合方法的卷积神经网络模型进行医学图像深度特征提取,利用分布式乘积量化哈希函数建立医学图像压缩编码模型,结合Spark并行计算模型对图像特征进行分布式并行检索。通过仿真验证其性能,对比现有模型具有更高的检索精度和检索效率。
2 相关工作
2.1 Spark
Spark[6]是一个通用的大数据分布式计算框架,它实现了MapReduce编程范式,最初由加州大学伯克利分校AMP实验室开发完成。Spark继承了MapReduce编程简单的优点,并增加了对分布式内存计算的支持。相比之下,MapReduce将计算过程中的中间数据存储在磁盘上,而Spark则使用弹性分布式数据集RDD通过内存来存储中间数据[6],从而提高计算效率。此外,Spark可以非常方便地与Hadoop等开源产品进行融合,如资源管理和调度器YARN、Apache Mesos等。并且可以处理所有Hadoop支持的数据,如HDFS、HBase和Cassandra等。对于已经部署Hadoop集群的用户不需要做任何数据迁移就可以使用Spark的强大处理能力。图1所示为Spark的运行模式。
图1 Spark运行模式
2.2 卷积神经网络
20世纪 90年代,LeCun等人[14,15]设计了多层人工神经网LeNet-5模型,实现手写体数字识别,奠定了CNN发展的基础。之后,Krizhevsky等人[16]提出AlexNet模型,加深了网络层次并解决了Sigmoid的梯度消失问题,减轻了模型的过拟合,在图像识别任务上取得了重大突破。在这之后,研究学者又提出了其它的改善方法,如VGGNet[17]将网络的深度扩展到19层,并在卷积设计上,使用了更小的卷机核,不仅减少了参数,也达到了更好的效果。何恺明等人[18]提出的残差网络ResNet模型,进一步加深了神经网络的层次,同时解决了网络模型训练过程的退化问题,降低了深层网络的优化难度。然而在模型通用性方面,在不进行微调的情况下,相关研究[19]发现Resnet在图像检索和视觉目标跟踪任务中没有学习到良好的通用功能,而GoogleLeNet和VGGNet模型为转移学习提供了更好的性能。
2.3 基于乘积量化哈希的特征索引
传统树结构索引方法存储空间占用过大,且随着维度的增长空间代价成倍变大,因此需要通过对原始数据进行哈希编码压缩以节省空间。目前对哈希编码的研究主要包括数据无关哈希和数据驱动哈希:数据无关哈希方法以局部敏感哈希(Locality Sensitive Hashing,LSH)[20]为代表,在不考虑数据分布的情况下将原始空间中的数据投影到超平面获取相应编码。数据驱动哈希方法主要通过判别数据结构及分布信息来自动学习哈希函数,代表方法有谱哈希(Spectral Hashing,SH)[21]、迭代量化(Iterative Quantization,ITQ)[22]、乘积量化(Product Quantization,PQ)[23]、笛卡尔K均值(Cartesian K-Means)[24]及组合量化(Composite Quantization)[25]等。与其它编码方法相比,乘积量化模型能够有效解决聚类中心数量膨胀问题,进而提升大规模图像检索过程中的数据存储效率。
3 基于加权深度特征的医学图像并行检索
3.1 总体概述
本文提出的基于加权深度特征的医学图像并行检索方法主要包括3部分:1)基于加权深度特征的医学图像特征提取;2)基于分布式哈希的医学图像特征量化;3)医学图像并行检索。总体流程如图2所示。
图2 基于加权深度特征的医学图像并行检索
3.2 医学图像深度特征提取
在医学图像深度特征提取部分,本文首先通过VGG16网络模型提取深度卷积特征,然后基于部分语义的加权聚合方法进行特征加权筛选获取最终特征向量。特征筛选过程利用无监督策略选择部分卷积层滤波器生成概率权值方案,通过聚合对应各语义内容的加权区域表示获取最终的特征表示。具体流程如图3所示。
图3 医学图像深度特征提取过程
对于输入查询的图像I,首先传递到预训练的深度网络VGG-16模型提取深度卷积层特征f(由C个通道特征图组成,每个特征图高度为H、宽度为W)。该图像通过N个筛选出来的部分检测器加权聚合表示,即为N*C维的矢量表示。
部分判别检测器的选择基于医学图像特征数据集进行训练,选择具有更大差异的特征图通道,因此通过计算每个通道特征的方差进行筛选,C维向量gi(i=1,2,…,D)的C通道方差V={v1,v2,…,vc,…,vC}:
(1)
对C通道的方差{v1,v2,…,vC}进行排序,选择方差最大的前N个判别式卷积层滤波器作为部分检测器。然后,通过无监督策略生成概率权值方案,每个概率权值方案都对应于隐含的固定语义内容。通过选择的概率权值方案加权PWA表示的构造开始于具有高度H和宽度W的图像I的C×W×H维深度卷积特征f的加权和集:
(2)
系数wn是归一化权重,其取决于由部分检测器n生成的所选概率权值方案的位置(x,y)中的激活值vn(x,y):
(3)
其中α和β分别是功率归一化和功率缩放参数。
从加权和池化过程获得N个选择的C维区域表示ψn(I),进而通过连接选定的区域表示得到全局N×C维表示向量ψ(I)=[ψ1,ψ2,…,ψN],其中根据特征集的C通道的方差值选择N部分探测器,既提高了性能又提高了计算效率。
最后,通过后处理对全局表示ψ(I)执行l2-归一化、主成分分析(Principal Component Analysis,PCA)压缩和白化,并获得最终的M维表示ψPWA(I)
(4)
其中V是大小为M×N的PCA矩阵,M是保留维度的数量,σ1,σ2,…,σM是相关的奇异值。
3.3 基于分布式哈希的医学图像特征编码
医学图像特征编码模型是对卷积神经网络输出的医学图像特征进行哈希乘积量化编码,通过分布式编码存储实现任意图像查询的快速检索。首先,对训练数据集进行哈希编码学习以获得特征编码模型;进而将训练好的编码模型应用在原始医学图像数据集中,实现其压缩编码表示和编码数据分布式存储;最后,在医学图像检索过程中,对查询的图像向量在编码数据集上找出近邻候选编码集合,从而输出查询结果。
(5)
最后,编码模型C以多个子空间中编码模型的笛卡尔积的形式表示,C=C1×C2×…×Cm。整个算法的空间复杂度与向量维度p、子空间数量m和子空间聚类中心数量k有关,存储编码模型所需要的空间为O(mkp)。
图4显示了分布式编码模型的训练过程。Spark平台中的分布式计算过程将分布式数据存储RDD分为多个分区在集群中的不同节点上运行。因此为了实现分布式哈希检索,需要将哈希编码模型分布式地存储在RDD中。对于一个p维的输入数据集X,数据分布式地存储在m个计算节点上,因此将其划分成m个子集X=[X1,…,Xm],每个子集包含n个聚类中心,共需要m×n个分布式矩阵进行存储。编码矩阵用B=[B1,B2,…,BS]来表示,根据数据分布式这一特点,分布式乘积量化的目标函数为
图4 分布式编码模型训练过程
(6)
训练后的编码模型可以对分布式存储的医学图像深度特征数据集进行压缩编码表示。首先将分布在m个存储节点上的特征向量集划分成m份,再利用分布式编码模型对每份向量子集进行编码压缩K-Means预测,从而获得每份特征向量的聚类中心,再利用其聚类中心对每个向量子集进行编码表示。
3.4 医学图像并行检索
在医学图像检索的应用过程中,对于输入查询的医学图像,本文首先利用CNN模型进行深度特征提取,然后对哈希编码后的特征向量采用非对称距离度量[23]进行距离计算,最终输出k个距离最近的相似医学图像。利用非对称距离度量的优势在于能够避免直接计算查询医学图像深度特征向量与数据库中每个向量的欧式距离,从而减少查询时间,提高检索效率。
图5是医学图像并行检索过程的示意图。通过事先计算深度特征哈希数据库中每个聚类中心与其子向量的距离建立检索查找表;对于需要查询的医学图像深度特征向量q,计算其与数据库中聚类中心xi′的距离,即为该向量与其它图像向量之间的非对称距离;通过比较q与聚类中心的距离找出最近的聚类c,设距离为l;最后,遍历查找表将c聚类中每个向量与聚类中心的距离与l相加,即获得q与该聚类中所有向量的距离,筛选距离排序获得最近似的特征向量并返回对应的医学图像。
图5 医学图像并行检索过程
4 实验结果分析
4.1 实验环境与数据集
为了实现医学图像特征提取模型的高效训练和并行检索模型的分布式执行,本文将模型训练和并行检索两部分实验分在不同的环境中执行。其中,模型过程为基于CNN的加权深度特征提取模型的训练,环境选用GPU型号为Tesla K80、12GB内存的Google云服务器,并采用Python 3.6和Tensorflow 1.7的深度学习框架。并行检索包括基于分布式编码模型的训练和基于Spark的并行检索,环境选用1个主节点和3个计算几点,各节点配置情况如表1所示。
表1 分布式节点配置情况
实验数据集选用由美国国立卫生研究院临床中心(NIHCC)的团队开发的医学图像数据集DeepLesion(https:∥nihcc.app.box.com/v/DeepLesion),是来自4427个患者的多类别、病灶级别标注临床医疗CT图像开放数据集。该数据库中目前已有32,735张CT图像及病变信息,去除重复记录后共有已标记的病变图像9624个,包括:肺(2370)、腹部(2119)、纵隔(1640)、肝脏(1257)、骨盆(843)、软组织(660)、肾(488)和骨(247)共8种损伤类型。
本文实现的医学图像检索方法在DeepLesion数据集上进行医学图像特征提取和分布式并行检索。根据给定医学图像实现数据集中相同病灶、相似损伤的其它医学图像的检索,从而有效地辅助医疗诊断过程。
4.2 实验指标
平均准确率均值mAP(the mean Average Precision)是图像检索中最常用的评价指标,实验将其用于评价所提出图像检索方法的效果。检索结果的mAP值越大,相似图像在检索结果中排名越高,检索效果越好。mAP的计算基于查全率r和查准率p两个参数,定义为
(7)
具体含义指的是当查询第i张图像返回共j个检索结果时,rij表示检索到的正确结果占图像库中正确结果总数的百分比,pij表示检索到的正确结果占检索出的全部结果的百分比。通过查全率和查准率计算图像i的平均查准率(Average Precision,AP)为
(8)
其中,Δrij为在返回增加一张图像时查全率的变化值,n为数据集中的图像总数。因此,查询m张图像的平均查准率均值mAP为
(9)
4.3 实验分析
为验证本文提出医学图像检索方法的精度和效率,实验共分为三部分:图像特征提取方法的性能分析、分布式乘积量化哈希编码效果分析、分布式检索效率分析。
4.3.1 图像特征提取方法的检索性能分析
首先验证本文图像特征提取方法的性能,实验在单机环境下将本文所采用的加权聚合深度特征提取图像检索方法与最新的图像检索方法进行对比,包括:基于手工SIFT特征的图像检索算法RVD-W[26]、基于AlexNet模型深度特征的图像检索算法CNN-SL[27]、基于GoogleLeNet模型深度特征的图像检索算法CCS[28]和基于VGG模型深度特征的图像检索算法CroW[29](https:∥github.corn/yahoocrow)进行检索的mAP对比。
表2所示为采用不同特征提取模型的检索方法效果对比,相比基于SIFT特征提取和其它CNN深度特征,本文特征提取所采用的算法在医学图像集中获得了最好的检索效果。
表2 不同图像特征提取方法检索效果对比
4.3.2 分布式乘积量化哈希编码效果分析
为了验证本文分布式乘积量化哈希编码的性能,将所提出的算法与局部敏感哈希编码LSH[20]、有谱哈希SH[21]、迭代量化ITQ[22]三种经典哈希编码算法在不同医学图像编码长度时的检索性能进行对比。
在编码过程中,编码长度由子空间数量m和各空间聚类中心个数k决定,编码长度l=m*log2k(bit),实验采用编码位数分别为:8、16、32、64、128的长度进行实验,4种哈希编码算法的性能情况如图6所示。随着选取编码长度的增大,所有编码模型的检索性能均有提高,是因为编码长度越大所保留的特征长度越大、表达图像信息的能力越强,因此编码检索效果越好。而相比之下,本文分布式乘积量化的哈希编码模型平均检索均值更高,检索性能更好。
图6 哈希编码算法检索性能对比
在Spark分布式训练调优方面,实验选取不同数量的Executor(节点的执行进程数)、针对不同哈希编码长度进行哈希编码模型分布式训练,对比其编码模型的训练时间,如图7所示。总的来说,编码长度越长,所需训练的时间越长。且随着Executor个数的增多,训练消耗时间趋势呈先下降后平缓,这是因为受限于Spark集群的计算节点总处理器核心数,所以最终时间消耗趋于稳定。
图7 编码模型训练时间对比
4.3.3 分布式检索效率分析
在检索效率方面,实验在分布式环境中对本文方法检索效果、分布式检索效率即在不同节点数、不同检索图像数据量情况下的检索时间进行分析。
图8显示了具有在不同节点数的Spark集群中医学图像检索时间的比较。所提出算法消耗的时间随着节点数量的增多而减少,同时也表现出整体系统的可扩展性。时间下降的趋势逐渐趋于平缓,是因为虽然节点增多,但集群不可避免地需要消耗用来维持节点间网络通信、调度计算等的时间。总的来说,算法运行效率随着节点的增加而更高,且数据量越大采用分布式计算的优势越明显。
图8 分布式检索效率对比
4.3.4 医学图像检索结果
如图9是根据需要检索的纵隔损伤图像(损伤类型为3),使用本文算法的检索出DeepLesion损伤数据集中前8张匹配的相似损伤图像。同时,图中也检索出相似的肺部损伤图像(损伤类型为5),从而提供数据集中的相关信息以辅助临床诊断。
图9 医学图像检索结果
5 结束语
为了提高大规模医学图像检索的准确性和效率,本文深入研究和实现在Spark平台下基于加权深度特征和分布式哈希的医学图像并行检索方法。通过基于部分语义加权聚合的卷积神经网络对医学图像进行深度特征提取,保证了医学图像特征对原有图像的关键信息保留;通过乘积量化的哈希编码模型实现对医学图像特征的压缩存储,提高了存储效率;通过基于Spark的分布式检索提高了检索的计算效率。最后,通过在医学图像数据集上的实验对比在医学图像特征提取、哈希编码性能、检索效率方面系统均有良好表现。在未来的工作中,将拓展进行更大规模医学图像数据集的并行检索,从扩大数据规模和医学图像检索类别等角度提高系统的可拓展性。