当前位置: 首页 > news >正文

眼底病害图像分类数据集

眼底病害图像分类数据集

数据集:
链接: 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 眼底数据集类别与样本数量分布

类别样本数量占比
正常107425.5%
白内障103824.6%
糖尿病视网膜病变109826.0%
青光眼100723.9%
总计4217100%

由表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=xmaxxminxxmin
其中,xxx为原始像素值,xminx_{min}xminxmaxx_{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 数据集划分结果

类别训练集验证集测试集
正常752161161
白内障727156155
糖尿病视网膜病变769165164
青光眼705151151
总计2953633631

3 模型设计

本文基于ResNet50构建改进型CNN模型,针对眼底图像特征提取需求,对骨干网络参数与分类头结构进行优化,模型整体架构分为输入层、骨干特征提取层、特征融合层与分类输出层四部分。

3.1 输入层

输入层接收经预处理后的224×224×1灰度图像(单通道),相较于RGB三通道图像,可减少模型参数规模与计算量,同时避免颜色信息对病变特征提取的干扰(眼底病变主要通过结构特征判断,而非颜色差异)。

3.2 骨干特征提取层

采用预训练的ResNet50作为骨干网络,该网络包含1个卷积层、4个残差块组(Conv2_x至Conv5_x)及1个平均池化层,总计49个卷积层与1个全连接层。选择预训练模型的优势在于:利用ImageNet数据集(120万张图像)学到的通用特征(如边缘、纹理)作为初始参数,减少针对小数据集的训练成本,同时提升特征提取能力。

针对眼底图像特点,对ResNet50进行以下调整:

  1. 输入通道适配:原始ResNet50输入为三通道图像,将第一层卷积核(7×7,步长2)的输入通道数由3改为1,输出通道数保持64不变,确保与输入灰度图像匹配;
  2. 参数微调策略:采用“冻结-解冻”两阶段训练法。第一阶段冻结Conv2_x至Conv4_x的参数(仅训练Conv5_x与分类头),避免预训练通用特征被破坏;第二阶段解冻所有层,以较小学习率(初始学习率的1/10)微调全部参数,使模型适配眼底图像特征。

3.3 特征融合层

骨干网络输出的特征图尺寸为7×7×2048,为提升特征表达的鲁棒性,设计以下特征融合模块:

  1. 自适应全局平均池化(GAP):将7×7×2048的特征图转换为1×1×2048的向量,避免传统全连接层参数过多导致的过拟合,同时保留全局特征信息;
  2. Dropout层:添加 dropout 率为0.5的 dropout 层,在训练过程中随机丢弃50%的神经元输出,抑制模型过拟合;
  3. 批归一化(BN)层:对池化后的特征向量进行批归一化处理,加速模型收敛,稳定训练过程中的梯度分布。

3.4 分类输出层

分类层采用两层全连接(FC)结构:

  1. 第一层FC:输入维度2048,输出维度512,激活函数采用ReLU(Rectified Linear Unit),公式为ReLU(x)=max(0,x)ReLU(x) = max(0, x)ReLU(x)=max(0,x),解决梯度消失问题;
  2. 第二层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=ix)=j=14ezjezi
    其中,ziz_izi为第二层FC的第i个输出值,P(y=i∣x)P(y=i|x)P(y=ix)为输入图像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=1Nj=14yijlog(Pij)
    其中,N为批样本数量,yijy_{ij}yij为第i个样本的真实标签(one-hot编码),PijP_{ij}Pij为模型预测的第i个样本属于第j类的概率。

4.2 评估指标

为全面评估模型性能,采用以下5个指标:

  1. 准确率(Accuracy, Acc):正确分类的样本数占总样本数的比例,反映模型整体分类能力;
  2. 精确率(Precision, P):某类被预测为正的样本中,实际为正的比例,公式为P=TPTP+FPP = \frac{TP}{TP+FP}P=TP+FPTP
  3. 召回率(Recall, R):某类实际为正的样本中,被正确预测为正的比例,公式为R=TPTP+FNR = \frac{TP}{TP+FN}R=TP+FNTP
  4. F1分数(F1-Score):精确率与召回率的调和平均,平衡二者关系,公式为F1=2×P×RP+RF1 = 2\times\frac{P\times R}{P+R}F1=2×P+RP×R
  5. AUC值:ROC曲线下面积,反映模型区分正负样本的能力,AUC越接近1,模型性能越好。

其中,TP(真阳性)为实际正类被预测为正类的样本数,FP(假阳性)为实际负类被预测为正类的样本数,FN(假阴性)为实际正类被预测为负类的样本数。

4.3 实验结果

4.3.1 模型整体性能

本文改进ResNet50模型在测试集上的整体性能指标如表3所示,训练过程中训练集与验证集的损失曲线、准确率曲线可通过实验可视化工具生成。

表3 改进ResNet50模型测试集整体性能

准确率(%)精确率均值(%)召回率均值(%)F1分数均值(%)AUC值
92.392.192.092.00.97

由表3可知,模型整体准确率达92.3%,F1分数均值0.92,AUC值0.97,表明模型具有较强的多类眼底病害分类能力。训练过程中,模型在15个epoch后趋于收敛,验证集准确率稳定在91%-92%之间,无明显过拟合现象,说明数据增强与dropout层的优化效果显著。

4.3.2 各类别性能分析

模型对4类样本的详细分类性能如表4所示,混淆矩阵可通过混淆矩阵热力图工具生成。

表4 改进ResNet50模型各类别性能指标(%)

类别准确率精确率召回率F1分数
正常93.894.293.293.7
白内障90.889.791.690.6
糖尿病视网膜病变93.593.193.993.5
青光眼91.291.490.190.7

由表4可知:

  • 正常样本与糖尿病视网膜病变样本的检测性能最优(F1分数均>93%),原因在于正常样本特征清晰、无干扰,糖尿病视网膜病变的微动脉瘤、出血等特征具有明显的视觉辨识度,模型易提取;
  • 白内障与青光眼样本的F1分数相对较低(约90.7%),分析混淆矩阵发现,部分早期白内障样本因混浊程度轻,易与正常样本混淆(误判率3.2%);青光眼样本的杯盘比特征受拍摄角度影响,部分样本易与视神经炎(未包含在数据集中)特征混淆,导致召回率偏低。
4.3.3 对比实验

为验证改进ResNet50模型的优越性,选择AlexNet、VGG16、原始ResNet50作为对比模型,在相同数据集与实验环境下进行测试,结果如表5所示。

表5 不同模型性能对比(%)

模型准确率精确率均值召回率均值F1分数均值AUC值
AlexNet78.577.978.178.00.85
VGG1686.285.886.085.90.91
原始ResNet5089.789.389.589.40.94
改进ResNet5092.392.192.092.00.97

由表5可知:

  • 改进ResNet50模型在各项指标上均优于对比模型,准确率较原始ResNet50提升2.6%,较VGG16提升6.1%,较AlexNet提升13.8%;
  • 深层网络(ResNet50、VGG16)整体性能优于浅层网络(AlexNet),证明深层网络的特征提取能力更强;
  • 改进ResNet50的优势在于:预训练参数微调使模型更快适配眼底数据,自适应池化与dropout层减少了过拟合,分类头优化提升了特征到类别的映射能力。

5 讨论

5.1 模型优势

  1. 数据预处理有效性:高斯滤波与中值滤波结合有效去除了眼底图像噪声,数据增强(旋转、裁剪等)使训练样本量扩充3倍,显著提升了模型泛化能力,对比实验显示,无数据增强时模型准确率下降4.8%;
  2. 模型结构优化合理:基于ResNet50的预训练与微调策略平衡了通用特征与任务特异性特征,自适应池化与dropout层解决了传统全连接层的过拟合问题,分类头的两层FC结构增强了特征融合能力;
  3. 多类检测性能均衡:模型对4类样本的F1分数差异小于3%,无明显分类偏向性,适用于临床多类眼底病害同步筛查。

5.2 局限性

  1. 数据集局限性:数据集样本均为单一设备拍摄,分辨率固定,缺乏不同品牌眼底相机、不同分辨率的图像,模型在真实临床场景中的适应性需进一步验证;
  2. 病变阶段覆盖不足:数据集中以中晚期病变样本为主,早期轻微病变(如早期糖尿病视网膜病变Ⅰ期)样本较少,导致此类样本的召回率仅为87.3%,低于整体水平;
  3. 模型可解释性差:CNN的“黑箱”特性导致模型无法明确指出病变区域位置,医师难以判断模型分类依据,限制了临床信任度。

5.3 改进方向

  1. 扩充数据集:收集多设备、多分辨率的眼底图像,增加早期病变样本,引入联邦学习技术,在保护数据隐私的前提下扩充训练数据;
  2. 融合注意力机制:在ResNet50的残差块中添加通道注意力与空间注意力模块,使模型聚焦于病变区域(如微动脉瘤、视神经乳头),提升早期病变检测能力;
  3. 增强模型可解释性:结合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架构,提升模型对早期微小病变的特征提取能力;三是开发“模型检测+热力图可视化+医师复核”的临床辅助诊断系统,在基层医疗机构进行试点应用,推动眼底病害筛查的自动化与普及化。

http://www.xdnf.cn/news/1421533.html

相关文章:

  • MYSQL速通(4/5)
  • KL Loss
  • Python OpenCV图像处理与深度学习:Python OpenCV图像滤波入门
  • [系统架构设计师]论文(二十三)
  • 基于SpringBoot+MYSQL开发的师生成果管理系统
  • 美术馆预约小程序|基于微信小程序的美术馆预约平台设计与实现(源码+数据库+文档)
  • zotero.sqlite已损坏
  • 第9篇:监控与运维 - 集成Actuator健康检查
  • 『C++成长记』vector模拟实现
  • 车载总线架构 --- 车载LIN总线传输层概述
  • 百胜软件获邀出席第七届中国智慧零售大会,智能中台助力品牌零售数智变革
  • C++ 虚继承:破解菱形继承的“双亲困境”
  • 【macOS】垃圾箱中文件无法清理的--特殊方法
  • Linux | 走进网络世界:MAC、IP 与通信的那些事
  • PyTorch 实战(3)—— PyTorch vs. TensorFlow:深度学习框架的王者之争
  • mysql中如何解析某个字段是否是中文
  • 攻防演练笔记
  • Frida Hook API 转换/显示堆栈
  • 【数学建模学习笔记】缺失值处理
  • 数学分析原理答案——第七章 习题13
  • 文件夹上传 (UploadFolder)
  • crypto-babyrsa(2025YC行业赛)
  • 【系统架构师设计(8)】需求分析之 SysML系统建模语言:从软件工程到系统工程的跨越
  • 【机器学习学习笔记】numpy基础2
  • 基于 HTML、CSS 和 JavaScript 的智能图像边缘检测系统
  • ESB 走向黄昏,为什么未来属于 iPaaS?
  • 【第十一章】Python 队列全方位解析:从基础到实战
  • 计算机网络技术(四)完结
  • 9月1日
  • 8Lane V-by-One HS LVDS FMC Card