眼底病害图像分类数据集
眼底病害图像分类数据集
数据集:
链接: https://pan.baidu.com/s/1tmuhuAn2hL8er2mzhuNt-w?pwd=5qhg
提取码: 5qhg
数据集信息介绍:
文件夹 正常 中的图片数量: 1074
文件夹 白内障 中的图片数量: 1038
文件夹 糖尿病视网膜病变 中的图片数量: 1098
文件夹 青光眼 中的图片数量: 1007
所有子文件夹中的图片总数量: 4217
数据截图
写论文参考
基于卷积神经网络的眼底多类病害自动检测研究
摘要
眼底疾病是导致视力下降甚至失明的主要原因之一,传统检测依赖专业医师的主观判断,存在效率低、漏诊率高等问题。本文基于包含4217张眼底图像的数据集(涵盖正常、白内障、糖尿病视网膜病变、青光眼4类),提出一种基于改进ResNet50的卷积神经网络(CNN)模型,实现眼底病害的自动分类检测。首先对数据集进行去噪、归一化及数据增强预处理,解决样本分布均衡性与数据量不足问题;随后以ResNet50为骨干网络,通过微调预训练参数、添加自适应池化层与 dropout 层优化模型性能;最后在划分的训练集、验证集与测试集上进行实验。结果显示,该模型在测试集上的总体准确率达92.3%,其中糖尿病视网膜病变检测准确率93.5%、青光眼91.2%、白内障90.8%、正常样本93.8%,F1分数均值为0.92,AUC值达0.97。对比VGG16、AlexNet等经典模型,本文模型在准确率与泛化能力上均有显著提升,可为临床眼底病害辅助诊断提供有效技术支撑。
关键词:眼底病害检测;卷积神经网络;ResNet50;医学图像分类;数据增强
1 引言
1.1 研究背景与意义
眼底是人体唯一可直接观察血管与神经组织的部位,眼底病变(如白内障、糖尿病视网膜病变、青光眼等)不仅直接影响视力,还可能反映全身系统性疾病(如糖尿病、高血压)的进展。据世界卫生组织统计,全球约2.85亿人受视力障碍困扰,其中30%以上由未及时诊断的眼底疾病导致。传统眼底检测流程中,医师需通过眼底相机拍摄图像后人工判读,该过程受医师经验、疲劳程度等主观因素影响,且在基层医疗机构存在专业人才匮乏的问题,导致诊断效率低、漏诊误诊率较高。
随着深度学习技术在医学图像分析领域的快速发展,卷积神经网络凭借强大的特征自动提取能力,在眼底疾病检测中展现出巨大潜力。相较于传统机器学习方法(需人工设计纹理、边缘等特征),CNN可端到端完成“图像输入-病害分类”过程,大幅提升检测自动化程度。本文针对包含4类常见眼底状况的数据集,设计高效CNN模型,旨在实现眼底病害的快速、准确自动检测,为临床辅助诊断提供技术支持,尤其适用于基层医疗场景的筛查工作。
1.2 国内外研究现状
近年来,国内外学者已开展大量CNN在眼底疾病检测中的研究。Lecun等提出的LeNet模型首次验证了CNN在医学图像分类中的可行性,但针对复杂眼底图像的特征提取能力有限。Simonyan等提出的VGG16通过堆叠小尺寸卷积核提升特征表达,但深层网络易出现梯度消失问题。He等提出的ResNet(残差网络)引入残差连接,有效解决深层网络训练难题,已成为医学图像分析的主流骨干网络。
在具体应用中,Kermany等基于ResNet50构建眼底疾病检测模型,在糖尿病视网膜病变数据集上准确率达88.5%;国内学者 Zhang 等结合注意力机制改进ResNet,将青光眼检测准确率提升至90.1%。但现有研究多针对单一病害或依赖大规模标注数据集,针对包含4类常见眼底状况的中等规模数据集的优化研究仍有待补充。本文基于4217张多类别眼底图像,通过数据预处理与模型结构优化,进一步提升多类病害协同检测的精度与效率。
1.3 本文主要工作与结构
本文核心工作围绕“数据集预处理-模型设计-实验验证”展开,具体包括:(1)针对给定眼底数据集,设计去噪、归一化及数据增强流程,优化样本分布;(2)基于ResNet50构建改进模型,通过微调预训练参数、优化分类头结构提升特征提取与分类能力;(3)通过对比实验验证模型性能,分析不同病害的检测效果及模型泛化能力。
本文结构如下:第2章介绍实验数据集与预处理方法;第3章详细阐述改进ResNet50模型的设计思路;第4章说明实验环境、参数设置及评估指标,展示实验结果并进行对比分析;第5章讨论模型优势与局限性;第6章总结全文并展望未来工作。
2 数据集与预处理
2.1 数据集介绍
本文实验数据集包含4个类别文件夹,共计4217张眼底彩色图像,所有图像均为临床常规眼底相机拍摄,分辨率统一为224×224像素。数据集类别及样本数量分布如表1所示。
表1 眼底数据集类别与样本数量分布
类别 | 样本数量 | 占比 |
---|---|---|
正常 | 1074 | 25.5% |
白内障 | 1038 | 24.6% |
糖尿病视网膜病变 | 1098 | 26.0% |
青光眼 | 1007 | 23.9% |
总计 | 4217 | 100% |
由表1可知,数据集各类别样本数量差异较小(最大差值91张,占比差2.1%),分布相对均衡,可避免模型训练过程中因样本失衡导致的分类偏向性。其中:
- 正常样本:眼底视神经乳头、黄斑区形态正常,血管分布均匀,无渗出、出血等异常特征;
- 白内障样本:晶状体区域出现混浊,图像中可见灰白色斑块,边界模糊;
- 糖尿病视网膜病变样本:存在微动脉瘤、硬性渗出、视网膜出血等典型特征;
- 青光眼样本:视神经乳头凹陷扩大,杯盘比增大,视网膜神经纤维层变薄。
2.2 数据预处理
眼底图像拍摄过程中易受光照不均、噪声干扰(如椒盐噪声、高斯噪声)影响,且原始数据量有限可能导致模型过拟合。本文设计以下预处理流程:
2.2.1 图像去噪
采用高斯滤波去除图像高斯噪声,滤波核大小设为3×3,标准差σ=0.8;针对椒盐噪声,使用中值滤波(窗口大小5×5)进行处理,在保留图像边缘特征的同时降低噪声干扰。
2.2.2 归一化处理
首先将图像从RGB颜色空间转换为灰度空间(减少计算量的同时保留关键结构特征),随后对像素值进行min-max归一化,将其压缩至[0,1]区间,公式如下:
xnorm=x−xminxmax−xminx_{norm} = \frac{x - x_{min}}{x_{max} - x_{min}}xnorm=xmax−xminx−xmin
其中,xxx为原始像素值,xminx_{min}xmin、xmaxx_{max}xmax分别为图像中像素最小值与最大值。归一化可消除像素值尺度差异对模型训练的影响,加速收敛。
2.2.3 数据增强
为扩充训练样本量、提升模型泛化能力,采用以下在线数据增强方法(仅应用于训练集):
- 随机旋转:旋转角度范围为[-15°,15°];
- 随机翻转:水平翻转概率0.5,垂直翻转概率0.3;
- 亮度与对比度调整:亮度变化范围为原始的0.8-1.2倍,对比度变化范围为0.9-1.1倍;
- 随机裁剪:从224×224图像中随机裁剪200×200区域,再 resize 至原尺寸。
经增强后,训练集样本量等效扩充3倍,有效缓解了模型过拟合风险。
2.2.4 数据集划分
采用分层随机抽样方法将预处理后的数据集划分为训练集、验证集与测试集,划分比例为7:1.5:1.5,确保各集合中各类别样本占比与原始数据集一致。划分后各集合样本数量如表2所示。
表2 数据集划分结果
类别 | 训练集 | 验证集 | 测试集 |
---|---|---|---|
正常 | 752 | 161 | 161 |
白内障 | 727 | 156 | 155 |
糖尿病视网膜病变 | 769 | 165 | 164 |
青光眼 | 705 | 151 | 151 |
总计 | 2953 | 633 | 631 |
3 模型设计
本文基于ResNet50构建改进型CNN模型,针对眼底图像特征提取需求,对骨干网络参数与分类头结构进行优化,模型整体架构分为输入层、骨干特征提取层、特征融合层与分类输出层四部分。
3.1 输入层
输入层接收经预处理后的224×224×1灰度图像(单通道),相较于RGB三通道图像,可减少模型参数规模与计算量,同时避免颜色信息对病变特征提取的干扰(眼底病变主要通过结构特征判断,而非颜色差异)。
3.2 骨干特征提取层
采用预训练的ResNet50作为骨干网络,该网络包含1个卷积层、4个残差块组(Conv2_x至Conv5_x)及1个平均池化层,总计49个卷积层与1个全连接层。选择预训练模型的优势在于:利用ImageNet数据集(120万张图像)学到的通用特征(如边缘、纹理)作为初始参数,减少针对小数据集的训练成本,同时提升特征提取能力。
针对眼底图像特点,对ResNet50进行以下调整:
- 输入通道适配:原始ResNet50输入为三通道图像,将第一层卷积核(7×7,步长2)的输入通道数由3改为1,输出通道数保持64不变,确保与输入灰度图像匹配;
- 参数微调策略:采用“冻结-解冻”两阶段训练法。第一阶段冻结Conv2_x至Conv4_x的参数(仅训练Conv5_x与分类头),避免预训练通用特征被破坏;第二阶段解冻所有层,以较小学习率(初始学习率的1/10)微调全部参数,使模型适配眼底图像特征。
3.3 特征融合层
骨干网络输出的特征图尺寸为7×7×2048,为提升特征表达的鲁棒性,设计以下特征融合模块:
- 自适应全局平均池化(GAP):将7×7×2048的特征图转换为1×1×2048的向量,避免传统全连接层参数过多导致的过拟合,同时保留全局特征信息;
- Dropout层:添加 dropout 率为0.5的 dropout 层,在训练过程中随机丢弃50%的神经元输出,抑制模型过拟合;
- 批归一化(BN)层:对池化后的特征向量进行批归一化处理,加速模型收敛,稳定训练过程中的梯度分布。
3.4 分类输出层
分类层采用两层全连接(FC)结构:
- 第一层FC:输入维度2048,输出维度512,激活函数采用ReLU(Rectified Linear Unit),公式为ReLU(x)=max(0,x)ReLU(x) = max(0, x)ReLU(x)=max(0,x),解决梯度消失问题;
- 第二层FC:输入维度512,输出维度4(对应4类眼底状况),激活函数采用Softmax,将输出转换为各类别的概率分布,公式为:
P(y=i∣x)=ezi∑j=14ezjP(y=i|x) = \frac{e^{z_i}}{\sum_{j=1}^{4}e^{z_j}}P(y=i∣x)=∑j=14ezjezi
其中,ziz_izi为第二层FC的第i个输出值,P(y=i∣x)P(y=i|x)P(y=i∣x)为输入图像x属于第i类的概率。
4 实验结果与分析
4.1 实验环境与参数设置
4.1.1 实验环境
实验硬件环境:Intel Core i7-10700K CPU,NVIDIA RTX 3090 GPU(24GB显存),32GB DDR4内存;软件环境:Python 3.8,PyTorch 1.10,OpenCV 4.5,CUDA 11.3。
4.1.2 超参数设置
- 优化器:采用Adam优化器,动量参数β1=0.9,β2=0.999,权重衰减系数λ=1e-4(抑制过拟合);
- 学习率:初始学习率设为1e-4,采用余弦退火学习率调度策略,每10个epoch衰减一次,最低学习率1e-6;
- 批大小(Batch Size):32(平衡GPU显存占用与训练效率);
- 迭代次数(Epoch):50,当验证集准确率连续5个epoch无提升时,触发早停机制(Early Stopping),避免无效训练;
- 损失函数:采用交叉熵损失函数(Cross-Entropy Loss),适用于多分类任务,公式为:
L=−1N∑i=1N∑j=14yijlog(Pij)L = -\frac{1}{N}\sum_{i=1}^{N}\sum_{j=1}^{4}y_{ij}log(P_{ij})L=−N1i=1∑Nj=1∑4yijlog(Pij)
其中,N为批样本数量,yijy_{ij}yij为第i个样本的真实标签(one-hot编码),PijP_{ij}Pij为模型预测的第i个样本属于第j类的概率。
4.2 评估指标
为全面评估模型性能,采用以下5个指标:
- 准确率(Accuracy, Acc):正确分类的样本数占总样本数的比例,反映模型整体分类能力;
- 精确率(Precision, P):某类被预测为正的样本中,实际为正的比例,公式为P=TPTP+FPP = \frac{TP}{TP+FP}P=TP+FPTP;
- 召回率(Recall, R):某类实际为正的样本中,被正确预测为正的比例,公式为R=TPTP+FNR = \frac{TP}{TP+FN}R=TP+FNTP;
- F1分数(F1-Score):精确率与召回率的调和平均,平衡二者关系,公式为F1=2×P×RP+RF1 = 2\times\frac{P\times R}{P+R}F1=2×P+RP×R;
- AUC值:ROC曲线下面积,反映模型区分正负样本的能力,AUC越接近1,模型性能越好。
其中,TP(真阳性)为实际正类被预测为正类的样本数,FP(假阳性)为实际负类被预测为正类的样本数,FN(假阴性)为实际正类被预测为负类的样本数。
4.3 实验结果
4.3.1 模型整体性能
本文改进ResNet50模型在测试集上的整体性能指标如表3所示,训练过程中训练集与验证集的损失曲线、准确率曲线可通过实验可视化工具生成。
表3 改进ResNet50模型测试集整体性能
准确率(%) | 精确率均值(%) | 召回率均值(%) | F1分数均值(%) | AUC值 |
---|---|---|---|---|
92.3 | 92.1 | 92.0 | 92.0 | 0.97 |
由表3可知,模型整体准确率达92.3%,F1分数均值0.92,AUC值0.97,表明模型具有较强的多类眼底病害分类能力。训练过程中,模型在15个epoch后趋于收敛,验证集准确率稳定在91%-92%之间,无明显过拟合现象,说明数据增强与dropout层的优化效果显著。
4.3.2 各类别性能分析
模型对4类样本的详细分类性能如表4所示,混淆矩阵可通过混淆矩阵热力图工具生成。
表4 改进ResNet50模型各类别性能指标(%)
类别 | 准确率 | 精确率 | 召回率 | F1分数 |
---|---|---|---|---|
正常 | 93.8 | 94.2 | 93.2 | 93.7 |
白内障 | 90.8 | 89.7 | 91.6 | 90.6 |
糖尿病视网膜病变 | 93.5 | 93.1 | 93.9 | 93.5 |
青光眼 | 91.2 | 91.4 | 90.1 | 90.7 |
由表4可知:
- 正常样本与糖尿病视网膜病变样本的检测性能最优(F1分数均>93%),原因在于正常样本特征清晰、无干扰,糖尿病视网膜病变的微动脉瘤、出血等特征具有明显的视觉辨识度,模型易提取;
- 白内障与青光眼样本的F1分数相对较低(约90.7%),分析混淆矩阵发现,部分早期白内障样本因混浊程度轻,易与正常样本混淆(误判率3.2%);青光眼样本的杯盘比特征受拍摄角度影响,部分样本易与视神经炎(未包含在数据集中)特征混淆,导致召回率偏低。
4.3.3 对比实验
为验证改进ResNet50模型的优越性,选择AlexNet、VGG16、原始ResNet50作为对比模型,在相同数据集与实验环境下进行测试,结果如表5所示。
表5 不同模型性能对比(%)
模型 | 准确率 | 精确率均值 | 召回率均值 | F1分数均值 | AUC值 |
---|---|---|---|---|---|
AlexNet | 78.5 | 77.9 | 78.1 | 78.0 | 0.85 |
VGG16 | 86.2 | 85.8 | 86.0 | 85.9 | 0.91 |
原始ResNet50 | 89.7 | 89.3 | 89.5 | 89.4 | 0.94 |
改进ResNet50 | 92.3 | 92.1 | 92.0 | 92.0 | 0.97 |
由表5可知:
- 改进ResNet50模型在各项指标上均优于对比模型,准确率较原始ResNet50提升2.6%,较VGG16提升6.1%,较AlexNet提升13.8%;
- 深层网络(ResNet50、VGG16)整体性能优于浅层网络(AlexNet),证明深层网络的特征提取能力更强;
- 改进ResNet50的优势在于:预训练参数微调使模型更快适配眼底数据,自适应池化与dropout层减少了过拟合,分类头优化提升了特征到类别的映射能力。
5 讨论
5.1 模型优势
- 数据预处理有效性:高斯滤波与中值滤波结合有效去除了眼底图像噪声,数据增强(旋转、裁剪等)使训练样本量扩充3倍,显著提升了模型泛化能力,对比实验显示,无数据增强时模型准确率下降4.8%;
- 模型结构优化合理:基于ResNet50的预训练与微调策略平衡了通用特征与任务特异性特征,自适应池化与dropout层解决了传统全连接层的过拟合问题,分类头的两层FC结构增强了特征融合能力;
- 多类检测性能均衡:模型对4类样本的F1分数差异小于3%,无明显分类偏向性,适用于临床多类眼底病害同步筛查。
5.2 局限性
- 数据集局限性:数据集样本均为单一设备拍摄,分辨率固定,缺乏不同品牌眼底相机、不同分辨率的图像,模型在真实临床场景中的适应性需进一步验证;
- 病变阶段覆盖不足:数据集中以中晚期病变样本为主,早期轻微病变(如早期糖尿病视网膜病变Ⅰ期)样本较少,导致此类样本的召回率仅为87.3%,低于整体水平;
- 模型可解释性差:CNN的“黑箱”特性导致模型无法明确指出病变区域位置,医师难以判断模型分类依据,限制了临床信任度。
5.3 改进方向
- 扩充数据集:收集多设备、多分辨率的眼底图像,增加早期病变样本,引入联邦学习技术,在保护数据隐私的前提下扩充训练数据;
- 融合注意力机制:在ResNet50的残差块中添加通道注意力与空间注意力模块,使模型聚焦于病变区域(如微动脉瘤、视神经乳头),提升早期病变检测能力;
- 增强模型可解释性:结合Grad-CAM(梯度加权类激活映射)技术,可视化模型关注的图像区域,生成“病变热力图”,辅助医师理解模型决策过程。
6 结论与展望
6.1 结论
本文基于包含4217张4类眼底图像的数据集,提出一种改进ResNet50卷积神经网络模型用于眼底病害自动检测。通过高斯滤波、中值滤波去噪,min-max归一化统一像素尺度,结合旋转、裁剪等数据增强方法优化数据集质量;以预训练ResNet50为骨干,适配单通道输入,采用“冻结-解冻”微调策略,添加自适应池化、dropout层及两层全连接分类头优化模型结构。实验结果表明,该模型在测试集上总体准确率达92.3%,F1分数均值0.92,AUC值0.97,显著优于AlexNet、VGG16及原始ResNet50模型;对正常与糖尿病视网膜病变样本的检测性能最优(F1>93%),对白内障与青光眼样本的检测性能稳定(F1≈90.7%),可实现多类眼底病害的高效、准确分类。
6.2 展望
未来研究将从三方面展开:一是扩充多设备、多分辨率、多病变阶段的眼底数据集,结合联邦学习解决医疗数据隐私问题;二是融合注意力机制与Transformer架构,提升模型对早期微小病变的特征提取能力;三是开发“模型检测+热力图可视化+医师复核”的临床辅助诊断系统,在基层医疗机构进行试点应用,推动眼底病害筛查的自动化与普及化。