基于深度学习的甲状腺超声图像良恶性诊断算法研究
提示:适合用于课程设计或毕业设计,工作量达标,源码开放
甲状腺结节与甲状腺癌
甲状腺癌(thyroid cancer)是源起甲状腺组织的恶性肿瘤,发病率居头颈部恶性肿瘤前列。其最显著的初期症状及诊断依据为颈部出现甲状腺结节。然而其中绝大多数结节均属良性肿瘤,潜在的癌症病例仅占小部分。而肇因于检测技术的进步,近年来越来越多的甲状腺结节被检测出。由于对良性的病例无需进一步实施细针穿刺活组织检查或手术,因此针对结节进行准确的良恶性分析不仅可以减少病人风险,还可以显著降低医疗成本。
超声图像
目前,在检测甲状腺结节中,超声成像(sonography)是最常用的方法。颈部的多数结构,包括甲状腺在内,都可以在高频超声波下很好地的显示出组织细节。医学超声成像主要是使用探头发射远超人耳可识别范围的超声波,捕捉经人体组织反射的回声,并形成图像。
医学超声成像的优势主要在于其成像的即时性,低成本,以及没有明显长期副作用。由于超声成像可以细致地显示脏器的结构,其已经成为甲状腺结节良恶性检测最不可替代的成像手段。
自动诊断
绝大多数检测出的甲状腺结节都是良性的。传统上,良恶性的分析往往依赖于医生的个人经验,这对医生是一个很大的考验。目前的良恶性分析标准尚不健全,不同回声模式也限制了医疗人员的判断能力。除此之外,逐渐发展的成像手段使得检测出的甲状腺结节日益增多,这也增加了医生的工作量。如此,一个可以基于甲状腺超声图像自动地进行良恶性分析的系统将能够将医生从这一繁重的工作中解放出来,为医生提供客观、可靠的诊疗意见,并降低误诊率。该系统还可以缓解患者的不确定情绪,避免不必要的医学影像测试。
深度学习及其在医疗领域的应用概览
深度学习(deep learning)是目前机器学习中较为前沿的研究领域。在进行传统的机器学习时,往往需要人类设计并提供用以描述样本的特征。而深度学习则无需人类提供特征,可以自发地学习出适合问题的特征。
深度神经网络(deep neural network)以人工神经网络为基础,发展出了深度神经网络,卷积神经网络,递归神经网络等一系列框架,在图像、音频、自然语言等的处理中取得了广泛的应用。特别地,通过结合现代的成像技术,深度神经网络在医疗领域亦屡建殊勋。其中,较为显著的是卷积神经网络。
卷积神经网络(convolutional neural network)一般由多个卷积层组成,亦可包含一至多个全连接层。这样的结构使其可以充分利用数据的二维结构。因此,卷积神经网络尤其适合对图像的处理。目前,卷积神经网络在对医学图像的分割,目标的检测和分类中都发挥着重要的作用。
实现思路
本文着眼于讨论现有的不同卷积神经网络架构对甲状腺超声图像分类这一任务的效果,同时考虑几种可能的图像增强方法,包括现有的方法和新提出的方法,并对它们进行比较和总结。
在神经网络架构上,考虑非深度的普通机器学习算法、普通的卷积神经网络、微调的GoogLeNet。图像增强方法上,首先对原始图像进行传统的图像增强,包括提取裁切、平滑、对比度提升等。之后再使用卷积神经网络或生成对抗网络生成新的示例。
本文使用数据集是由国际光学工程学会(Society of Photo-Optical Instrumentation Engineers)提供的一个开源的甲状腺超声图像数据集。该数据集包含480张甲状腺超声图像,分属390个个体,其中良性样本61个,恶性样本288个。除去无效的数据后,共有349张图像,分属298个个体。每个样例包含一张超声图像和以个可扩展标记语言格式的描述文件。描述文件包含样例的编号、年龄、性别、结节成分、回声反射性、边缘状况、有无钙化、TI-RADS评分等信息。其中决定了样例良恶性的信息是TI-RADS评分。
甲状腺影像报告和数据系统(Thyroid Imaging Reporting and Data System, TI-RADS)是一个评分的分类系统,旨在通过超声图像分析确定甲状腺结节为恶性肿瘤的风险。在TI-RADS系统中,1代表正常的甲状腺,2代表出现典型的良性特征,3代表无可疑的特征,4代表开始出现可疑的特征,包括不规则边缘、低回声反射性(反映在图像则为低亮度)、高度大于宽度、钙化。4A表示出现一个可疑特征,4B表示出现两个,4C表示出现3或4个。5代表出现了全部5个可疑特征。TI-RADS评分在2和3的甲状腺超声图像,在病理学报告中证实为恶性的概率分别为0.9%和2.9%。因此,本文中,以下凡言及甲状腺超声图像的真实值为“良性”,指的便是TI-RADS的评分在2,3当中。
下记实验均在笔者的Dell Inspiron 15-7560移动计算机上实施,其装载有Intel ® Core i5-7500低电压双核CPU,8192MB随机存储,NVIDIA GeForce 940MX显卡,6055MB独立显存,搭载了64位Microsoft Windows 10 Edu N操作系统。这里采用的机器学习框架是Tensorflow。Tensorflow是目前使用最广泛的机器学习框架之一,使用它可以方便地构建深度神经网络。它提供面向Python的高级编程结构,也提供面向C++,Java等其他语言的底层接口,应用十分灵活。实验所用的Tensorflow版本是带有GPU加速的1.13.1,使用的Python版本是3.7.3。截至本文成稿时,所使用的均为最新的稳定发布。
原始数据是由480张560 × \times × 360 的24位(3通道 × \times × 8位)图像组成。每张图像除中央的超声图像外,还有大块黑色背景。左右两侧和右下角还有一些图像采集使用的标记。理论上,若这些背景和标记的分布是不受超声图像特征影响的,卷积神经网络应当可以“学习”到这些背景和标记对分类结果的作用很小。这里,为了排除不必要的干扰,先对图像做一步预处理,提取感兴趣区域。
预处理的第一步是裁切,将图像的四个边缘都裁去一定的宽度。接着是对图像进行灰度化得到单通道的图像,再对该图像进行高斯平滑。然后,再对平滑后的图像进行二值化。二值化后再取图像中的最大联通区域。原图像中对应的该区域即为感兴趣区域。如此得到的图像经过尺寸调整便可作为网络的输入了。最终输出的图像大小统一调整为128 × \times × 128的3通道图像,保留了原始数据的色彩特征。同时,128 × \times × 128的尺寸减少了运算量,也有利于之后在对抗生成网络中进行上采样。
此外,还从数据集中随机取出了30个示例作为测试样例。
在引入卷积神经网络之前,可以先尝试使用传统机器学习方法对甲状腺超声图像进行分类。
这里使用的神经网络结构共四个卷积层,每一层使用尺寸为3 × \times × 3的卷积核,线性整流激活函数。每两层之后进行一次最大池化,随之再进行一次随机失活,目的是防止过拟合。之后是两个全连接层,第一层采用线性整流激活函数,最后一层暨输出层采用指数归一化激活,有两个输出。这里的损失函数采用的是多分类的交叉熵函数。这样处理,主要是考虑可以进行后续的拓展。特别地,若分类任务不再局限于良恶性分析,而是需要更多的分类标准,那么逻辑回归就不合适了。这样的卷积神经网络可以使用梯度下降法进行训练。
在机器学习框架Tensorflow中,既可以使用高级编程接口快速实现神经网络的结构,也可以借由底层编程接口,对神经网络的结构细节进行把控。这里分别用了两种方法对简单的神经网络进行实现,其结果的比较见下。理论上,两种构建方式的实验结果应当相近。
迁移学习(transfer learning)是指将已有问题的解决模型应用在新的相关问题上。目前,在机器学习领域,迁移学习是一个相当热门的方向。而将机器学习应用于医学图像处理也是一个较新的思路。(TN Classification in Ultrasound Images by Fine-Tuning Deep CNN)一文首先提出在针对甲状腺超声图像分类时使用迁移学习。其使用了一个预训练的模型(即GoogLeNet)提取甲状腺超声图像的特征,再基于这些特征进行分类。由于预训练的模型在一个包含很多自然图像的庞大数据集ImageNet上具有良好的效果,可以认为其已经包含许多图像特征提取的知识,因此将其应用到甲状腺超声图像时,可以不用从零开始训练,只需“微调”(fine tuning)某些特定的参数即可。由于许多知识无需再从超声图像数据集中学习,这也缓解了对数据集的依赖。
该文献声称其微调了深度神经网络GoogLeNet。然而,GoogLeNet是一系列使用了类似核心架构(称为Inception结构)的神经网络的统称。谷歌的研究人员在2014年首次提出这样的架构,并于当年取得了ImageNet挑战赛的第一名。如今,Inception经过数个版本的发展,已臻完善。第一个版本Inception v1采用模块结构,提高模型的深度和宽度;第二个版本Inception v2提出了批量正则化(batch normalization);第三个版本Inception v3提出了卷积分解(factorization),将一个二维卷积分解为两个一维卷积;最近的版本Inception v4则结合了残差网络。由于文中没有提到使用的是何版本的GoogLeNet,因此,本文实验时采用了Inception v3的GoogLeNet。
实验时,首先调取在ImageNet上预训练的GoogLeNet网络的权重。去掉顶层的全连接后,加入适宜本问题的分类逻辑,锁定原GoogLeNet的权重后,进行一小段时间的训练。之后再将模型的前段保持锁定,解开模型的后端,使用较小的学习率进行一系列微调。
图像增强是甲状腺超声图像良恶性自动分析问题的关键。其一,具有良好标记的数据集较小,容易造成过拟合现象;其二,数据集中的图像质量亦参差不齐。(An Image Augmentation Method Using CNN for TN Classification by Transfer Learning)一文中首先提出,除了传统的图像增强方法,还可以使用卷积神经网络进行图像增强。该文献使用的神经网络的输入是两张具有同样标记的样本图像,即6个通道的输入,唯一的隐藏层包含16个通道,输出是一张3通道的“生成图像”。这样的网络理论上可以提取两张图像中的主要特征,生成一张具有这些特征的图像。如果某一类样本的数量为 N N N,则理论上可以生成的图像数量为 N 2 − N N^2 - N N2−N。
文献当中针对神经网络的使用很有启发性。然其损失函数的描述似有不妥。其实验结果见下部,关于其可靠性笔者按下不表。其与笔者所做实验结果的可比较性亦存疑。其使用的深度残差网络与迁移学习的方法也与笔者前述出入较大。
(An Image Augmentation Method Using CNN for TN Classification by Transfer Learning)一文使用了深度神经网络进行图像增强。其在论文末尾提到将来可使用对抗生成网络进行图像增强。笔者针对这一点展开了拓展思考和实验,并对其可行性进行了如下分析。
对抗生成网络(Generative Adversarial Network)是深度学习领域较新的一个方向,是一种无监督的学习方法。生成对抗网络实际上包含两个部分,一是生成模型(Generator),一是判别模型(Discriminator)。生成模型通过学习和模仿输入的特征,对一系列随机噪声进行升维,生成假样本。判别模型则试图对假样本和真样本进行判别。如此,两个模型相互博弈形成均衡。最终使生成模型的输出能够在一定程度上体现原样本的特征。生成对抗网络在深度学习样本增强中已经有了良好的应用,针对甲状腺超声图像良恶性分析的应用尚无。
笔者主要探讨生成对抗网络在甲状腺超声图像增强中应用的可行性。这里使用的生成对抗网络是被称为DC-GAN的深度卷积生成对抗网络,其专门用于生成图像样本。其生成器的输入为长度为100的随机噪声,经过全连接、形状调整后可得到16 × \times × 16的128通道的图像,三次上采样、卷积、批量正则化、线性整流激活后可以得到一张128 × \times × 128的64通道图像。最后再经过一次卷积可得到一张和原始输入相同的图像。最后一层输出使用的是双曲正切激活(tanh activation)而不是线性整流激活(ReLu activation),主要原因是双曲正切函数的输出具有一个确定的范围,可以方便地转换为图像地像素值。而线性整流激活函数,及其变体带泄露的线性整流激活函数(leaky ReLu)都不具有这样的性质。判别器的输入为原始图像的大小,经过四次卷积、带泄露的线性整流激活、随机失活、批量正则化、全连接层和逻辑激活后形成一位输出,即对样本真假的判断。
生成模型的主要目的是使判别模型识别其生成的模型为真。因此其损失函数为判别模型的输出与全真向量的二值交叉熵。判别模型的主要目的有二,其一是将真样本识别为真,另一是判断假样本为假,因此其损失函数是真样本的输出与全真向量的二值交叉熵和假样本的输出与全假向量的二值交叉熵之和(或平均值)。训练时,对生成模型和判别模型交叉进行优化。