杨文开,董云云,赵涓涓+,强 彦,刘 江,Muhammad Bilal Zia
(1.太原理工大学 信息与计算机学院,山西 晋中 030600;2.山西省肿瘤医院 放射科,山西 太原 030000)
甲状腺结节是常见的临床疾病[1]。临床诊断甲状腺结节需要经验丰富的放射科医生阅读超声成像切片。然而,由于超声成像容易受到回声干扰和斑点噪声的影响,如图1所示,因此,对于经验不足的年轻放射科医生,往往存在较高的误诊率。最近,深度学习技术在计算机视觉方面取得了巨大的成功[2-4]。然而它们在甲状腺结节分类方面并没有达到令人满意的性能,因为性能优越的深度学习模型依赖带标签的较大规模的数据集的训练。为了缓解小样本医学图像数据集对深度学习模型的训练的限制,一些研究方案被提出,如使用迁移学习技术[5],或者采用半监督学习技术[6]。虽然这些方法取得了一定的成就,但是由于真实标记样本数量的限制,上述挑战仍然无法很好被解决。生成对抗网络(GAN)[7]可以通过训练来生成数据。然而,由于训练过程的不稳定,GAN生成的图像质量具有差异性。提出一种超声图像中甲状腺结节的生成方法,具体的,首先cGAN以编码后的不同样式的结节掩膜作为条件来生成具有不同特征的结节。然后,使用贝叶斯神经网络[8]识别出最有价值的生成样本并用其构建新的数据集来训练模型进行结节的分割和分类。实验结果表明,提出的方法可以在获得令人满意的分割和分类精度下,减少对真实训练样本的使用量,从而有效缓解小样本医学数据集的问题。
图1 良性和恶性甲状腺结节及其对应的掩膜
从合作医院收集了1030例超声甲状腺结节病变图像,其中良性结节病变图像534例,恶性结节病变图像496例,并确保收集的病变图像能够包含不同年龄阶段的患者(年龄均大于18岁),所有数据均经过脱敏处理。所有结节的平均大小约为2.4 cm,并确保收集的病变图像可以包括不同大小的结节。所有图像均由两名具有8年以上经验的高级放射科医生根据病理学检查结果进行良性或恶性标记,并手工绘制结节的掩膜,如图1所示。
提出的算法主要包括以下步骤:
(1)对收集的超声结节图像进行数据预处理;
(2)修改结节掩膜;
(3)利用VAE网络[9]编码掩膜图像;
(4)构建条件生成对抗网络(cGAN)进行图像生成;
(5)利用贝叶斯神经网络对生成图像进行得分排名,并选择得分最高的几个图像添加到原始训练数据集中;
(6)利用扩充后的数据集来训练结节分割或分类网络。
提出算法的整体流程如图2所示。
图2 提出算法的整体框架
1.2.1 数据预处理
对于收集的超声甲状腺结节图像按照以下步骤进行预处理,如图3所示。
(1)移除无用背景区域:收集的原始甲状腺结节超声图像(图3(a))中包含了许多对训练无用的背景信息,例如医院信息、超声设备参数等,并且它们的位置会发生改变。首先,根据背景区域与实际甲状腺结节超声图像区域(灰色区域)之间的像素为0的特点,自动裁剪掉无用背景信息。最终,获得实际的超声图像区域(图3(b))。
(2)获取结节感兴趣区域(ROI):在移除无用背景区域后,首先,根据超声图像中白色矩形框(超声检查过程中由放射科医师手动标记)的位置,提取出结节ROI区域(图3(c))。然后,为了适应接下来网络的输入,以矩形框的中心为中心,并以矩形框的较短边的长度作为边长提取出完全包含结节的方形ROI(图3(d))。此外,为了获得结节分割所用的掩膜图像,由两位高级放射科医师分别对结节区域进行手动分割,并将分割后的结节区域中的像素设置为255,结节区域以外的正常组织的像素设置为0,最后,以两名放射科医师手动分割的结节掩膜的交叉区域作为最终的结节掩膜(图3(e))。为了适应cGAN的输入,将获取的方形结节ROI与方形结节掩膜的尺寸统一调整为70×70。
图3 数据预处理过程
1.2.2 修改结节掩膜
为了生成包含不同特征的结节图像,采用以下一个或多个步骤来对结节的掩膜图像进行修改,如图4所示。
(1)移动掩膜边界:首先对结节掩膜边界线上的像素点进行随机位移以改变其形状。具体的,对边界线上每个像素点随机移动±[1,13]像素(图4(a))。然后,使用b样条线对修改后的边界线重新进行拟合(图4(b))。对于结节内部区域和周围正常组织区域新产生的像素值,使用线性插值的方法来产生(图4(c))。
图4 修改结节掩膜
(2)其它传统图像增强技术:水平或竖直翻转,随机旋转,平移。
1.2.3 结节掩膜图像的编码
为了能够将结节掩膜图像作为图像生成的条件,首先需要将结节掩膜图像编码为向量。使用VAE网络将结节掩膜编码为一个向量z。VAE网络是在自编码网络的基础上做了进一步变分处理,从而使得编码器的输出结果能够对应到目标图像分布的均值和方差,因此,得到的输出结果向量能够大致遵循标准正态分布。通过这种方式编码产生的向量能够被最大限度无损地解码为原始输入的真实图像。假设输入的结节掩膜为x,经过VAE网络编码会生成两组向量,一组代表均值μ,一组代表标准差σ,如图5所示,此外,在网络的训练过程中,还使用了重新参数化技巧[10],即对编码产生的标准差σ添加一组符合高斯分布的噪声(ε~N(0,1)),因此该网络最终编码得到的向量z,可以用下式表示
图5 结节掩膜图像的编码
z=μ+σ×ε;ε~N(0,1)
(1)
其中,z是输入结节掩膜的编码结果向量。μ是均值向量,σ是标准差向量,ε是添加的高斯噪声。
1.2.4 使用cGAN进行图像生成
生成器:用G来表示,其参数用θg表示。它遵循U-net网络[11]架构,由收缩路径和扩展路径组成,如图2所示,收缩路径遵循卷积神经网络的典型架构,共有8个卷积层构成。其中第一个卷积层采用尺寸为4×4的卷积核,步长为2,并使用LeakyRelu作为激活函数。除第一个卷积层之外,其余卷积层均采用尺寸为4×4的卷积核,步长为2,并进行数据归一化(batch normalization,BN)操作,使用LeakyRelu作为激活函数。收缩路径中前7个卷积层输出的特征图将经过复制之后与扩展路径中相应的卷积层输出的特征图进行级联。扩展路径同样由8个层构成,其中第一层到第七层,每层都有一个对特征图的上采样操作,后跟一个4×4的卷积层,并进行BN操作与Dropout操作,然后使用Relu作为激活函数。第八层同样进行特征图的上采样操作,后跟一个4×4的卷积层,但不进行BN操作和Dropout操作,并且使用Tanh作为激活函数。对于生成器的输入,z和结节的ROI图像I一起作为生成器的输入,此时的z将作为约束条件,来指导生成器的图像生成过程。最终生成器将输出一个与输入I尺寸相同的假图像G(z,I)。
判别器:用D来表示,其参数用θd来表示。它以原始结节ROI图像I和生成器产生的假图像 G((z,I);θd)作为输入,并最终给出该输入是来自真图像或是假图像的置信概率。它由4个卷积层构成,如图2所示,其中第一个卷积层采用尺寸为4×4的卷积核,步长为2,并使用LeakyRelu作为激活函数。其余3个卷积层均采用尺寸为4×4的卷积核,步长为2,并进行BN操作,然后使用LeakyRelu作为激活函数。最后一个卷积层的输出将被映射为一维向量,然后经过一个Sigmoid神经元,得到该输入是来自真图像或者假图像的置信概率。
1.2.5 cGAN的训练
原始cGAN的目标函数表示为下式
LcGAN(G,D)=EI,y[logD(I,y)]+
EI,z[log(1-D(I,G(z,I)))]
(2)
其中,I代表输入的真实图像,z代表输入的符合正态分布的随机噪声,y代表输出的图像, G(z,I)→y生成器 G试图将这个目标函数最小化,而判别器D则试图将其最大化。两者相互对抗来完成网络的训练
(3)
此外,先前的研究已经发现,将GAN的目标函数与传统的损失函数(例如L2距离)结合使用,对于生成器产生更加高质量的图像是有益的。在将两者结合使用之后,鉴别器的任务保持不变,但是生成器的任务不仅是欺骗鉴别器,而且还要使得产生的假图像在L2距离上接近于真实的输入图像。在这里使用L1距离来代替L2距离,因为L1距离可以使得生成的假图像的模糊性尽可能的减少[12]
(4)
因此,最终的目标函数如下
(5)
其中,λ设置为9以在 LcGAN(G,D)和LL1(G)两者之间取得平衡。
1.2.6 生成图像信息量的计算
(6)
算法1:在cGAN训练过程中,采用Minibatch随机梯度下降法作为优化器。在训练期间,首先在鉴别器上执行k步更新,然后在生成器上执行一步更新,两者交替进行。
for训练迭代次数do
fork步do
·m个小批量噪声样本 {z(1),…,z(m)} 来自噪声向量z
·m个小批量结节图像样本 {I(1),…,I(m)} 来自结节图像集合I
·m个小批量输出图像样本{y(1),…,y(m)}来自输出图像集合y
·通过随机梯度下降算法来更新判别器参数
endfor
·m个小批量噪声样本{z(1),…,z(m)}来自噪声向量z
·m个小批量结节图像样本{I(1),…,I(m)}来自结节图像集合I
·m个小批量输出图像样本{y(1),…,y(m)}来自输出图像集合y
·通过随机梯度下降算法来更新生成器参数
endfor
首先以病人为单位将数据集互斥的划分为训练集(80%)、验证集(10%)、测试集(10%),即保证每个病人的所有结节图像只出现在某个数据集类别中(训练集或验证集或测试集),以保证验证集和测试集中的图像不会出现在训练集中。训练集和验证集用来调整模型参数,测试集用来评价训练得到的模型的性能。对于分类结果的评价指标,通过获得的准确性(Acc)、敏感性(Sen)、特异性(Spe),和接收者工作曲线(ROC)线下面积(AUC)的平均值来评估模型性能。准确性表示的是算法能够正确识别良恶性结节的能力。敏感性表示算法能够正确识别恶性结节的能力。特异性表示算法能够正确识别良性结节的能力。AUC值对类别不平衡样本的分类很敏感,通常用于衡量算法对结节分类的综合性能,整体实验过程如算法2所示。
算法2:提出的算法的整体实验过程
输入:结节掩膜x和结节图像I
(1)对于输入结节图像I和对应的结节掩膜x;
(2)从训练集中选择一部分I和x, 使用它们来微调预先训练的VGG16分类网络和训练U-net分割网络;
(3)对训练集中剩余结节掩膜v使用1.2.2节中提出的方法进行修改,得到修改后的掩膜w;
(4)以w作为输入, VAE网络将其编码为向量z;
(5)以I和z作为输入,利用cGAN进行数据生成;
(6)使用贝叶斯神经网络计算生成数据的信息量并按降序排序,然后挑选排名靠前的几个图像并添加到训练集中形成新的训练集;
(7)使用新的训练集重新微调 VGG16分类网络和U-net分割网络;
(8)在验证集上验证训练得到的VGG16分类网络和U-net分割网络的性能;
(9)如果分类或者分割性能进一步提升,则重复步骤(4)~步骤(8),否则转到步骤(10);
(10)训练结束。
输出:训练完成的VGG16分类网络和U-net分割网络,并在测试集上进行评估
为了验证提出的数据生成方法可以在仅使用少量真实的带标记结节图像和大量生成数据的情况下,有效提升结节的分类性能,在使用不同比例的真实标记数据下(10%,15%,25%,30%),使用在ImageNet数据集上预先训练的VGG16网络[13]对结节进行分类实验。此外,为了使VGG16网络适应接下来的甲状腺结节的良恶性分类问题,首先删除VGG16网络的最后一个全连接层,然后分别添加了3个全连接层,这3个全连接层分别具有2048、1024和两个神经元。它们的权重是随机初始化的。最后一层的两个神经元使用sigmoid函数作为激活函数。提出的甲状腺结节超声图像生成方法在结节分类中的结果如表1和图6所示。10%表示:①从训练集中随机选取10%的数据形成一个初始微调集;②对微调集中的每个图像进行标准数据增强(水平翻转或垂直翻转,旋转,随机图像平移),为每个图像生成4个扩充图像,然后使用它们来微调VGG16网络;③对于剩余的图像及其掩膜,使用提出的cGAN模型生成多个图像,使用贝叶斯神经网络计算生成图像的信息量并排名,选取排名靠前的4名,并进行标准数据增广,之后将他们添加到初始微调数据集中形成新的数据集,然后使用新形成的数据集对VGG16网络继续进行微调,并在验证集上验证模型性能,重复此过程,直到在验证集上的分类准确性不再进一步提高为止。其它比例下的数据(15%,25%,35%)与上述实验过程相同。以上所有实验重复执行10次,保证每个数据都被用于组成初始微调集和用于输入到cGAN中进行数据生成至少一次,因此总共训练得到10个模型,每个模型均在测试集上进行独立测试,取10次测试的平均结果作为分类结果来评估模型的分类性能。在FSL下,5折表示使用全部真实标记数据经过标准数据扩充之后形成的数据集进行5折交叉验证微调VGG16网络的结果。35%表示从全部真实标记数据集中随机选择35%的数据并进行标准数据扩充之后形成的数据集来微调VGG16网络(该情况下同样重复实验5次),然后计算在测试集上的平均结果。
表1 不同比例真实标记数据下的结节分类结果
图6 不同比例真实标记数据下结节分类的ROC曲线
从表1中可以看出,在VGG16(不同比例)下,随着使用的真实标记数据的比例提升,结节的分类性能逐渐提高。当这种比例达到35%时,结节的分类性能几乎与VGG16(FSL)相同,表明提出的方法可以减少深度学习模型对真实训练样本的使用量,从而有效缓解小样本数据集在甲状腺结节分类中的局限性。
为了进一步解释在使用不同比例真实标记数据下,VGG16网络能够从结节图像中执行良好的特征提取,在使用35%真实标记数据下,随机选择了6个结节(图7,第一行,左侧3列为良性结节,右侧3列为恶性结节),并可视化最后一个卷积层的CAM激活图(图7,第二行),其中CAM是一个热图,可以突出分类器在做出决策时的注意力区域,因此,它可以揭示与预测相关的区域[14]。此外,还将CAM覆盖在原始结节图像上,以更直观地显示与预测相关的结节区域(图7,第三行)。如图7所示,在使用35%真实标记数据下, VGG16网络可以将注意力集中在结节区域,并正确地激活与预测相关的结节区域,表明提出的方法从结节图像中执行良好的特征提取任务。
图7 随机选择的6个结节及其激活图
为了验证提出的数据生成方法,可以在使用少量标记数据和大量生成数据的情况下,对结节分割性能的提升同样具有有益价值,在不同比例的标记数据下训练了U-net网络来进行结节分割实验。与结节分类时的情况相同,首先在不同比例真实标记数据下训练U-net进行结节分割,并在测试集上测试训练得到的U-net分割模型的性能。由两位8年以上的高级放射科医师手动分割的结节掩膜的交叉区域作为金标准,并以平均相似度度量函数(dice similarity coefficient,式(7))与敏感性(Sen,式(8))[15]作为指标,如图8所示,对U-net产生的分割结果与金标准进行了比较,结果见表2。其中,Dsc和Sen 两个指标越大表示模型分割性能越好。从表2中可以看出,与结节分类类似,在使用少量真实标记数据(约35%)时,U-net的结节分割性能几乎与FSL下相同,这表明提出的方法可以减少U-net分割模型对真实训练样本的依赖性,从而有效缓解小样本数据集对结节分割的局限性。此外,为了更加直观地展示不同比例的标记数据下U-net获得的分割结果与金标准之间的差异的变化,可视化了结节的分割结果,如图9所示。在图9中,黑色实线为金标准轮廓,黑色虚线为U-net分割轮廓。图9(a)、图9(b)、图9(c)、图9(d)、图9(e)分别为使用10%,15%,25%,30%,35%的真实标记数据下的分割结果。从图9中可以看出当使用的真实标记数据较少时(10%),U-net获得的分割结果较差,随着使用的真实标记数据数量增加,分割性能逐步提高。在使用约35%的真实标记数据下,可以获得令人满意的分割结果
图9 分割得到的结节区域的变化
表2 不同比例真实标记数据下获得的结节分割结果
图8 结节分割性能指标计算中的不同区域
(7)
(8)
本文提出了一种甲状腺结节超声图像生成方法,该方法以更改的结节掩膜作为条件,利用cGAN进行数据生成,使用贝叶斯神经网络选择信息量最丰富的样本来扩充训练数据集,以克服医学图像小样本数据集在甲状腺结节分割和分类应用方面的局限性。实验结果表明,提出的方法可以在获得令人满意的分割和分类准确性的前提下,减少对训练样本的使用量,从而有效缓解小样本数据集对结节分割和分类的局限性。在未来的工作中,将尝试从其它中心收集更多的数据来训练提出的模型,以评估提出的模型应用到多中心数据上的潜力。