基于卷积神经网络的结肠镜图像息肉识别
2022-11-17胡珂立洪方雨
董 煦 胡珂立 洪方雨
(绍兴文理学院 计算机科学与工程系, 浙江 绍兴 312000)
结直肠息肉是一种结直肠黏膜表面突出到肠腔内的隆起状病变,在未确定性质之前均称为息肉.当前多项临床研究显示,息肉在特定条件下发生恶变率较高,也是诱发结直肠癌的主要原因[1].据Globocan’2020信息,结直肠癌是全球第三大癌症,是第二大致死癌症.在中国,结直肠癌的致死率也排在前列.根据2019年国家癌症中心发布的全国癌症统计数据,我国十大最常见癌症中结直肠癌排名第三,仅次于肺癌和胃癌.据2019年浙江省肿瘤医院公布的最新一期《2019年浙江省肿瘤登记年报》显示,结直肠癌排名第四,仅次于肺癌、女性乳腺癌、甲状腺癌.其中在男性癌症发病中结直肠癌排名第二.结直肠癌的最初表现是肠息肉,结肠镜检查也是结直肠癌筛查的金标准.通过结肠镜筛查并进行必要的肠息肉摘除是防止结直肠癌的有效方法,提前发现息肉并在息肉转化为癌细胞前将其摘除尤为重要.结肠镜筛查主要依赖医生临床经验,仅依靠医生仍可能有6%~27%的息肉漏检[2].结肠镜检查结合病例活检是确认息肉组织学类型的金标准,由于息肉图像存在不同程度的不确定性,医师很有可能无法用肉眼进行鉴别[3].研究发现,早期每提高1%的息肉检测率,并进行必要的摘除,结直肠癌转化率将降低3%[4].
采用计算机智能分析辅助结肠镜筛查是提升息肉检出率、降低漏检率的有效手段.息肉成像存在类内差异大、类间差异小等挑战,为息肉自动检测带来巨大挑战.传统机器学习算法已被用于结肠镜图像智能分析[5-8].Yuan等[5]将自下而上与自上而下机制结合的显著性检测算法用于息肉区域自动识别,Tajbakhsh等[7]利用形状和上下文信息在结肠镜图像序列中进行智能检测.传统算法需要根据息肉特征人为设计特征,并制定某种规则或者利用分类器进行检测.人为特征设计主要来自研究人员经验.由于息肉差异性极大,人为设计特征难以适应.近年,卷积神经网络在图像分析等多个领域中表现出了远超传统方法的性能.将卷积神经网络引入结肠镜图像识别,辅助人工尽早发现并对息肉进行及时处理可以大大降低肠息肉转化概率.该项研究不仅具有巨大挑战性和研究意义,还有很大的医学和现实意义[9-11].Yuan等[12]将旋转不变性和图像相似度引入,提出了用于内窥镜图像识别的RIIS-DenseNet网络,Fang等[13]将边缘信息引入,将网络分为区域提取和边缘提取两大分支,通过分支网络信息交互提升了息肉区域提取精度.本文针对人工特征设计困难、息肉成像差异大等问题,瞄准图像级息肉检测识别,针对VGG16[14]、ResNet18[15]、GoogLeNet[16]、EfficientNet[17]、SeNet[18]五种卷积神经网络进行了肠息肉检测适应性研究,对五种网络识别结果进行了分析,为图像级息肉自动筛查提供支撑.
1 网络结构及模型训练
1.1 GoogLeNet网络结构
GoogLeNet是一种典型的迁移应用学习的卷积神经网络,由输入层、多卷积层、多归一化层、多池化层、多采样层和输出层构成,结构如图1所示.
图1 GoogLeNet网络结构
GoogLeNet是基于Inception模块的深度神经网络模型,网络中的Inception Moudle可以扩展网络深度.GoogLeNet采用了多层传感和局部最优的系数结构替代普通卷积神经网络中的广义线性结构和全连接方式.
1.2 Incepting结构
在进行模型训练时,会遇到网络性能不足等情况,提升网络性能最直接的办法是增加网络深度和宽度,但是过多的增加网络深度和宽度会带来很多问题,如参数过多,产生过拟合.网络越大,参数越多,计算复杂度越大,导致网络难以应用.网络深度加深易出现弥散问题,难以优化模型.在增加网络深度和宽度的同时减少参数是一种解决方案.实践证明全连接变为稀疏连接后计算量并不会有质的提升,在这种需求下,Inception方法被提出.
GoogLeNet可较好解决网络层数增加而导致地过拟合、梯度爆炸和梯度消失等问题.GoogLeNet采用Inception结构.Inception结构把多个卷积和池化操作组装成一个网络模块,如图2所示.相比于VGG等传统网络结构,GoogLeNet在一层网络中存在多个不同尺度的卷积核,可以更高效地利用资源,得到更多特征,从而优化训练结果.
图2 Inception模块
1.3 激活函数
激活函数的主要作用是引入非线性因素.在卷积神经网络中,卷积操作对像素点进行线性操作.但样本不一定线性可分,为了解决这个问题,需要引入非线性因素强化网络学习能力.
GoogLeNet采用的激活函数为ReLU函数.深度学习中梯度消失是致命问题,在使用Sigmod等饱和激活函数下这种情况特别突出,而ReLU函数具有线性、非饱和的特点,训练速度会快很多,ReLU函数如式(1).
F(x)=max(0,x)
(1)
1.4 损失函数
损失函数(Loss Function)是用来估计模型预测值与真实值不一致程度的函数,是一个非负实值函数.本文采用Softmax loss函数作为损失函数:
(2)
L是损失,Sj是Softmax的输出向量S的第j个值,表示此样本是第j个类别的概率,y是一个1×T的向量,只有一个值是1,其他T-1个全是0.
2 实验
2.1 数据集
数据样本来自200余位病人结肠镜图像,数据集共有2 100张图像,其中有息肉图像1 100张,无息肉图像1 000张.
2.2 数据预处理
实验时将图像统一缩放为32×32,并且对图像进行随机水平翻转和随机垂直翻转处理来进行数据增强,按照70%训练集和30%测试集的方式进行划分.
在数据集中,图像从视觉上可分为三种,第一种有息肉且明显,第二种有息肉但不明显,第三种无息肉,如图3、图4及图5.
图3 有息肉且很明显 图4 有息肉且不明显 图5 无息肉
2.3 实验配置
在进行实验时,训练集共800个epoch,每个epoch都会检测训练集图片,得出准确率(Accuracy)、精确率(Precision)、召回率(Recall),每五个epoch生成一个模型用于验证测试集,最后得出160组模型用于测试集的测试,测试集得出160组数据.
实验采用带动量(momentum)的随机梯度下降(SGD)优化算法,参数配置:学习率=0.01,momentum=0.9,weight_decay=5e-4.设置权重衰减(weight_decay)的作用是调节模型复杂度对损失函数的影响,目的是为了防止过拟合,动量是梯度下降中常用的加速技术,目的是使模型加速收敛,抑制梯度下降时上下振荡的情况,带动量的SGD公式如下:
vi=momentum*vi-1-lr*dx(i≥1)
(3)
xi=xi-1+vi-1(i≥1)
(4)
其中v是梯度更新量,momentum为动量系数,lr为学习率,x是梯度,当本次梯度下降-lr*dx的方向与上次更新量v方向相同时,则这次下降的幅度就会加大,加速收敛.
2.4 测试指标
采用准确率、精确率、召回率、F1和F2作为测试指标,式(5)至式(7)中TP、TN、P、N、FP、FN分别指将正类预测为正类数、将负类预测为负类数、正类数、负类数、将负类预测为正类数、将正类预测为负类数.
(1)准确率:分类正确的样本数和样本总数的比值.此外,分类错误的样本数占样本总数的比例称为“错误率”(error rate).
(5)
(2)精确率:即正类预测正确的个数和所有预测成正类样本数的比值.
(6)
(3)召回率:即预测正类样本和原来一共正类样本数的比值.
(7)
五种网络F1、F2结果对比图如图6、图7.
图6 五种网络F1对比
图7 五种网络F2对比
2.5 训练时网络性能对比
对比五种网络的准确率、精确率、召回率,如图8至图10所示.从训练集结果中可以看出GoogLeNet的准确率、精确率、召回率明显高于其他四种网络模型.
图8 五种网络训练集准确率对比
图9 五种网络训练集精确率对比
图10 五种网络训练集召回对比
2.6 测试集模型性能
各算法在测试集上的准确率、 精确率、 召回率对比结果如图11至图13所示.
图11 五种网络测试集准确率对比
图12 五种网络测试集精确率对比
图13 五种网络测试集召回对比
由图11至图13可以看出,在准确率方面: GoogLeNet达到了99.84%, 比VGG16高0.79%,比ResNet18高11.59%.说明GoogLeNet的识别准确率(ACC)要优于其他四种网络.在精确率方面:GoogLeNet达到了100%,比VGG16高0.91%,比ResNet18高7.62%.说明GoogLeNet的识别精确率要优于其他四种网络.在召回率方面:GoogLeNet达到了99.7%,比SeNet高0.31%,比ResNet18高15.15%.说明GoogLeNet的识别召回率要优于其他四种网络.
通过VGG16、ResNet18、GoogLeNet、EfficientNet和SeNet五种网络模型比较分析, GoogLeNet在2 100张图像规模的数据集中达到了准确率99.84%、精确率100%、召回率99.7%的性能, 其准确率、精确率、召回率等评价指标优于其他模型.
3 实验分析
3.1 定性分析
表1选取了8张结肠镜图像,其中第1至4列是有息肉图像,息肉成像差异较大,第5至8列是无息肉图像,有光滑、褶皱等不同的结肠镜图像.对比结果如表1所示. 可以看出GoogLeNet模型识别结果全部正确,VGG16模型识别第五列结肠镜图像错误,EfficientNet模型识别第四列、第八列结肠镜图像错误,ResNet18模型识别第二列、第五列、第八列结肠镜图像错误,SeNet模型识别第三列结肠镜图像错误.
表1 VGG16、ResNet18、GoogLeNet、EfficientNet、SeNet定性分析表
3.2 误识别结果分析
虽然GoogLeNet网络相较于其他网络模型具有更高的准确率,准确率达到了99.84%,但在一万张图像检测中,平均还会有16张检测错误.测试集共有630张图像,准确率99.84%表示630张图像有1张识别错误,收集准确率最高一组前后各五组识别错误图像,将错误样本进行整理汇总,观察错误样本,分析发现识别错误的有息肉图像主要是息肉较小且息肉颜色与周围极度相似的图像(图A至图D), 识别错误的无息肉图像主要是结肠镜图像中存在光滑褶皱的图像(图E至图J),光滑褶皱跟息肉较为相似,比较难以识别.两种图像即使在进行人工识别时都难以区分,漏检概率较大.
图J
图E
图D
图A
通过对误识别数据进行分析发现, 虽然GoogLeNet在对肠息肉图像识别上已经取得了不错的识别效果,但在息肉细节特征的提取以及相似度较高的图像识别上,仍有较大的进步空间.
4 小结
针对肠息肉智能识别工作,本文将卷积神经网络应用于肠息肉图像识别中.针对GoogLeNet、VGG16、ResNet18、EfficientNet、SeNet五种卷积神经网络模型进行肠息肉检测适应性研究,观察了卷积神经网络训练过程,对训练集和验证集的准确率、精确率、召回率进行对比分析,结果表明,GoogLeNet识别效果优于其他模型,可为结肠镜辅助息肉筛查提供支撑.错误样本分析为后续息肉检测自动化和息肉识别网络模型改进提供有效支撑.在未来工作中,我们将从息肉边缘等多类特征融合和网络不同级特征交互方面展开研究,以进一步提升识别性能.
图B
图C
图F
图G
图H
图I