使用分类网络进行质量评估
使用分类网络进行质量评估的方式较为简单,只需设计一个二分类网络即可。将数据集分为两类并分别打上标签,一类为高质量、清晰的眼底彩照数据,另一类为无效的或者无意义的图像数据。为了减小不同成像设备的差异,在图像进入分类模型之前需要进行预处理,并使用数据增强方式扩增数据集。训练好的模型将会直接将图像判别为高质量(好)或者低质量(差)。另一种将输出替换为线性回归的方式,输出只有一个结果,得分在0~1,代表对该图像的质量评分。该方式可更直观地观察图像的质量好坏程度。整个分类网络的流程见图7-11。
图7-11 眼底图像质量评估分类网络流程
(一)图像预处理
拿到原始图像后,第一步需要对图像周围无用的黑色区域进行裁剪。对每张图像进行手动裁剪既需要花费大量人力,也无法在未来接收到预测图像时实现自主的分类,因此需要设计一个自动裁剪无效区域的函数。该函数首先将原始图像转换为灰度图,后对图像像素分别按列和行进行扫描,若整列或整行的灰度值都处于某个阈值之间则保留,否则移除该列或该行。自动裁剪前后的结果见图7-12。
图7-12 眼底图像自动裁剪前后对比
下一步是对图像进行归一化预处理。大多数使用迁移学习方式的神经网络的归一化方式是将图像的均值与方差归一化至与ImageNet的均值和方差相同,但因为我们处理的眼底图像与自然图像有很大程度上的差异,直接使用该方式不一定能得到很好的效果。分析眼底图像的数据集,可以发现不同成像设备得到的眼底图像差异明显。除此之外,需要将眼底某些容易患病的部位如视杯、视盘、黄斑区或血管等加强,提高后面处理的准确率。因此我们采用将图像高斯模糊处理后与原始图像反向叠加,并将像素色彩均值移动到128的方式进行归一化以改善以上的情况。具体的公式如下所示:
其中,I为输入图像,*表示卷积操作,Gaussion(x,y,ρ)表示标准差为ρ的高斯滤波器,参数α、β、γ和ρ为经验参数,在本节中设置α=4、β=-4、γ=128和
ρ=10。
归一化前后的结果,如图7-13所示。
图7-13 眼底图像归一化前后对比
由于训练过程中使用的眼底图数据集只有一万多张样本,难以拟合出现实中千变万化的情况,甚至无法很好地对没“见过”的验证集进行测试。这种情况在深度学习中称为“过拟合”,即神经网络对训练的数据已经达到相当高的分类正确率,甚至达到百分之百,但当测试没学习过的数据时正确率却非常低。为了解决这个问题,随机改变样本可降低模型对某些属性的依赖,使参数与任务的复杂程度成比例。
数据增强的原理其实非常简单,在每次训练时对提取的数据在不丢失细节的情况下进行随机的图像变换,提高网络对同种类别但有略微差异的图像的适应性,即网络的泛化能力。对于眼底图像,由于输入的图像均为完整的眼底彩照,不会存在大小不一的情况,因此本节采用的数据增强形式为:①随机水平翻转;②随机角度旋转;③随机平移、缩放;④随机模糊。根据不同的任务,数据增强都会对验证集结果有极大的提升。输入的图像经过上述完整的预处理后,对每个像素除以255以将图像值域保持在0~1,并根据模型需要的图像尺寸进行缩放,即可输入模型中进行训练、验证与测试。
(二)模型搭建
Inception-ResNet-V2是在Inception-V4的基础上进行ResNet改造的,而Inception-V4对Inception-V3进行了架构的细化与改进。Inception家族的最大特点是使用Inception模块,该模块并联不同大小的卷积核,即得到不同大小的感受野,最后融合拼接不同尺度特征,如图7-14所示。
图7-14 Inception-V3的Inception模块
图中的Inception模块使用的都是1xn或nx1的卷积,与前两版本使用nxn的卷积相比,这样做可以减少一定的运算量。同时,Inception-ResNet-V2使用了新的Inception模块,即Inception-ResNet模块。相较于普通的Inception-V4模型,Inception-ResNet-V2在能达到相近的精度情况下计算量更小。该模块如图7-15所示。
图7-15 Inception-ResNet模块
在这个残差版本的Inception模块中,使用只有3个分支的卷积,并且每个分支后面都跟着一个1×1线性卷积层。但是如果通道数量超过1 000,这个Inception-ResNet模块就会失去稳定,并且在训练的早期死亡,死亡指几千次迭代后在平均池化前的最后一层会开始完全零化,只产生很小的数。经过研究发现,如果在模型后端的卷积增加跳跃连接,让网络自适应选择是否舍去某些卷积层,有助于模型训练的稳定及收敛。根据该结论,产生了一系列效果优异的网络,即Res Net家族。该思想同样可以使用在Inception模块中,增加整个模块的跳跃连接,提高训练的收敛性。
下面主要介绍Inception-ResNet网络模型整体结构,如图7-16所示,该架构是Inception-ResNet-V1和Inception-Res Net-V2共用的,但是里面的组件细节有部分不同。其中Stem模块的结构见图7-17。
表7-1对比了该网络模型与其余Inception网络模型在ILSVRC-2012数据集上的分类准确性。ImageNet是一个拥有超过1 500万张带标签的高分辨率图像的数据集,而ILSVRC是Image Net的一个子集,分1 000种类别,有超过120万张训练图像、50 000张验证图像和150 000张测试图像。在ImageNet上,习惯性地报告2个误差率:Top-1和Top-5,其中Top-5误差率是指测试图像上正确标签不属于被模型认为最有可能的5个标签的百分比。可以看见,Inception-Res Net-V2网络模型分类的错误率相对于其他网络模型还是有一定优势的。
图7-16 Inception-ResNet网络模型整体结构
表7-1 在ILSVRC-2012数据集上的测试结果
图7-17 Stem模块结构
(三)训练结果
上述模型的评估指标为分类准确率与AUC值。
在眼底图像质量评估任务中,AUC值越大,代表该模型越适合用于眼底图像质量评估。
表7-2为图像经过预处理后每隔1 000轮训练得到的测试集分类准确率。从表中可知,训练完5 000轮后,模型的分类准确率已经没有明显的变化,稳定在某个值附近。我们选择训练轮数为7 000时的准确率94.91%作为眼底图像分类的准确率。与未经过预处理的眼底图像的模型分类准确率相比,经过预处理的眼底图像的模型分类准确率总体较高,提高了大约1%。
表7-2 预处理后图像测试集分类准确率
根据训练7 000轮的数据,还可以用SPSS软件画出受试者工作特性曲线(ROC)并得到曲线下面积(AUC),AUC值越大,模型的分类性能越好,具体的结果见图7-18和表7-3。从图表中可以看出,ROC曲线下面积达到了98.2%,分类性能可以满足实际需求。
图7-18 ROC曲线图
表7-3 ROC曲线下面积
注:①在非参数假设下。
②零假设:实面积=0.5。