一、DRAC2022介绍
糖尿病视网膜病变是导致失明的主要原因之一,影响约 78% 的人,糖尿病病史为 15 年或更长时间。DR 经常导致脉管系统结构的逐渐变化并导致异常。DR 是通过目视检查视网膜眼底图像是否存在视网膜病变来诊断的,例如微动脉瘤 (MA)、视网膜内微血管异常 (IRMA)、非灌注区和新生血管。这些病变的检测对于 DR 的诊断至关重要。 已经有一些工作使用眼底图像进行 DR 诊断 。随着越来越受欢迎,OCT 血管造影 (OCTA) 能够在微血管水平上非常详细地显示视网膜和脉络膜血管系统 。特别地,扫描源 (SS)-OCTA 还允许对脉络膜脉管系统进行单独评估。已经有一些工作使用 SS-OCTA 对糖尿病视网膜病变的定性特征进行分级。此外,超宽光学相干断层扫描血管造影成像 (UW-OCTA) 模式显示典型 OCTA 未捕获的视网膜周边病理负担较高。一些作品已经在 DR 分析中使用了 UW-OCTA 。传统的DR分级诊断主要依靠眼底照相和FFA,尤其是PDR,严重危害视力健康。FA主要用于检测有无新生血管。眼底摄影很难发现早期或小的新生血管病变。FA 是一种侵入性眼底成像,不能用于过敏、怀孕或肝肾功能不佳的患者。超宽OCTA可以无创检测DR新生血管的变化,是帮助眼科医生诊断PDR的重要成像方式。但是,目前还没有能够使用 UW-OCTA 进行自动 DR 分析的作品。在DR分析过程中,首先需要对UW-OCTA的图像质量进行评估,选择成像质量较好的图像。然后进行DR分析,例如病变分割和PDR检测。因此,构建灵活、鲁棒的模型以实现图像质量自动评估、病灶分割和 PDR 检测至关重要。为了促进机器学习和深度学习算法在UW-OCTA图像自动图像质量评估、病灶分割和PDR检测中的应用,促进相应技术在DR临床诊断中的应用,提供了一个标准化的超宽(扫描源)光学相干断层扫描血管造影(UW-OCTA)数据集,用于测试各种算法的有效性。有了这个数据集,不同的算法可以测试它们的性能并与其他算法进行公平的比较,并促进相应技术在DR临床诊断中的应用,提供标准化的超宽(扫描源)光学相干断层扫描血管造影(UW-OCTA)数据集,用于测试各种算法的有效性。
二、DRAC2022任务
任务1:糖尿病性视网膜病变的分割 。
任务2:图像质量评估。
任务3:糖尿病视网膜病变分级。
三、DRAC2022数据集
使用的仪器是 SS-OCTA 系统(VG200D,SVision Imaging, Ltd.,中国河南省洛阳市),工作波长接近 1050nm,每秒 200,000 次 AScan 的超快扫描速度。
任务1数据——糖尿病视网膜病变的分割 :训练集由109个图像和相应的标签组成。该数据集包含三种不同的糖尿病视网膜病变病变:(1)视网膜内微血管异常、(2)非灌注区、(3)新血管形成。
任务2数据—— 图像质量评估:训练集由665张图像和CSV文件中的相应标签组成。该数据集包含三个不同的图像质量等级:(0)较差质量等级、(1)良好质量等级、(2)优秀质量等级。
任务3数据——糖尿病视网膜病变分级:训练集由611张图像和CSV文件中的相应标签组成。该数据集包含三个不同的糖尿病视网膜病变等级:(0)N正常、(1)NPDR非增殖性糖尿病视网膜病变 、(2)PDR增殖性糖尿病视网膜病变。
四、DRAC2022评价指标
任务 1(分割指标):平均骰子相似系数 (mDSC),平均联合交点 (mIOU),平均精度,平均灵敏度。
任务2和任务3(分类指标):二次加权 Kappa,平均AUC(曲线下面积),平均精度,平均敏感性,平均特异性。
五、技术路线
任务1、糖尿病视网膜病变分割
1.1、视网膜内微血管异常分割任务
1、只有46例数据用于此任务训练。对图像进行缩放固定到512x512大小,图像采用均值为0,方差为1进行归一化,将数据分成训练(41张)和验证集(5张),其中训练集采用数据增强,扩充10倍。
2、搭建VNet2d网络,使用AdamW优化器,学习率是0.001,batchsize是12,epoch是200,损失函数采用二值化dice+交叉熵。
3、训练结果和验证结果
4、验证集分割结果,左图是眼底图像,中间是金标准图像,右图是分割图像
1.2、非灌注区分割任务
1、只有106例数据用于此任务训练。对图像进行缩放固定到512x512大小,图像采用均值为0,方差为1进行归一化,将数据分成训练(96张)和验证集(10张),其中训练集采用数据增强,扩充10倍。
2、搭建VNet2d网络,使用AdamW优化器,学习率是0.001,batchsize是12,epoch是200,损失函数采用二值化dice+交叉熵。
3、训练结果和验证结果
4、验证集部分分割结果,左图是眼底图像,中间是金标准图像,右图是分割图像
1.3、新血管形成分割任务
1、只有33例数据用于此任务训练。对图像进行缩放固定到512x512大小,图像采用均值为0,方差为1进行归一化,将数据分成训练(29张)和验证集(4张),其中训练集采用数据增强,扩充10倍。
2、搭建VNet2d网络,使用AdamW优化器,学习率是0.001,batchsize是12,epoch是200,损失函数采用二值化dice+交叉熵。
3、训练结果和验证结果
4、验证集分割结果,左图是眼底图像,中间是金标准图像,右图是分割图像
任务2、图像质量评估分类
1、一共有665例数据用于此任务训练,其中标签0有50,标签1有97,标签2有518。对图像进行缩放固定到512x512大小,图像采用均值为0,方差为1进行归一化,将数据按照80%和20%比例分成训练集和验证集,其中训练集对标签0进行数据增强10倍,对标签1进行数据增强5倍。
2、搭建ResNet2d网络,使用AdamW优化器,学习率是0.001,batchsize是36,epoch是100,损失函数采用交叉熵。
3、训练结果和验证结果
4、验证集分类结果
三类标签分别ROC曲线及AUC值,平均值AUC为0.954436295341924
三类标签分别PR曲线及AUC值,平均值AUC为0.8249082527282751
混淆矩阵
分类评估指标
precision recall f1-score support
0 1.00 0.87 0.93 15
1 0.71 0.58 0.64 26
2 0.93 0.97 0.95 159
avg / total 0.91 0.92 0.91 200
任务3、糖尿病视网膜病变分级
1、一共有611例数据用于此任务训练,其中标签0有328,标签1有213,标签2有70。对图像进行缩放固定到512x512大小,图像采用均值为0,方差为1进行归一化,将数据按照80%和20%比例分成训练集和验证集,其中训练集对标签2进行数据增强3倍。
2、搭建ResNet2d网络,使用AdamW优化器,学习率是0.001,batchsize是36,epoch是100,损失函数采用交叉熵。
3、训练结果和验证结果
4、验证集分类结果
三类标签分别ROC曲线及AUC值,平均值AUC为0.8415344049023
三类标签分别PR曲线及AUC值,平均值AUC为0.6997135533377
混淆矩阵
分类指标
precision recall f1-score support
0 0.78 0.78 0.78 103
1 0.58 0.52 0.55 73
2 0.56 0.78 0.65 23
avg/total 0.69 0.68 0.68 199
任务1测试数据结果
任务2测试数据结果
任务3测试数据结果
为了方便大家更高效地学习,我将代码进行了整理并更新到github上,点击https://github.com/junqiangchen/PytorchDeepLearing即可访问。由于之前都是使用tensorflow1.14的进行代码实验开发的,为了方便pytorch的朋友们也可以复现实验结果,我将tensorflow版本的代码翻译转换成pytorch版本的。
如果大家觉得这个项目还不错,希望大家给个Star并Fork,可以让更多的人学习。如果有任何问题,随时给我留言我会及时回复的。