CN116071292B - 基于生成对比学习的眼底镜视网膜图像血管识别方法 - Google Patents
基于生成对比学习的眼底镜视网膜图像血管识别方法 Download PDFInfo
- Publication number
- CN116071292B CN116071292B CN202211220289.9A CN202211220289A CN116071292B CN 116071292 B CN116071292 B CN 116071292B CN 202211220289 A CN202211220289 A CN 202211220289A CN 116071292 B CN116071292 B CN 116071292B
- Authority
- CN
- China
- Prior art keywords
- convolution
- module
- result
- encoder
- image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/0002—Inspection of images, e.g. flaw detection
- G06T7/0012—Biomedical image inspection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/77—Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
- G06V10/774—Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10072—Tomographic images
- G06T2207/10088—Magnetic resonance imaging [MRI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30004—Biomedical image processing
- G06T2207/30041—Eye; Retina; Ophthalmic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30004—Biomedical image processing
- G06T2207/30101—Blood vessel; Artery; Vein; Vascular
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T10/00—Road transport of goods or passengers
- Y02T10/10—Internal combustion engine [ICE] based vehicles
- Y02T10/40—Engine management systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Radiology & Medical Imaging (AREA)
- Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了基于生成对比学习的眼底镜视网膜图像血管识别方法,目的是解决现有技术在没有标注数据时眼底镜视网膜图像识别精度不高的问题。技术方案是:构建由输入预处理模块、编码器、解码器、对比学习模块、生成学习模块、分割预测模块组成的基于生成对比学习的视网膜图像血管智能识别系统,然后采用预训练数据集对识别系统进行训练并利用尽可能少的标注数据集进行精调优化,最后采用精调后的识别系统对眼底镜视网膜图像进行识别,得到血管识别结果。本发明通过结合生成学习与对比学习,能够在不依赖标注数据的情况下对识别系统进行预训练并精调预训练后的识别系统,使得对用户输入的图像的识别精度超过人类专家识别精度。
Description
技术领域
本发明涉及计算机视觉和医学图像处理领域,尤其涉及一种基于无标注数据的自监督学习对眼底镜图像中的血管进行识别的方法。
背景技术
人工智能是利用数字计算机或者数字计算机控制的传感器感知环境、获取知识并使用知识计算最佳结果的理论、方法、技术及应用系统。以神经网络模型为代表的人工智能算法在计算机视觉等领域取得了巨大的成功,识别准确性大幅提升。与此同时,云计算、大数据等技术在提升计算机运算速度,降低计算成本的同时,也为人工智能技术的发展提供了丰富的数据资源和算力支持,协助训练出更加智能化的算法模型应用于多个实际场景。
医学图像处理领域是人工智能技术的重要应用场景。随着医学成像技术的不断进步,近几十年中X光、超声、计算机断层扫描(CT),核磁共振(MRI)、眼底镜图像等医学成像技术发展突飞猛进,各模态的医学影像数据量也呈现指数式增加。但与此同时,医学影像的判读仍主要由医学影像专家及临床医生负责,日益增长的多维图像数据给医生阅片工作带来极大的挑战和压力,现有的医生规模远不能满足国内医院的临床需求,导致临床诊疗流程中存在信息负载高、医生重复性劳动强度大、基层医院诊疗错误易发等问题。例如临床诊断中同样专业水平的医生对眼底镜视网膜图像中的血管标注结果的精度均值仅为0.7881。面对以上挑战,基于人工智能技术的医学图像处理方法显示出巨大潜力,如结节良恶性分类、器官肿瘤分割、病变区域检测等任务中已经出现较为成熟的应用。该方法是利用人工智能技术的速度、精度、可重复性等优势,预先对医学图像进行处理,使其中的临床感兴趣结果区域和轮廓更加突出,从而辅助医生进行临床诊疗并大幅减轻医生负担,有效提高诊疗效率,减少低级错误,降低医生工作量和压力,将其所释放的精力和时间处理更紧急的事件、诊治更多的病患、与病患做更专注的交流,与其他专家开展对疑难杂症的多学科科会诊(Multi-Disciplinary Treatment,MDT)。因此,基于人工智能技术的医学图像处理方法在临床诊断中所占比重逐年增大,利用人工智能技术赋能,也能够提高医疗资源的使用效率,快速缓解当下医疗资源不足与不均现象。
视网膜血管是指示眼睛健康的重要生物标志物,诸如血管分支长度、分支角度、血管直径等各种结构信息均可从视网膜血管中导出,这些结构信息可用于诊断糖尿病视网膜病变(Diabetic Retinopathy,DR)和青光眼等疾病,具有较强的临床意义。
目前,绝大多数基于人工智能技术的眼底镜视网膜血管分割方法仍严重依赖有监督学习方法才能达到比较好的预测效果。这些有监督学习方法需要专业的医生预先对眼底镜图像中的血管进行逐像素的标记,勾勒血管的轮廓,得到标注数据集。而后模型的训练过程需要这些标注数据集作为特征提取和重建的直接监督信号,帮助模型收敛与提升性能。然而,收集整理并标注大规模医学图像数据集需要耗费大量的人力和物力,且需要具备专业医学背景的人士。此外,这些有标注数据帮助模型收敛与提升性能的同时,也限制了其泛化能力。例如,当将基于有监督学习的方法训练得到的模型从有标注的源域数据集迁移至无标注的目标域数据集时,性能通常损失严重。这是由于现有方法在进行跨域迁移学习时存在鲁棒性与适应性等局限,且来自各个领域数据集之间的特征分布差距通常较大,导致跨域迁移学习受阻、应用受限。
因此,为了减少对标注数据的依赖,同时提高眼底镜视网膜血管分割方法的泛化性能,近年来有一些基于无标注数据的研究应用于医学图像处理,其中最具代表性的是自监督学习方法(self-supervised learning)。自监督学习方法是区别于无监督学习(unsupervised learning)和有监督学习(supervised learning)的另一种机制。自监督学习是指从大规模未标记数据中抽取图像等数据特征对神经网络进行训练的学习方法,它被视为人工智能的一种“理想状态”,它的智能性体现在如何“人工”去设计这个自监督的机制,使得模型能够直接从无标注数据中自行学习到输入特征,而无需使用任何人工注释的标注,并且该特征可以被转移到多个不同的计算机视觉任务中,继续进行更多数据分析任务。自监督学习大致可以分为以下两类。
(1)基于生成学习的方法
生成学习又名为代理任务学习,其核心思想是设计代理任务来生成输入和输出特征对,在对输入进行数据预处理后利用自动编码器模型重新构建输入的数据分布,最终构建计算像素空间中的重建损失来实现数据特征的自监督学习。例如,将原输入图像类比拼图块,通过数据增强打乱顺序后再重建恢复,以此学习每块区域的位置信息以及整体特征。或者将原输入图像通过数据增强转换为灰度图像后再重建恢复为彩色图像,以此学习原图中的颜色特征。Model Genesis(见文献“Zhou Z,Sodha V,Pang J,et al.Models Genesis[J].Medical Image Analysis医学图像分析,2021,67(4):101840.”,Zhou Z,Sodha V等人的论文:元模型)将非线性变换、向内/向外侵蚀、区域随机化等代理任务整合进一个自监督学习框架用于对编码器-解码器进行预训练,编码器-解码器经过该方法进行初始化并进行少样本有监督精调后,能在眼底镜视网膜图像血管分割任务中取得0.7922的dice精度。
(2)基于对比学习的方法
对比学习,顾名思义是通过对比的方式学习不同物体间的相似性关联。其核心思想是首先通过计算样本之间的特征相似性构建正、负特征对,将相似的样本视为正对,否则为负对。然后拉近正对样本的表征,同时拉远负对样本的特征,以此实现相似的样本在特征空间中相邻而不相似的样本彼此远离,从而构建一个高质量的特征空间。该方法在无需任何标记数据集的前提下,能够为后续的任务奠定良好的优化基础,具备较好的训练起点,继续进行更多图像处理任务。典型的对比学习框架例如SimCLR(见文献“Chen T,KornblithS,Norouzi M,et al.A simple framework for contrastive learning of visualrepresentations[C]//International conference on machine learning国际机器学习会议.2020:1597-1607.”,Chen T,Kornblith S等人的论文:一种简单的用于视觉表征的对比学习框架)和MoCo(见文献“He K,Fan H,Wu Y,et al.Momentum contrast forunsupervised visual representation learning[C]//IEEE/CVF conference oncomputer vision and pattern recognition国际计算机视觉和模式识别会议.2020:9729-9738.”,He K,Fan H等人的论文:基于动量对比的无监督视觉表征学习)均采用了上述思想,但在正、负对的定义和生成上有所不同,SimCLR采用较大的批尺寸(batchsize)来确保负对样本数据的多样性,而MoCo将负样本作为字典存储在动量队列中,从而减轻了对大批尺寸的要求。编码器经过SimCLR、MoCo方法进行初始化并进行少样本有监督精调后,分别能在眼底镜视网膜图像血管分割任务中取得0.7900、0.7898的Dice精度。
得益于大数据的快速发展,医院的数据库中存储了海量涵盖各种疾病的医学图像数据和电子病历,这些数据因为缺少精细标注所以基本没有人利用,但基于自监督学习的医学图像处理方法则能挖掘这些无标注数据的内在特征,从而减少基于有监督学习的预训练方法对大量有标注数据的依赖性。但与此同时,基于自监督学习的医学图像处理方法仍面临如下困境:
(1)将基于对比学习的方法应用于编码器模型初始化时,在分类任务中识别精度较高,能够达到与基于ImageNet的大规模自然图像数据集预训练相当的性能;但将其应用于编码器-解码器模型初始化时,在分割任务中训练过程收敛速度较慢,这是因为该方法无法优化解码器,导致解码器往往随机优化,因而存在编码器和解码器之间的语义不连贯性,阻碍了模型收敛。
(2)将基于生成学习的方法应用于编码器和解码器模型初始化时,在分割任务中的收敛速度较快,但识别精度有待提高;将其应用于编码器模型初始化时,在分类任务中较快,但识别精度同样不高。这是因为该方法虽然能同时初始化编码器和解码器,使得模型训练起点较好,优化速度较快,但是编码器模型构建的特征空间质量不高,因而识别精度不佳。
综上所述,无论是基于对比学习的方法或基于生成学习的方法都无法单独解决现有眼底镜视网膜图像血管识别中存在的收敛速度较慢或识别精度不高问题。目前,还没有公开的技术方案涉及将对比学习和生成学习的方法相结合来识别眼底镜视网膜图像血管。
发明内容
本发明要解决的技术问题在于针对现有技术在没有标注数据时眼底镜视网膜图像识别精度不高的问题,提供一种基于生成对比学习的眼底镜视网膜图像血管识别方法。本发明基于现有的深度学习模型框架,利用自监督学习的思想,将生成学习与对比学习相结合,提出一种基于生成对比学习的眼底镜视网膜图像血管识别方法,实现直接从数据中自行学习到输入图像特征,无需使用任何人工标注,利用尽可能少的标注数据集进行精调,提高血管识别的精度。
为解决上述技术问题,本发明的技术方案是:构建基于生成对比学习的视网膜图像血管智能识别系统,该系统由输入预处理模块、编码器、解码器、对比学习模块、生成学习模块、分割预测模块构成。然后准备训练视网膜图像血管智能识别系统所需的数据集,将完整数据集作为预训练数据集,并将预训练数据集按照2:1:1的比例划分为精调训练集、精调验证集和精调测试集。然后采用预训练数据集对血管识别系统进行训练,得到预训练后的基于生成对比学习的视网膜图像血管智能识别系统。对预训练后的基于生成对比学习的视网膜图像血管智能识别系统进行精调优化,得到精调后的基于生成对比学习的视网膜图像血管智能识别系统。最后采用精调后的基于生成对比学习的视网膜图像血管智能识别系统对眼底镜视网膜图像进行识别,得到血管识别结果。
本发明通过结合生成学习与对比学习,能够在不依赖标注数据的情况下对血管识别系统进行预训练,而后利用尽可能少的标注数据精调预训练后的基于生成对比学习的视网膜图像血管智能识别系统,使得采用精调后的基于生成对比学习的视网膜图像血管智能识别系统对用户输入的图像的识别精度超过人类专家识别精度。
本发明包括以下步骤:
第一步,构建基于深度学习的视网膜图像血管智能识别系统。基于深度学习的视网膜图像血管智能识别系统由眼底镜视网膜图像数据集、输入预处理模块、编码器、解码器、对比学习模块、生成学习模块、分割预测模块构成,各模块均由多层卷积神经网络CNN(Convolutional Neural Network)在深度学习框架PyTorch(要求1.10版本及以上)中实现。
输入预处理模块与眼底镜视网膜图像数据库、编码器、对比学习模块相连,从眼底镜视网膜图像数据库读取眼底镜视网膜图像,对眼底镜视网膜图像进行图像随机裁剪、遮盖、变色等增强,然后进行随机掩膜重建和非线性变换,得到预处理后的眼底镜视网膜图像;同时输入预处理模块确定正、负样本对关系,将预处理后的眼底镜视网膜图像发送给编码器,将正、负样本对关系发送给编码器。
编码器与输入预处理模块、解码器、对比学习模块相连,编码器从输入预处理模块接收预处理后的眼底镜视网膜图像,对预处理后的眼底镜视网膜图像进行下采样(downsampling),从预处理后的眼底镜视网膜图像中提取高维的语义特征。编码器由5个串联的卷积模块组成,其中编码器第一卷积模块由多个卷积层、归一化层、激活函数层、下采样层组成,编码器第二至第五卷积模块由4个卷积层、4个归一化层、1个激活函数层组成。编码器第一卷积模块中的卷积层的卷积核大小是7×7,步长是2,填充大小是3;下采样层的核大小是3,步长是2,填充大小是1。编码器第二至第五卷积模块中的卷积层由两种卷积核组成,第一种是大小是3×3,步长是1,填充大小是1的卷积核;第二种是大小是1×1,步长是1,无填充的卷积核。编码器五个卷积模块中的激活函数层均采用ReLU函数(蒋昂波,王维维.ReLU激活函数优化研究[J].传感器与微系统,2018,37(02):50-52.)进行非线性激活。编码器将提取的预处理后的图像高维语义特征发送给解码器。此外,根据输入预处理模块中确定的正负样本对关系,构建高维的正、负特征对,将高维的正、负特征对发送给对比学习模块。
对比学习模块与输入预处理模块、编码器相连,从输入预处理模块接收正、负样本对关系,从编码器接收高维的正、负特征对,根据正、负样本对关系计算正、负特征对的语义嵌入(Semantic embedding),得到正、负样本对应的语义嵌入。对比学习模块由2个全连接层,1个ReLU激活函数层组成,利用InfoNCE(代雨柔,杨庆,张凤荔,周帆.基于自监督学习的社交网络用户轨迹预测模型[J].计算机应用,2021,41(09):2545-2551.)损失函数计算正、负特征对的语义嵌入的差值作为损失值,利用损失值的反向传播优化编码器。
解码器与编码器、生成学习模块、分割预测模块相连,对从编码器接收的高维语义特征进行上采样(up sampling),将高维语义特征还原为低维的结构性特征。解码器由5个串联的卷积模块组成,每个卷积模块由卷积层、归一化层、激活函数层、恒等映射层组成。其中卷积层的卷积核大小是3×3,步长是1,填充大小是1;所有卷积模块中的激活函数层均采用ReLU函数进行非线性激活,第二至第五卷积模块中的恒等映射层级联每个解码器卷积模块的输入和对应上一级编码器卷积模块的结果,即解码器第二卷积模块的恒等映射层级联解码器第二卷积模块的输入和编码器第一卷积模块的结果,以此类推。解码器在预训练阶段将低维的结构性特征发送给生成学习模块,在精调阶段将低维的结构性特征发送给分割预测模块。
生成学习模块与解码器、输入预处理模块相连,从解码器接收低维的结构性特征,对低维的结构性特征进行重建,得到与眼底镜视网膜图像同等分辨率大小的重建后图像;从输入预处理模块接收原始的眼底镜视网膜图像,并利用MSE损失函数(见文献“DavidM.Allen.Mean Square Error of Prediction as a Criterion for SelectingVariables,Technometrics技术计量学,(1971)13:3,469-475.”,David M.Allen的论文:将预测结果的均方误差作为评价指标用于挑选变量)计算重建后图像与原始图像之间的差值作为损失值,利用损失值的反向传播优化编码器和解码器。生成学习模块由2个连续的卷积层、1个上采样层、1个激活函数层组成。其中生成学习模块第一卷积层的卷积核大小是3×3,步长是1,填充大小是1;生成学习模块第二卷积层的卷积核大小是1×1,步长是1,无填充;激活函数层采用Sigmoid函数(刘宪爽,吴华明,肖文波,孙学勇,朱俊.改进的双Sigmoid函数变步长自适应算法及在OCT中的应用[J].电子学报,2019,47(01):234-240.)进行非线性激活。
分割预测模块与解码器相连,由2个卷积层、1个上采样层和1个激活函数层组成。其中分割预测模块第一卷积层的卷积核大小是3×3,步长是1,填充大小是1;分割预测模块第二卷积层的卷积核大小是1×1,步长是1,无填充;激活函数层采用Sigmoid函数进行非线性激活。分割预测模块从解码器接收低维的结构性特征,将低维的结构性特征的维度降低到血管分割的类别个数(是2,类别包括前景与背景);接着通过上采样层和激活函数层,使得分割预测结果中每个像素点的取值范围都在[0,1]内,然后将数值最大的像素点所属类别作为当前像素点的预测类别,得到与眼底镜视网膜图像同等分辨率大小的单通道掩膜图像,作为对眼底镜视网膜图像的逐像素血管识别结果。精调阶段利用二元交叉熵BCE损失函数(见文献“Ruby U,Yendapalli V.Binary cross entropy with deep learningtechnique for Image classification[J].International Journal of AdvancedTrends in Computer Science and Engineering国际计算机科学与工程前沿杂志,2020,9(4).”,Ruby U,Yendapalli V等人的论文:深度学习中的二元交叉熵应用于图像分类)计算整体预测结果与实际人工标注结果之间的差值作为损失值,利用损失值的反向传播优化编码器和解码器,并保留在精调验证集中精度最高的系统参数。
第二步,构建用于训练基于深度学习的视网膜图像血管智能识别系统的数据集。方法是:
2.1采用来自国际数字视网膜图像血管提取竞赛(Digital Retinal Images forVessel Extraction Challenge)中提供的开源数据集DRIVE(http://www.isi.uu.nl/ Research/Databases/DRIVE,获取时间:2022年6月1日)作为训练集。DRIVE中所有医学图像均来自荷兰的糖尿病视网膜病变筛查项目,该项目对400名25至90岁的受试者进行糖尿病筛查,使用设定为45°视角的佳能(Canon)的3CCD相机获取受试者的眼底镜视网膜图像,获取得到分辨率为768×584像素的RGB图像,RGB三个通道各占8位共24位大小,其中眼底镜中眼球所属区域的直径约为540像素。DRIVE数据集的标注是由两位经验丰富的眼科医生对每张眼底镜视网膜图像手动逐像素勾勒出血管的轮廓。
2.2从DRIVE数据集中随机选择33张健康人的眼底图,未显示任何糖尿病视网膜病变迹象;再选择7张含有糖尿病视网膜病灶的眼底图像,显示轻度早期糖尿病视网膜病变迹象,例如渗出、出血和色素上皮变化等症状。
2.3对2.2步选择的40张图像进行JPEG压缩,并去识别化,将受试者的隐私等个人信息从图像中剥离,得到40张去识别化的图像,令其为X。
2.4将2.3步得到的40张去识别化的图像X的第一位医生的标注作为标准标注Y(所述标注也是图像),第二位医生的标注作为对照标注Z,将图像X、标准标注Y、对照标注Z的组成三元组<X,Y,Z>,将<X,Y,Z>作为去识别化的数据集;
2.5将去识别化的数据集中的X作为预训练数据集将去识别化的X和Y按照2∶1∶1的比例划分为精调训练集/>精调验证集/>和测试集<XTest,YTest>。/>为X中的一半图像,/>为Y中的一半标注,/>为X中的1/4个图像,为Y中的1/4个标注,XTest为X中的1/4个图像,YTest为Y中的1/4个标注。
第三步,采用对眼底镜视网膜图像血管识别系统的编码器、解码器、对比学习模块、生成学习模块进行预训练,得到编码器、解码器、对比学习模块、生成学习模块中的最佳网络权重参数。方法是:
3.1随机初始化编码器、解码器、对比学习模块、生成学习模块中的权重参数,并令初始学习率learningrate为0.01,批处理尺寸batchsize为32,训练迭代总轮数epoch_max为100,当前训练轮数epoch_cur为1。
3.2预训练眼底镜视网膜图像血管识别系统,方法是采用具有当前权重参数的眼底镜视网膜图像血管识别系统对中的原始眼底镜视网膜图像进行血管图像重建,得到与/>中原始眼底镜视网膜图像同等分辨率大小的重建后图像,对比学习模块和生成学习模块利用损失函数值的反向传播优化编码器和解码器;具体方法如下:
3.2.1输入预处理模块从中读取批处理尺寸(batchsize)大小的图像集合X0,/>其中N=32;采用图像预处理方法对X0进行预处理,得到预处理后的图像集合X1,方法是:
3.2.1.1令变量n=1;
3.2.1.2将xn转化到RGB色彩空间,得到3通道的xn;
3.2.1.3对3通道的xn的尺寸规格化为512×512,得到规格化后的xn;
3.2.1.4将规格化后的xn从向量形式转化为张量(Tensor)形式,得到张量形式的xn,令为将/>放入预处理后的图像集合X1;
3.2.1.5若n<N,令n=n+1,转3.2.1.2;若n=N,得到预处理后的图像集合X1, 转3.2.2;
3.2.2输入预处理模块采用非线性变换方法对X1进行数据增强。使用三次项贝塞尔曲线(Bézier Curves)产生单调且可逆的非线性函数,贝塞尔曲线是根据对一系列的点利用插值方程拟合多项式曲线,其数学表达式如公式(1)所示。
Bézier(P0,P1,P2,P3,t)=P0·(1-t)3+P1·3·(1-t)2·t+P2·3·(1-t)·t2+P3·t3 公式(1)
其中P0是起控制点,P3是止控制点,P0的坐标记为(x0,y0)、P3的坐标为(x3,y3),P1和P2是中间控制点,P1坐标记为(x1,y1)、P2的坐标为(x2,y2),t是介于[0,1]之间的系数。这些非线性函数让输入图像中的每个像素值按照特定的规则变化,整体改变输入图像的风格,同时允许图像在非线性变换后能够被编码器、解码器和生成学习模块恢复原有风格,以此方式帮助编码器和解码器学习到输入图像的风格性语义特征。利用非线性函数对X1进行数据增强的方法是:
3.2.2.1设计Q(1≤Q)组控制点(P0,P1,P2,P3),利用公式(1)对Q组点拟合三次多项式曲线,得到Q组单调且可逆的非线性函数{φ1,φ2,...,φq,...,φQ};
3.2.2.2令变量n=1;
3.2.2.3从{φ1,φ2,...,φq,...,φQ}中随机选择一个非线性函数对预处理后的图像中每个像素值进行非线性变换,得到风格变化后的图像/>将/>放到非线性变换后的图像集X2中。
3.2.2.4若n<N,n=n+1,转3.2.2.3。若n=N,得到风格变化后的图像集X2, 转3.2.3;
3.2.3输入预处理模块采用随机掩膜重建方法对X2再次进行数据增强,先随机生成一组块状区域作为掩膜(mask),该掩膜与X2中的图像具有相同大小的分辨率,然后利用掩膜遮盖X2中的图像,被掩盖的区域作为“黑箱”在训练过程中对编码器、解码器和生成学习模块不可见。编码器和解码器通过恢复被掩盖的区域的结构信息学习到输入图像的结构性语义特征,生成学习模块对解码器还原的低维结构性特征进行重建,得到与原始输入的眼底镜视网膜图像同等分辨率大小的重建后图像,以此方式帮助编码器和解码器学习到输入图像的结构性语义特征。方法是:
3.2.3.1令变量n=1;
3.2.3.2随机生成一个大小为32×32的服从高斯分布的掩膜矩阵Γ;
3.2.3.3设定超参数比例τ%(40≤τ≤60),将Γ中前τ%的数值取1,Γ中其它1-τ%的数值取0,得到一个由{0,1}组成的矩阵Γ′;
3.2.3.4利用最邻近插值方法(高强,高敬阳,赵地.GNNI U-net:基于组归一化与最近邻插值的MRI左心室轮廓精准分割网络[J].计算机科学,2020,47(08):213-220.)将Γ′尺寸扩大为与尺寸同等大小,得到的掩膜矩阵;
3.2.3.5将风格变化增强后的眼底镜视网膜图像与Γ′进行逐像素矩阵乘,得到经过随机块状掩膜遮盖后的图像/>将/>放到经过随机块状掩膜遮盖后图像集合X3中。
3.2.3.6若n<N,令n=n+1,转3.2.3.2;若n=N,得到经过随机块状掩膜遮盖后图像集合X3,转3.2.4;
3.2.4将X1中的第n个样本及X3中的对应样本/>作为正样本对/>将X1中除/>以外的所有其他样本及X3中除/>以外的其它样本作为负样本对 将X1和X3发送给编码器,同时将正、负样本对关系/>发送到编码器和对比学习模块。
3.2.5编码器从输入预处理模块接收X3(输入通道数为3),采用特征提取方法对X3进行特征提取,得到X3的高维的语义特征集合θ3,将θ3发送给解码器。具体方法是:
3.2.5.1初始化n=1;
3.2.5.2编码器第一卷积模块采用卷积方法对执行第一次卷积操作,得到编码器第一卷积模块的结果/>将/>发送给编码器第二卷积模块,方法是:
3.2.5.2.1编码器第一卷积模块的卷积层对进行二维卷积,输入通道是3,得到通道数是64的二维卷积结果,将/>二维卷积结果发送给归一化层;
3.2.5.2.2编码器第一卷积模块的归一化层对二维卷积结果进行归一化操作,得到/>归一化结果,将/>归一化结果发送给激活函数层;
3.2.5.2.3编码器第一卷积模块的激活函数层对归一化结果进行非线性激活,得到/>非线性激活结果,将/>非线性激活结果发送给下采样层;
3.2.5.2.4编码器第一卷积模块的下采样层对非线性激活结果进行最大池化操作,得到通道数是64的编码器第一卷积模块的结果/>将/>发送给编码器第二卷积模块;
3.2.5.3编码器第二卷积模块从编码器第一卷积模块接收将/>发送给解码器第二卷积模块,然后采用第一恒等映射卷积操作方法对/>进行V=3次卷积操作,得到通道数是256的编码器第二卷积模块的结果/>第一恒等映射卷积操作方法具体是:
3.2.5.3.1初始化卷积次数v=1;
3.2.5.3.2编码器第二卷积模块的第一卷积层对进行二维卷积,输入通道是M=64,得到通道数为M=64的第一卷积结果,,将第一卷积结果发送给第一归一化层;
3.2.5.3.3编码器第二卷积模块的第一归一化层对第一卷积结果进行归一化操作,得到第一归一化结果,将第一归一化结果发送给第二卷积层;
3.2.5.3.4编码器第二卷积模块的第二卷积层对第一归一化结果进行卷积核大小为3×3的二维卷积,输入通道是M=64,得到通道数为M=64的第二卷积结果,将第二卷积结果发送给第二归一化层;
3.2.5.3.5编码器第二卷积模块的第二归一化层对第二卷积结果进行归一化操作,输入通道是M=64,得到通道数为M=64的第二归一化结果,将第二归一化结果发送给第三卷积层;
3.2.5.3.6编码器第二卷积模块的第三卷积层对第二归一化结果进行卷积核大小为1×1的二维卷积,输入通道是M=64,得到通道数为W=256的第三卷积结果,将第三卷积结果发送给第三归一化层;
3.2.5.3.7编码器第二卷积模块的第三归一化层对第三卷积结果进行归一化操作,得到第三归一化结果,将第三归一化结果发送给第四卷积层和第一恒等映射层;
3.2.5.3.8编码器第二卷积模块的第四卷积层对第三归一化结果进行卷积核大小为1×1的卷积操作,输入通道是M=64,得到通道数为W=256的第四卷积结果,将第四卷积结果发送给第四归一化层;
3.2.5.3.9编码器第二卷积模块的第四归一化层对第四卷积结果进行归一化操作,得到第四归一化结果,将第四归一化结果发送给恒等映射层;
3.2.5.3.10编码器第二卷积模块的第一恒等映射层对第三归一化结果和3.2.5.3.9的第四归一化结果进行级联操作,得到第一级联结果,通道数是W=256,将第一级联结果发送给第一激活函数层;
3.2.5.3.11编码器第二卷积模块的第一激活函数层对第一级联结果进行非线性激活得到第v次非线性激活结果
3.2.5.3.12若v<V,令v=v+1,将第v-1次非线性激活结果发送给编码器第二卷积模块的第五卷积层和编码器第二卷积模块的第二恒等映射层,转3.2.5.3.13;若v=V,则将/>发送给编码器第三卷积模块,转3.2.5.4;
3.2.5.3.13编码器第二卷积模块的第五卷积层对第v-1次非线性激活结果进行卷积核大小为1×1的二维卷积,输入通道数是256,输出通道数是64,得到第五卷积结果,将第五卷积结果发送给第五归一化层;
3.2.5.3.14编码器第二卷积模块的第五归一化层对第五卷积结果进行归一化操作,得到第五归一化结果,将第五归一化结果发送给第六卷积层;
3.2.5.3.15编码器第二卷积模块的第六卷积层对第五归一化结果进行卷积核大小为1×1的二维卷积,输入通道是M=64,得到通道数为M=64的第五卷积结果,将第六卷积结果发送给第六归一化层;
3.2.5.3.16编码器第二卷积模块的第六归一化层对第六卷积结果进行归一化操作,得到第六归一化结果,将第六归一化结果发送给第七卷积层;
3.2.5.3.17编码器第二卷积模块的第七卷积层对第六归一化结果进行卷积核大小为1×1的二维卷积,输入通道是M=64,得到通道数为W=256的第七卷积结果,将第七卷积结果发送给第二恒等映射层;
3.2.5.3.18编码器第二卷积模块的第二恒等映射层对第v-1次非线性激活结果和第七卷积结果进行级联操作,得到第二级联结果,通道数是W=256,将第二级联结果发送给第二激活函数层;
3.2.5.3.19编码器第二卷积模块的第二激活函数层对第二级联结果进行非线性激活,得到第v次非线性激活结果转3.2.5.3.12;
3.2.5.4编码器第三卷积模块接收编码器第二卷积模块的结果将其发送给解码器第三卷积模块,然后采用3.2.5.3所述的第一恒等映射卷积操作方法,对编码器第二卷积模块的结果/>执行V=4次卷积操作,得到通道数W=512的编码器第三卷积模块的结果/>将/>发送给编码器第四卷积模块;
3.2.5.5编码器第四卷积模块接收编码器第三卷积模块的结果将/>发送给解码器第四卷积模块,采用3.2.5.3所述的第一恒等映射卷积操作方法对编码器第三卷积模块的结果/>执行V=6次卷积操作,得到通道数为W=1024的编码器第四卷积模块的结果/>将/>发送给编码器第五卷积模块;
3.2.5.6编码器第五卷积模块接收编码器第四卷积模块的结果将/>发送给解码器第五卷积模块,采用3.2.5.3所述的第一恒等映射卷积操作方法对/>执行V=3次卷积操作,得到通道数为W=2048高维的语义特征/>将/>放到X3的高维的语义特征集合θ3中;
3.2.5.7若n=N,得到高维的语义特征集合集合θ3,将θ3发送给解码器,转3.2.6;否则n=n+1,转3.2.5.1。
3.2.6编码器从输入预处理模块接收X1(输入通道数为3),采用3.2.5所述的特征提取方法对X1进行特征提取,得到X1的高维语义特征集合θ1,将θ1发送给解码器。
3.2.7编码器从输入预处理模块接收正负样本对关系对θ1和θ3构建对应的高维的正特征对集合 负特征对集合 为第n个高维的正特征对,/>是第n个高维的负特征对集合,n!是不等于n的变量集合,即n!={1,2,…,n-1,n+1…,N},将高维的正、负特征对集合发送给对比学习模块;方法是:
3.2.7.1令变量n=1;
3.2.7.2根据正样本对关系从θ1中挑选/>对应的特征/>从θ3挑选对应的特征/>将/>和/>组合构建成正样本对/>对应的高维的正特征对将/>放入正特征对集合;
3.2.7.3根据负样本对关系从θ1中挑选构建/>对应的特征/>从θ3中挑选构建/>对应的特征/>将/>和/>组合构建成负样本对/>对应的高维的负特征对/>将/>放入负特征对集合;
3.2.7.4若n<N,令n=n+1,转3.2.7.2。若n=N,得到高维的正特征对集合负特征对集合/> 将高维的正、负特征对集合发送给对比学习模块,转3.2.8;
3.2.8对比学习模块从编码器接收高维的正、负特征对集合 采用对比学习方法对高维的正、负特征对集合进行语义嵌入提取。具体方法是:
3.2.8.1令变量n=1;
3.2.8.2对比学习模块的第一全连接层分别对和/>中的高维特征(输入特征通道数为2048)进行隐向量提取,得到特征通道数为2048的隐向量,将隐向量发送给对比学习模块的激活函数层。
3.2.8.3对比学习模块的激活函数层采用激活函数ReLU对隐向量进行非线性激活,得到非线性激活后的隐向量(输入特征通道数为2048),将非线性激活后的隐向量发送给第二全连接层。
3.2.8.3对比学习模块的第二全连接层对非线性激活后的隐向量(输入特征通道数为2048)进行语义嵌入提取,得到正嵌入向量对(特征维度是128)、负嵌入向量对/>(特征维度是128)。/>
3.2.8.4对比学习模块采用间距计算方法衡量正嵌入向量对的间距。使用余弦相似度函数计算正嵌入向量对/>与/>之间的间距/> 其中T是转置,|| ||是模长,/>表示/>的模长,表示/>的模长。
3.2.8.5对比学习模块计算负嵌入向量对中/>与/>之间的间距集合/>方法是:
3.2.8.5.1令n!=1;
3.2.8.5.2若n!=n,则令n!=n!+1,转3.2.8.5.3;若n!≠n,直接转3.2.8.5.3。
3.2.8.5.3对比学习模块采用3.2.8.4所述的间距计算方法衡量负嵌入向量对中/>与/>之间的间距/>
3.2.8.5.4若n!≠N,令n!=n!+1,转3.2.8.5.2;若n!=N,得到负嵌入向量对的间距集合 转3.2.8.6。
3.2.8.6采用InfoNCE函数作为对比学习损失函数数学表达式如公式(2)所示。通过缩小/>将正嵌入向量对的间距缩小、将负嵌入向量对的间距扩大。将计算得到的损失函数值通过反向传播优化编码器。
λ是温度超参数(10≥λ≥0.1),用于调节间距大小。
3.2.9解码器从编码器接收高维语义特征θ3,采用解码器特征还原方法将θ3还原为低维的结构性特征ω,将ω发送给生成学习模块。方法是:
3.2.9.1令n=1;
3.2.9.2解码器第五卷积模块的恒等映射层对(通道数是2048)和编码器第四卷积模块的结果/>进行通道维度的级联操作,得到第五级联后的结果Ω5(通道数是3072),将级联后的结果/>发送给解码器第五卷积模块的卷积层;
3.2.9.3解码器第五卷积模块接收级联后的结果采用第二恒等映射卷积方法将通道数是3072的/>还原为通道数是256的低维结构性特征,方法是:
3.2.9.3.1解码器第五卷积模块的第一卷积层对级联后的结果进行二维卷积,输入特征通道数M=3072,特征通道数W=256,得到解码第一卷积结果发送给第一归一化层;
3.2.9.3.2解码器第五卷积模块的第一归一化层对解码第一卷积结果进行归一化操作,得到解码第一归一化结果/>输入通道数W=256,将解码第一归一化结果/>发送给激活函数层;
3.2.9.3.3解码器第五卷积模块的第一激活函数层采用激活函数对解码第一归一化结果进行非线性激活,得到第一非线性激活后的结果/>将第一非线性激活后的结果发送给第二卷积层。
3.2.9.3.4解码器第五卷积模块的第二卷积层对第一非线性激活后的结果进行二维卷积,输入特征通道数是256,得到通道数是256的解码第二卷积结果/>将/>发送给第二归一化层;
3.2.9.3.5解码器第五卷积模块的第二归一化层对解码第二卷积结果进行归一化操作,得到解码第二归一化结果/>输入通道数是256,将解码第二归一化结果/>发送给第二激活函数层;
3.2.9.3.6解码器第五卷积模块的第二激活函数层采用激活函数对解码第二归一化结果进行非线性激活,得到非线性激活后的低维结构性特征/>(通道数是256),将/>发送给解码器第四卷积模块。
3.2.9.4解码器第四卷积模块的恒等映射层对低维结构性特征(通道数是256)和通道数是512的编码器第三卷积模块的结果/>进行通道维度的级联操作,得到第四级联后的结果/>(通道数是768),将级联后的结果Ω4发送给解码器第四卷积模块的卷积层;
3.2.9.5解码器第四卷积模块采用3.2.9.3步所述的第二恒等映射卷积方法将输入通道数是M=768的还原为通道数是W=128的低维结构性特征,将通道数是W=128的低维结构性特征发送给解码器第三卷积模块。
3.2.9.6解码器第三卷积模块的恒等映射层对通道数是W=128的低维结构性特征和通道数是256的编码器第二卷积模块的结果进行通道维度的级联操作,得到第三级联后的结果/>(通道数是384),将第三级联后的结果/>发送给解码器第三卷积模块的卷积层;
3.2.9.7解码器第三卷积模块采用3.2.9.3所述的第二恒等映射卷积方法将将输入通道数是M=384的Ω3还原为通道数是W=64的低维结构性特征,将通道数是W=64的低维结构性特征发送给解码器第二卷积模块。
3.2.9.8解码器第二卷积模块的恒等映射层对通道数是W=64的低维结构性特征和通道数是64的编码器第一卷积模块的结果进行通道维度的级联操作,得到第二级联后的结果/>(通道数是128),将第二级联后的结果Ω2发送给解码器第二卷积模块;
3.2.9.9解码器第二卷积模块采用3.2.9.3所述的第二恒等映射卷积方法将输入通道数是128的级联后的结果还原为通道数是32的低维结构性特征/>
3.2.9.10解码器第一卷积模块采用3.2.9.3所述的第二恒等映射卷积方法将3.2.9.9还原的低维结构性特征还原为通道数是16的低维结构性特征ωn,将ωn放到低维结构性特征集合ω中。/>
3.2.9.11若n=N,将低维结构性特征集合ω发送给生成学习模块,ω={ω1,ω2,…,ωn…,ωN},转3.2.10;若n<N,令n=n+1,转3.2.9.2。
3.2.10生成学习模块从解码器接收ω,对ω进行重建,得到与中的原始眼底镜视网膜图像同等分辨率大小的重建后图像/>从输入预处理模块接收X1,利用MSE损失函数计算/>与X1之间的差值,将差值作为损失值通过反向传播更新编码器和解码器的参数。具体方法是:
3.2.10.1令n=1;
3.2.10.2生成学习模块的第一卷积层对输入特征通道是16的低维结构性特征ωn进行卷积操作,得到特征通道是16的第一卷积结果将/>发送给第二卷积层。
3.2.10.3生成学习模块的第二卷积层对输入特征通道是16的第一卷积结果进行卷积操作,得到特征通道数是3的第二卷积结果/>将/>发送到生成学习模块的上采样层。
3.2.10.4生成学习模块的上采样层对进行二维插值操作,将输入的分辨率恢复至与原始输入的眼底镜视网膜图像/>同等分辨率大小(512×512),得到二维插值操作结果将/>发送给激活函数层。
3.2.10.5激活函数层对进行非线性激活,激活函数是Sigmoid,得到重建后的图像/>将/>^放到重建图像集合/>
3.2.10.5若n=N,得到重建图像集合将/>发送给生成学习模块,转3.2.10.6;若n<N,令n=n+1,转3.2.10.2。
3.2.10.6生成学习模块采用MSE函数作为生成学习损失函数 将计算重建图像/>和原始图像X1之间的差值,通过缩小差值得到一个与/>相似的重建图像,通过损失函数值的反向传播优化编码器和解码器。
3.3若当前训练轮数epoch_cur=训练迭代总轮数epoch_max,结束预训练,将编码器和解码器的经预训练得到的权重参数以pth格式保存,转第五步。否则,将学习率learningrate按公式(4)进行余弦衰减,令epoch_cur=epoch_cur+1,转3.2继续训练。
第四步,采用pth格式保存的经预训练得到的权重参数初始化编码器和解码器,得到预训练后的基于深度学习的视网膜图像血管智能识别系统。
第五步,采用对预训练后的基于深度学习的视网膜图像血管智能识别系统进行精调,得到精调后的基于深度学习的视网膜图像血管智能识别系统,方法是:
5.1设置精调网络训练参数,方法是:令初始学习率learning rate为0.001,令批处理尺寸batchsize为32,令训练轮数epoch_cur为1,令训练迭代总轮数epoch_max为100,令初始更新停滞次数patience_cur为0,令更新停滞阈值patience_max为30,令初始最高精度dice_best为0。
5.2精调预训练后的基于深度学习的视网膜图像血管智能识别系统,方法是采用预训练后的基于深度学习的视网膜图像血管智能识别系统对精调数据集中的输入图像进行血管识别,得到输入图像中血管轮廓的二值预测结果,其中0代表背景,1代表血管区域,利用损失函数值的反向传播优化编码器和解码器,得到精调后的基于深度学习的视网膜图像血管智能识别系统。方法是:
5.2.1输入预处理模块从中读取批次大小为batchsize的图像集合/> 其中N=batchsize。采用3.2.1步所述图像预处理方法对XX中的图像进行预处理,得到预处理后的图像集合XX1,/>
5.2.2输入预处理模块从中读取批次大小为batchsize的标注集合/> 其中N=batchsize。采用3.2.1步所述图像预处理方法对YY中的标注进行预处理,得到预处理后的标注集合/>
5.2.3编码器从输入预处理模块接收XX1,采用3.2.5步所述特征提取方法对XX1进行特征提取,得到XX1的高维语义特征集合将θθ1发送给解码器。
5.2.4解码器从编码器接收θθ1,采用3.2.9步所述解码器特征还原方法将θθ1还原为低维的结构性特征集合ωω,ωω={ωω1,ωω2,…,ωωn…,ωωN},将ωω发送给分割预测模块,其中ωωn为第n个结构性特征。
5.2.5分割预测模块从解码器接收ωω,采用分割预测方法将ωω的维度降低到血管分割的类别个数(是2,类别包括前景与背景),接着通过上采样层进行上采样和激活函数层进行激活,得到与眼底镜视网膜图像同等分辨率大小的单通道掩膜图像,得到分割预测结果集合作为对眼底镜视网膜图像的逐像素血管识别结果。方法是:
5.2.5.1令n=1;
5.2.5.2第一卷积层对低维结构性特征ωωn(输入特征通道数是16)进行卷积操作,得到第一卷积结果(特征通道数是16),发送给第二卷积层。
5.2.5.3第二卷积层对第一卷积结果(特征通道数是16)再次进行卷积操作,得到第二卷积结果/>(特征通道数是1),发送给上采样层。
5.2.5.4上采样层对5.2.5.3的第二卷积结果进行二维插值操作,将输入的分辨率恢复至与/>同等分辨率大小(512×512),得到分辨率恢复后的眼底镜视网膜图像In。
5.2.5.5激活函数层对In进行非线性激活,得到单通道掩膜图像作为分割预测结果,将/>放到分割预测结果集合/>中。
5.2.5.6若n<N,令n=n+1,转5.2.5.2;若n=N,得到分割预测结果集合 转5.2.6;/>
5.2.6分割预测模块采用对比损失函数计算/>和人工标注的眼底镜视网膜血管YY1之间的差值,其数学表达式如公式(5)所示。通过缩小差值得到一个与人工标注的血管轮廓相似的预测结果,通过损失函数值的反向传播间接优化编码器和解码器,得到精调后的基于深度学习的视网膜图像血管智能识别系统。
其中代表分割预测结果/>中预测为前景(值为1)的像素点总和。
5.3采用精调验证集验证5.2步精调后的基于深度学习的视网膜图像血管智能识别系统的识别精度。方法是采用精调后的视网膜图像血管智能识别系统对中的图像进行血管识别,得到精调验证集中图像中血管轮廓的二值预测结果,通过计算预测结果与人工标注的血管轮廓之间的差值评价识别精度,并保留在精调验证集中精度最高的系统参数。具体方法如下:
5.3.1输入预处理模块从中读取批次大小为batchsize的图像集合/> 其中N=batchsize。采用3.2.1步所述图像预处理方法对XXX中的图像进行预处理,得到预处理后的图像集合XXX1,/>
5.3.2输入预处理模块从中读取批处理尺寸(batchsize)的图像集合/> 其中N=32。采用3.2.1步所述图像预处理方法对YYY中的标注进行预处理,得到预处理后的标注集合/>
5.3.3编码器从输入预处理模块接收XXX1,采用3.2.5所述的特征提取方法对XXX1进行特征提取,得到XXX1的高维语义特征集合θθθ1,将θθθ1发送给解码器。
5.3.4解码器从编码器接收θθθ1,采用3.2.9步所述的解码器特征还原方法将θθθ1还原为低维的结构性特征集合ωωω,ωωω={ωωω1,ωωω2,…,ωωωn…,ωωωN},将ωωω发送给分割预测模块。
5.3.5分割预测模块从解码器接收ωωω,采用5.2.5所述的分割预测方法将ωωω的维度降低到血管分割的类别个数2,得到XXX的血管分割预测结果
5.3.6计算预测分割结果与人工标注的眼底镜视网膜血管YYY1之间的平均dice值,作为识别精度的评价指标。方法是公式(6):
若dice>最高精度dice_best,将编码器和解码器的权重参数作为最佳权重以pth格式保存,令停滞次数patience_cur=0,转5.3.7;否则令patience_cur=patience_cur+1,转5.3.7。
5.3.7若epoch_cur=epoch_max,或patience_cur=patience_max,精调结束,得到精调后的基于深度学习的视网膜图像血管智能识别系统,转第六步;否则,通过余弦衰减(公式(4))更新学习率,令epoch_cur=epoch_cur+1,转5.2.1继续对血管智能识别系统进行精调。
第六步,采用精调后的基于生成对比学习的视网膜图像血管智能识别系统对用户输入的眼底镜视网膜图像进行血管识别,得到预测的血管分割结果。方法是:
6.1精调后的基于生成对比学习的视网膜图像血管智能识别系统接收用户输入的眼底镜视网膜图像Xuser;
6.2输入预处理模块采用3.2.1步所述图像预处理方法对Xuser进行预处理,得到预处理后的图像
6.3编码器从输入预处理模块接收预处理后的图像采用3.2.5所述的特征提取方法对/>进行特征提取,得到/>的高维语义特征/>
6.4解码器从编码器接收高维语义特征采用3.2.9步所述解码器特征还原方法将/>还原为低维的结构性特征/>将/>发送给分割预测模块。
6.5分割预测模块从解码器接收低维的结构性特征采用5.2.5所述的分割预测方法将/>的维度降低到血管分割的类别个数,接着通过上采样层上采样和激活函数层的激活,得到与眼底镜视网膜图像同等分辨率大小的单通道掩膜图像,得到分割预测结果/>与人工标注图像格式保持一致,是由1和0组成的单通道二维矩阵,其中1代表本血管识别方法判断眼底镜视网膜图像中的血管区域,0代表眼底镜视网膜图像中除血管外的其他背景区域,/>的图像分辨率大小与眼底镜视网膜图像分辨率一致,作为对用户输入的眼底镜视网膜图像的逐像素血管识别结果。
采用本发明可以达到以下技术效果:
1.采用本发明眼底镜视网膜图像血管能够提高眼底镜视网膜图像的血管识别精度,可达到0.8025的dice性能,而第2.4步中DRIVE提供的第二位医生的专业标注结果Z的dice精度仅为0.7881。因此,本发明达到了人类同水平识别精度。当使用同样的编码器和解码器时,使用基于无监督学习预训练方法精调后的模型预测dice精度仅为0.7521,使用自监督学习预训练SimCLR、MoCo方法精调后的模型,分别能取得0.7900、0.7898的dice精度。当使用基于ImageNet自然图像有监督预训练方法精调后的模型预测Dice精度仅为0.7941,使用有标注的眼底镜视网膜图像数据开展有监督训练的模型预测dice精度为0.7857,0.7929。因此本发明相比现有基于无监督学习预训练方法的识别方法和基于ImageNet自然图像有监督预训练方法的识别方法的精度。
2.本发明在无需人工标注的前提下进行预训练达到了与有标注方法同水平识别精度,有效减少了由于人工标注眼底镜视网膜所产生的时间、人力、物力成本。
附图说明
图1是本发明第一步构建的基于深度学习的视网膜图像血管智能识别系统逻辑结构图。
图2是本发明总体流程图。
图3是本发明第3.2步输入预处理模块采用非线性变换方法对X1进行数据增强、随机掩膜重建的图像变化示意图。
图4是本发明第5.2步的分割预测模块进行血管识别时图像变化的示意图。
具体实施方式
下面结合附图和实施例对本发明进行进一步说明。
如图2所示,本发明包括以下步骤:
第一步,构建基于深度学习的视网膜图像血管智能识别系统。如图1所示,基于深度学习的视网膜图像血管智能识别系统由眼底镜视网膜图像数据集、输入预处理模块、编码器、解码器、对比学习模块、生成学习模块、分割预测模块构成,各模块均由多层卷积神经网络CNN在深度学习框架PyTorch(本实施例中采用版本1.10及以上)中实现。
输入预处理模块与眼底镜视网膜图像数据库、编码器、对比学习模块相连,从眼底镜视网膜图像数据库读取眼底镜视网膜图像,对眼底镜视网膜图像进行图像随机裁剪、遮盖、变色等增强,然后进行随机掩膜重建和非线性变换,得到预处理后的眼底镜视网膜图像;同时输入预处理模块确定正、负样本对关系,将预处理后的眼底镜视网膜图像发送给编码器,将正、负样本对关系发送给编码器。
编码器与输入预处理模块、解码器、对比学习模块相连,编码器从输入预处理模块接收预处理后的眼底镜视网膜图像,对预处理后的眼底镜视网膜图像进行下采样,从预处理后的眼底镜视网膜图像中提取高维的语义特征。编码器由5个串联的卷积模块组成,其中编码器第一卷积模块由多个卷积层、归一化层、激活函数层、下采样层组成,编码器第二至第五卷积模块由4个卷积层、4个归一化层、1个激活函数层组成。编码器第一卷积模块中的卷积层的卷积核大小是7×7,步长是2,填充大小是3;下采样层的核大小是3,步长是2,填充大小是1。编码器第二至第五卷积模块中的卷积层由两种卷积核组成,第一种是大小是3×3,步长是1,填充大小是1的卷积核;第二种是大小是1×1,步长是1,无填充的卷积核。编码器五个卷积模块中的激活函数层均采用ReLU函数进行非线性激活。编码器将提取的预处理后的图像高维语义特征发送给解码器。此外,根据输入预处理模块中确定的正负样本对关系,构建高维的正、负特征对,将高维的正、负特征对发送给对比学习模块。
对比学习模块与输入预处理模块、编码器相连,从输入预处理模块接收正、负样本对关系,从编码器接收高维的正、负特征对,根据正、负样本对关系计算正、负特征对的语义嵌入,得到正、负样本对应的语义嵌入。对比学习模块由2个全连接层,1个ReLU激活函数层组成,利用InfoNCE损失函数计算正、负特征对的语义嵌入的差值作为损失值,利用损失值的反向传播优化编码器。
解码器与编码器、生成学习模块、分割预测模块相连,对从编码器接收的高维语义特征进行上采样,将高维语义特征还原为低维的结构性特征。解码器由5个串联的卷积模块组成,每个卷积模块由卷积层、归一化层、激活函数层、恒等映射层组成。其中卷积层的卷积核大小是3×3,步长是1,填充大小是1;所有卷积模块中的激活函数层均采用ReLU函数进行非线性激活,第二至第五卷积模块中的恒等映射层级联每个解码器卷积模块的输入和对应上一级编码器卷积模块的结果,即解码器第二卷积模块的恒等映射层级联解码器第二卷积模块的输入和编码器第一卷积模块的结果,以此类推。解码器在预训练阶段将低维的结构性特征发送给生成学习模块,在精调阶段将低维的结构性特征发送给分割预测模块。
生成学习模块与解码器、输入预处理模块相连,从解码器接收低维的结构性特征,对低维的结构性特征进行重建,得到与眼底镜视网膜图像同等分辨率大小的重建后图像;从输入预处理模块接收原始的眼底镜视网膜图像,并利用MSE损失函数计算重建后图像与原始图像之间的差值作为损失值,利用损失值的反向传播优化编码器和解码器。生成学习模块由2个连续的卷积层、1个上采样层、1个激活函数层组成。其中生成学习模块第一卷积层的卷积核大小是3×3,步长是1,填充大小是1;生成学习模块第二卷积层的卷积核大小是1×1,步长是1,无填充;激活函数层采用Sigmoid函数进行非线性激活。
分割预测模块与解码器相连,由2个卷积层、1个上采样层和1个激活函数层组成。其中分割预测模块第一卷积层的卷积核大小是3×3,步长是1,填充大小是1;分割预测模块第二卷积层的卷积核大小是1×1,步长是1,无填充;激活函数层采用Sigmoid函数进行非线性激活。分割预测模块从解码器接收低维的结构性特征,将低维的结构性特征的维度降低到血管分割的类别个数(是2,类别包括前景与背景);接着通过上采样层和激活函数层,使得分割预测结果中每个像素点的取值范围都在[0,1]内,然后将数值最大的像素点所属类别作为当前像素点的预测类别,得到与眼底镜视网膜图像同等分辨率大小的单通道掩膜图像,作为对眼底镜视网膜图像的逐像素血管识别结果。精调阶段利用二元交叉熵BCE损失函数计算整体预测结果与实际人工标注结果之间的差值作为损失值,利用损失值的反向传播优化编码器和解码器,并保留在精调验证集中精度最高的系统参数。
第二步,构建用于训练基于深度学习的视网膜图像血管智能识别系统的数据集。方法是:
2.1采用来自国际数字视网膜图像血管提取竞赛(Digital Retinal Images forVessel Extraction Challenge)中提供的开源数据集DRIVE(http://www.isi.uu.nl/ Research/Databases/DRIVE,获取时间:2022年6月1日)作为训练集。DRIVE中所有医学图像均来自荷兰的糖尿病视网膜病变筛查项目,该项目对400名25至90岁的受试者进行糖尿病筛查,使用设定为45°视角的佳能(Canon)的3CCD相机获取受试者的眼底镜视网膜图像,获取得到分辨率为768×584像素的RGB图像,RGB三个通道各占8位共24位大小,其中眼底镜中眼球所属区域的直径约为540像素。DRIVE数据集的标注是由两位经验丰富的眼科医生对每张眼底镜视网膜图像手动逐像素勾勒出血管的轮廓。
2.2从DRIVE数据集中随机选择33张健康人的眼底图,未显示任何糖尿病视网膜病变迹象;再选择7张含有糖尿病视网膜病灶的眼底图像,显示轻度早期糖尿病视网膜病变迹象,例如渗出、出血和色素上皮变化等症状。
2.3对2.2步选择的40张图像进行JPEG压缩,并去识别化,将受试者的隐私等个人信息从图像中剥离,得到40张去识别化的图像,令其为X。
2.4将2.3步得到的40张去识别化的图像X的第一位医生的标注作为标准标注Y(所述标注也是图像),第二位医生的标注作为对照标注Z,将图像X、标准标注Y、对照标注Z的组成三元组<X,Y,Z>,将<X,Y,Z>作为去识别化的数据集;
2.5将去识别化的数据集中的X作为预训练数据集将去识别化的X和Y按照2:1:1的比例划分为精调训练集/>精调验证集/>和测试集<XTest,YTest>。/>为X中的一半图像,/>为Y中的一半标注,/>为X中的1/4个图像,为Y中的1/4个标注,XTest为X中的1/4个图像,YTest为Y中的1/4个标注。
第三步,采用对眼底镜视网膜图像血管识别系统的编码器、解码器、对比学习模块、生成学习模块进行预训练,得到编码器、解码器、对比学习模块、生成学习模块中的最佳网络权重参数。方法是:
3.1随机初始化编码器、解码器、对比学习模块、生成学习模块中的权重参数,并令初始学习率learningrate为0.01,批处理尺寸batchsize为32,训练迭代总轮数epoch_max为100,当前训练轮数epoch_cur为1。
3.2预训练眼底镜视网膜图像血管识别系统,方法是采用具有当前权重参数的眼底镜视网膜图像血管识别系统对中的原始眼底镜视网膜图像进行血管图像重建,得到与/>中原始眼底镜视网膜图像同等分辨率大小的重建后图像,对比学习模块和生成学习模块利用损失函数值的反向传播优化编码器和解码器;具体方法如下:
3.2.1输入预处理模块从中读取批处理尺寸(batchsize)大小的图像集合X0,/>其中N=32;采用图像预处理方法对X0进行预处理,得到预处理后的图像集合X1,方法是:
3.2.1.1令变量n=1;
3.2.1.2将xn转化到RGB色彩空间,得到3通道的xn;
3.2.1.3对3通道的xn的尺寸规格化为512×512,得到规格化后的xn;
3.2.1.4将规格化后的xn从向量形式转化为张量(Tensor)形式,得到张量形式的xn,令为将/>放入预处理后的图像集合X1;
3.2.1.5若n<N,令n=n+1,转3.2.1.2;若n=N,得到预处理后的图像集合X1, 转3.2.2;
3.2.2输入预处理模块采用非线性变换方法对X1进行数据增强。使用三次项贝塞尔曲线(Bézier Curves)产生单调且可逆的非线性函数,贝塞尔曲线是根据对一系列的点利用插值方程拟合多项式曲线,其数学表达式如公式(1)所示。
Bézier(P0,P1,P2,P3,t)=P0·(1-t)3+P1·3·(1-t)2·t+P2·3·(1-t)·t2+P3·t3 公式(1)
其中P0是起控制点,P3是止控制点,P0的坐标记为(x0,y0)、P3的坐标为(x3,y3),P1和P2是中间控制点,P1的坐标为(x1,y1)、P2的坐标为(x2,y2),t是介于[0,1]之间的系数。这些非线性函数让输入图像中的每个像素值按照特定的规则变化,整体改变输入图像的风格,同时允许图像在非线性变换后能够被编码器、解码器和生成学习模块恢复原有风格,以此方式帮助编码器和解码器学习到输入图像的风格性语义特征。利用非线性函数对X1进行数据增强的方法是:
3.2.2.1设计Q(1≤Q)组控制点(P0,P1,P2,P3),利用公式(1)对Q组点拟合三次多项式曲线,得到Q组单调且可逆的非线性函数{φ1,φ2,...,φq,...,φQ},如图3第二行所示,从左至右依次展示了Q=6组控制点(P0,P1,P2,P3),以及对应的利用公式(1)生成的Q=6种非线性变换曲线{φ1,φ2,φ3,φ4,φ5,φ6}。图中黑色圆点代表控制点(P0,P1,P2,P3),黑色曲线代表非线性变换曲线;
3.2.2.2令变量n=1;
3.2.2.3从{φ1,φ2,φ3,φ4,φ5,φ6}中随机选择一个非线性函数对预处理后的图像(从如图3第一行所示,从左至右的六幅图像为同一张眼底镜视网膜图像/>)中每个像素值进行非线性变换,得到风格变化后的图像/>(从如图3第三行所示,从左至右的六幅图像依次为使用{φ1,φ2,φ3,φ4,φ5,φ6}对/>进行非线性变换后的图像/>),将/>放到非线性变换后的图像集X2中。
3.2.2.4若n<N,n=n+1,转3.2.2.3。若n=N,得到风格变化后的图像集合X2, 转3.2.3;
3.2.3输入预处理模块采用随机掩膜重建方法对X2再次进行数据增强,先随机生成一组块状区域作为掩膜(mask),该掩膜与X2中的图像具有相同大小的分辨率,然后利用掩膜遮盖X2中的图像,被掩盖的区域作为“黑箱”在训练过程中对编码器、解码器和生成学习模块不可见。编码器和解码器通过恢复被掩盖的区域的结构信息学习到输入图像的结构性语义特征,生成学习模块对解码器还原的低维结构性特征进行重建,得到与原始输入的眼底镜视网膜图像同等分辨率大小的重建后图像,以此方式帮助编码器和解码器学习到输入图像的结构性语义特征。方法是:
3.2.3.1令变量n=1;
3.2.3.2随机生成一个大小为32×32的服从高斯分布的掩膜矩阵Γ;
3.2.3.3设定超参数比例τ%(40≤τ≤60),将Γ中前τ%的数值取1,Γ中其它1-τ%的数值取0,得到一个由{0,1}组成的矩阵Γ′;
3.2.3.4利用最邻近插值方法(高强,高敬阳,赵地.GNNI U-net:基于组归一化与最近邻插值的MRI左心室轮廓精准分割网络[J].计算机科学,2020,47(08):213-220.)将Γ′尺寸扩大为与尺寸同等大小,得到的掩膜矩阵如图3第四行所示,从左至右的六幅图像为同一张掩膜矩阵Γ′,其中黑色区域为掩盖区域,其余白色区域为非掩盖区域;
3.2.3.5将风格变化增强后的眼底镜视网膜图像(从如图3第三行所示,从左至右的六幅图像依次为使用{φ1,φ2,φ3,φ4,φ5,φ6}对/>进行非线性变换后的图像/>)与Γ′进行逐像素矩阵乘,得到经过随机块状掩膜遮盖后的图像/>(从如图3第五行所示,从左至右的六幅图像依次为使用Γ′对经过非线性变换后的/>进行随机块状掩膜遮盖后的图像),将/>放到经过随机块状掩膜遮盖后图像集合X3中。
3.2.3.6若n<N,令n=n+1,转3.2.3.2;若n=N,得到经过随机块状掩膜遮盖后图像集合X3,转3.2.4;
3.2.4将X1中的第n个样本及X3中的对应样本/>作为正样本对/>将X1中除/>以外的所有其他样本及X3中除/>以外的其它样本作为负样本对 将X1和X3发送给编码器,同时将正、负样本对关系/>发送到编码器和对比学习模块。
3.2.5编码器从输入预处理模块接收X3(输入通道数为3),采用特征提取方法对X3进行特征提取,得到X3的高维的语义特征集合θ3,将θ3发送给解码器。具体方法是:
3.2.5.1初始化n=1;
3.2.5.2编码器第一卷积模块采用卷积方法对执行第一次卷积操作,得到编码器第一卷积模块的结果/>将/>发送给编码器第二卷积模块,方法是:
3.2.5.2.1编码器第一卷积模块的卷积层对进行二维卷积,输入通道是3,得到通道数是64的二维卷积结果,将/>二维卷积结果发送给归一化层;
3.2.5.2.2编码器第一卷积模块的归一化层对二维卷积结果进行归一化操作,得到/>归一化结果,将/>归一化结果发送给激活函数层;
3.2.5.2.3编码器第一卷积模块的激活函数层对归一化结果进行非线性激活,得到/>非线性激活结果,将/>非线性激活结果发送给下采样层;
3.2.5.2.4编码器第一卷积模块的下采样层对非线性激活结果进行最大池化操作,得到通道数是64的编码器第一卷积模块的结果/>将/>发送给编码器第二卷积模块;
3.2.5.3编码器第二卷积模块从编码器第一卷积模块接收将/>发送给解码器第二卷积模块,然后采用第一恒等映射卷积操作方法对/>进行V=3次卷积操作,得到通道数是256的编码器第二卷积模块的结果/>第一恒等映射卷积操作方法具体是:
3.2.5.3.1初始化卷积次数v=1;
3.2.5.3.2编码器第二卷积模块的第一卷积层对进行二维卷积,输入通道是M=64,得到通道数为M=64的第一卷积结果,,将第一卷积结果发送给第一归一化层;
3.2.5.3.3编码器第二卷积模块的第一归一化层对第一卷积结果进行归一化操作,得到第一归一化结果,将第一归一化结果发送给第二卷积层;
3.2.5.3.4编码器第二卷积模块的第二卷积层对第一归一化结果进行卷积核大小为3×3的二维卷积,输入通道是M=64,得到通道数为M=64的第二卷积结果,将第二卷积结果发送给第二归一化层;
3.2.5.3.5编码器第二卷积模块的第二归一化层对第二卷积结果进行归一化操作,输入通道是M=64,得到通道数为M=64的第二归一化结果,将第二归一化结果发送给第三卷积层;
3.2.5.3.6编码器第二卷积模块的第三卷积层对第二归一化结果进行卷积核大小为1×1的二维卷积,输入通道是M=64,得到通道数为W=256的第三卷积结果,将第三卷积结果发送给第三归一化层;
3.2.5.3.7编码器第二卷积模块的第三归一化层对第三卷积结果进行归一化操作,得到第三归一化结果,将第三归一化结果发送给第四卷积层和第一恒等映射层;
3.2.5.3.8编码器第二卷积模块的第四卷积层对第三归一化结果进行卷积核大小为1×1的卷积操作,输入通道是M=64,得到通道数为W=256的第四卷积结果,将第四卷积结果发送给第四归一化层;
3.2.5.3.9编码器第二卷积模块的第四归一化层对第四卷积结果进行归一化操作,得到第四归一化结果,将第四归一化结果发送给恒等映射层;
3.2.5.3.10编码器第二卷积模块的第一恒等映射层对第三归一化结果和3.2.5.3.9的第四归一化结果进行级联操作,得到第一级联结果,通道数是W=256,将第一级联结果发送给第一激活函数层;
3.2.5.3.11编码器第二卷积模块的第一激活函数层对第一级联结果进行非线性激活得到第v次非线性激活结果
3.2.5.3.12若v<V,令v=v+1,将第v-1次非线性激活结果发送给编码器第二卷积模块的第五卷积层和编码器第二卷积模块的第二恒等映射层,转3.2.5.3.13;若v=V,则将/>发送给编码器第三卷积模块,转3.2.5.4;
3.2.5.3.13编码器第二卷积模块的第五卷积层对第v-1次非线性激活结果进行卷积核大小为1×1的二维卷积,输入通道数是256,输出通道数是64,得到第五卷积结果,将第五卷积结果发送给第五归一化层;
3.2.5.3.14编码器第二卷积模块的第五归一化层对第五卷积结果进行归一化操作,得到第五归一化结果,将第五归一化结果发送给第六卷积层;
3.2.5.3.15编码器第二卷积模块的第六卷积层对第五归一化结果进行卷积核大小为1×1的二维卷积,输入通道是M=64,得到通道数为M=64的第五卷积结果,将第六卷积结果发送给第六归一化层;
3.2.5.3.16编码器第二卷积模块的第六归一化层对第六卷积结果进行归一化操作,得到第六归一化结果,将第六归一化结果发送给第七卷积层;
3.2.5.3.17编码器第二卷积模块的第七卷积层对第六归一化结果进行卷积核大小为1×1的二维卷积,输入通道是M=64,得到通道数为W=256的第七卷积结果,将第七卷积结果发送给第二恒等映射层;
3.2.5.3.18编码器第二卷积模块的第二恒等映射层对第v-1次非线性激活结果和第七卷积结果进行级联操作,得到第二级联结果,通道数是W=256,将第二级联结果发送给第二激活函数层;
3.2.5.3.19编码器第二卷积模块的第二激活函数层对第二级联结果进行非线性激活,得到第v次非线性激活结果转3.2.5.3.12;
3.2.5.4编码器第三卷积模块接收编码器第二卷积模块的结果将其发送给解码器第三卷积模块,然后采用3.2.5.3所述的第一恒等映射卷积操作方法,对编码器第二卷积模块的结果/>执行V=4次卷积操作,得到通道数W=512的编码器第三卷积模块的结果/>将/>发送给编码器第四卷积模块;
3.2.5.5编码器第四卷积模块接收编码器第三卷积模块的结果将/>发送给解码器第四卷积模块,采用3.2.5.3所述的第一恒等映射卷积操作方法对编码器第三卷积模块的结果/>执行V=6次卷积操作,得到通道数为W=1024的编码器第四卷积模块的结果/>将/>发送给编码器第五卷积模块;
3.2.5.6编码器第五卷积模块接收编码器第四卷积模块的结果将/>发送给解码器第五卷积模块,采用3.2.5.3所述的第一恒等映射卷积操作方法对/>执行V=3次卷积操作,得到通道数为W=2048高维的语义特征/>将/>放到X3的高维的语义特征集合θ3中;
3.2.5.7若n=N,得到高维的语义特征集合集合θ3,将θ3发送给解码器,转3.2.6;否则n=n+1,转3.2.5.1。
3.2.6编码器从输入预处理模块接收X1(输入通道数为3),采用3.2.5所述的特征提取方法对X1进行特征提取,得到X1的高维语义特征集合θ1,将θ1发送给解码器。
3.2.7编码器从输入预处理模块接收正负样本对关系对θ1和θ3构建对应的高维的正特征对集合负特征对集合为第n个高维的正特征对,/>是第n个高维的负特征对集合,n!是不等于n的变量集合,即n!={1,2,…,n-1,n+1…,N},将高维的正、负特征对集合发送给对比学习模块;方法是:
3.2.7.1令变量n=1;
3.2.7.2根据正样本对关系从θ1中挑选/>对应的特征/>从θ3挑选对应的特征/>将/>和/>组合构建成正样本对/>对应的高维的正特征对将/>放入正特征对集合;
3.2.7.3根据负样本对关系从θ1中挑选构建/>对应的特征/>从θ3中挑选构建/>对应的特征/>将/>和/>组合构建成负样本对/>对应的高维的负特征对/>将/>放入负特征对集合;
3.2.7.4若n<N,令n=n+1,转3.2.7.2。若n=N,得到高维的正特征对集合负特征对集合/> 将高维的正、负特征对集合发送给对比学习模块,转3.2.8;
3.2.8对比学习模块从编码器接收高维的正、负特征对集合 采用对比学习方法对高维的正、负特征对集合进行语义嵌入提取。具体方法是:
3.2.8.1令变量n=1;
3.2.8.2对比学习模块的第一全连接层分别对和/>中的高维特征(输入特征通道数为2048)进行隐向量提取,得到特征通道数为2048的隐向量,将隐向量发送给对比学习模块的激活函数层。
3.2.8.3对比学习模块的激活函数层采用激活函数ReLU对隐向量进行非线性激活,得到非线性激活后的隐向量(输入特征通道数为2048),将非线性激活后的隐向量发送给第二全连接层。
3.2.8.3对比学习模块的第二全连接层对非线性激活后的隐向量(输入特征通道数为2048)进行语义嵌入提取,得到正嵌入向量对(特征维度是128)、负嵌入向量对/>(特征维度是128)。
3.2.8.4对比学习模块采用间距计算方法衡量正嵌入向量对的间距。使用余弦相似度函数计算正嵌入向量对/>与/>之间的间距/> 其中T是转置,||||是模长,/>表示/>的模长,表示/>的模长。
3.2.8.5对比学习模块计算负嵌入向量对中/>与/>之间的间距集合/>方法是:
3.2.8.5.1令n!=1;
3.2.8.5.2若n!=n,则令n!=n!+1,转3.2.8.5.3;若n!≠n,直接转3.2.8.5.3。
3.2.8.5.3对比学习模块采用3.2.8.4所述的间距计算方法衡量负嵌入向量对中/>与/>之间的间距/>
3.2.8.5.4若n!≠N,令n!=n!+1,转3.2.8.5.2;若n!=N,得到负嵌入向量对的间距集合 转3.2.8.6。
3.2.8.6采用InfoNCE函数作为对比学习损失函数数学表达式如公式(2)所示。通过缩小/>将正嵌入向量对的间距缩小、将负嵌入向量对的间距扩大。将计算得到的损失函数值通过反向传播优化编码器。
λ是温度超参数(10≥λ≥0.1),用于调节间距大小。
3.2.9解码器从编码器接收高维语义特征θ3,采用解码器特征还原方法将θ3还原为低维的结构性特征ω,将ω发送给生成学习模块。方法是:
3.2.9.1令n=1;
3.2.9.2解码器第五卷积模块的恒等映射层对(通道数是2048)和编码器第四卷积模块的结果/>进行通道维度的级联操作,得到第五级联后的结果Ω5(通道数是3072),将级联后的结果/>发送给解码器第五卷积模块的卷积层;
3.2.9.3解码器第五卷积模块接收级联后的结果采用第二恒等映射卷积方法将通道数是3072的/>还原为通道数是256的低维结构性特征,方法是:
3.2.9.3.1解码器第五卷积模块的第一卷积层对级联后的结果进行二维卷积,输入特征通道数M=3072,特征通道数W=256,得到解码第一卷积结果发送给第一归一化层;
3.2.9.3.2解码器第五卷积模块的第一归一化层对解码第一卷积结果进行归一化操作,得到解码第一归一化结果/>输入通道数W=256,将解码第一归一化结果/>发送给激活函数层;
3.2.9.3.3解码器第五卷积模块的第一激活函数层采用激活函数对解码第一归一化结果进行非线性激活,得到第一非线性激活后的结果/>将第一非线性激活后的结果发送给第二卷积层。
3.2.9.3.4解码器第五卷积模块的第二卷积层对第一非线性激活后的结果进行二维卷积,输入特征通道数是256,得到通道数是256的解码第二卷积结果/>将/>发送给第二归一化层;
3.2.9.3.5解码器第五卷积模块的第二归一化层对解码第二卷积结果进行归一化操作,得到解码第二归一化结果/>输入通道数是256,将解码第二归一化结果/>发送给第二激活函数层;
3.2.9.3.6解码器第五卷积模块的第二激活函数层采用激活函数对解码第二归一化结果进行非线性激活,得到非线性激活后的低维结构性特征/>(通道数是256),将/>发送给解码器第四卷积模块。
3.2.9.4解码器第四卷积模块的恒等映射层对低维结构性特征(通道数是256)和通道数是512的编码器第三卷积模块的结果/>进行通道维度的级联操作,得到第四级联后的结果/>(通道数是768),将级联后的结果Ω4发送给解码器第四卷积模块的卷积层;
3.2.9.5解码器第四卷积模块采用3.2.9.3步所述的第二恒等映射卷积方法将输入通道数是M=768的还原为通道数是W=128的低维结构性特征,将通道数是W=128的低维结构性特征发送给解码器第三卷积模块。
3.2.9.6解码器第三卷积模块的恒等映射层对通道数是W=128的低维结构性特征和通道数是256的编码器第二卷积模块的结果进行通道维度的级联操作,得到第三级联后的结果/>(通道数是384),将第三级联后的结果/>发送给解码器第三卷积模块的卷积层;
3.2.9.7解码器第三卷积模块采用3.2.9.3所述的第二恒等映射卷积方法将将输入通道数是M=384的Ω3还原为通道数是W=64的低维结构性特征,将通道数是W=64的低维结构性特征发送给解码器第二卷积模块。
3.2.9.8解码器第二卷积模块的恒等映射层对通道数是W=64的低维结构性特征和通道数是64的编码器第一卷积模块的结果进行通道维度的级联操作,得到第二级联后的结果/>(通道数是128),将第二级联后的结果Ω2发送给解码器第二卷积模块;
3.2.9.9解码器第二卷积模块采用3.2.9.3所述的第二恒等映射卷积方法将输入通道数是128的级联后的结果还原为通道数是32的低维结构性特征/>/>
3.2.9.10解码器第一卷积模块采用3.2.9.3所述的第二恒等映射卷积方法将3.2.9.9还原的低维结构性特征还原为通道数是16的低维结构性特征ωn,将ωn放到低维结构性特征集合ω中。
3.2.9.11若n=N,将低维结构性特征集合ω发送给生成学习模块,ω={ω1,ω2,…,ωn…,ωN},转3.2.10;若n<N,令n=n+1,转3.2.9.2。
3.2.10生成学习模块从解码器接收ω,对ω进行重建,得到与中的原始眼底镜视网膜图像同等分辨率大小的重建后图像/>从输入预处理模块接收X1,利用MSE损失函数计算/>与X1之间的差值,将差值作为损失值通过反向传播更新编码器和解码器的参数。具体方法是:
3.2.10.1令n=1;
3.2.10.2生成学习模块的第一卷积层对输入特征通道是16的低维结构性特征ωn进行卷积操作,得到特征通道是16的第一卷积结果将/>发送给第二卷积层。
3.2.10.3生成学习模块的第二卷积层对输入特征通道是16的第一卷积结果进行卷积操作,得到特征通道数是3的第二卷积结果/>将/>发送到生成学习模块的上采样层。
3.2.10.4生成学习模块的上采样层对进行二维插值操作,将输入的分辨率恢复至与原始输入的眼底镜视网膜图像/>同等分辨率大小(512×512),得到二维插值操作结果将/>发送给激活函数层。
3.2.10.5激活函数层对进行非线性激活,激活函数是Sigmoid,得到重建后的图像/>(从图3第六行可见,从左至右的六幅图像依次为对经过随机块状掩膜遮盖后的/>进行重建后的图像/>),将/>^放到重建图像集合/>
3.2.10.5若n=N,得到重建图像集合将/>发送给生成学习模块,转3.2.10.6;若n<N,令n=n+1,转3.2.10.2。
3.2.10.6生成学习模块采用MSE函数作为生成学习损失函数 将计算重建图像/>和原始图像X1之间的差值,通过缩小差值得到一个与/>相似的重建图像,通过损失函数值的反向传播优化编码器和解码器。
3.3若当前训练轮数epoch_cur=训练迭代总轮数epoch_max,结束预训练,将编码器和解码器的经预训练得到的权重参数以pth格式保存,转第五步。否则,将学习率learningrate按公式(4)进行余弦衰减,令epoch_cur=epoch_cur+1,转3.2继续训练。
第四步,采用pth格式保存的经预训练得到的权重参数初始化编码器和解码器,得到预训练后的基于深度学习的视网膜图像血管智能识别系统。
第五步,采用对预训练后的基于深度学习的视网膜图像血管智能识别系统进行精调,得到精调后的基于深度学习的视网膜图像血管智能识别系统,方法是:
5.1设置精调网络训练参数,方法是:令初始学习率learning rate为0.001,令批处理尺寸batchsize为32,令训练轮数epoch_cur为1,令训练迭代总轮数epoch_max为100,令初始更新停滞次数patience_cur为0,令更新停滞阈值patience_max为30,令初始最高精度dice_best为0。
5.2精调预训练后的基于深度学习的视网膜图像血管智能识别系统,方法是采用预训练后的基于深度学习的视网膜图像血管智能识别系统对精调数据集中的输入图像进行血管识别,得到输入图像中血管轮廓的二值预测结果,其中0代表背景,1代表血管区域,利用损失函数值的反向传播优化编码器和解码器,得到精调后的基于深度学习的视网膜图像血管智能识别系统。方法是:
5.2.1输入预处理模块从中读取批次大小为batchsize的图像集合/> 其中N=batchsize。采用3.2.1步所述图像预处理方法对XX中的图像进行预处理,得到预处理后的图像集合XX1,/> 如图4第一行所示,从左至右依次展示了2张预处理后的图像
5.2.2输入预处理模块从中读取批次大小为batchsize的标注集合/> 其中N=batchsize。采用3.2.1步所述图像预处理方法对YY中的标注进行预处理,得到预处理后的标注集合/> 如图4第二行所示,从左至右对应展示了第一位人类医师对眼底镜视网膜图像中的标准血管标记/>其中白色区域为血管,黑色区域为背景。此外,图4第三行从左至右同样展示了第二位人类医师对眼底镜视网膜图像中的对照血管标记/>
5.2.3编码器从输入预处理模块接收XX1,采用3.2.5步所述特征提取方法对XX1进行特征提取,得到XX1的高维语义特征集合θθ1,将θθ1发送给解码器。
5.2.4解码器从编码器接收θθ1,采用3.2.9步所述解码器特征还原方法将θθ1还原为低维的结构性特征集合ωω,ωω={ωω1,ωω2,…,ωωn…,ωωN},将ωω发送给分割预测模块,其中ωωn为第n个结构性特征。
5.2.5分割预测模块从解码器接收ωω,采用分割预测方法将ωω的维度降低到血管分割的类别个数(是2,类别包括前景与背景),接着通过上采样层进行上采样和激活函数层进行激活,得到与眼底镜视网膜图像同等分辨率大小的单通道掩膜图像,得到分割预测结果集合 作为对眼底镜视网膜图像的逐像素血管识别结果。方法是:
5.2.5.1令n=1;
5.2.5.2第一卷积层对低维结构性特征ωωn(输入特征通道数是16)进行卷积操作,得到第一卷积结果(特征通道数是16),发送给第二卷积层。/>
5.2.5.3第二卷积层对第一卷积结果(特征通道数是16)再次进行卷积操作,得到第二卷积结果/>(特征通道数是1),发送给上采样层。
5.2.5.4上采样层对5.2.5.3的第二卷积结果进行二维插值操作,将输入的分辨率恢复至与/>同等分辨率大小(512×512),得到分辨率恢复后的眼底镜视网膜图像In。
5.2.5.5激活函数层对In进行非线性激活,得到单通道掩膜图像作为分割预测结果,将/>放到分割预测结果集合/>中。
5.2.5.6若n<N,令n=n+1,转5.2.5.2;若n=N,得到分割预测结果集合 如图4第四行所示,从左至右依次对应对眼底镜视网膜图像的分割结果/>其中白色区域为血管,黑色区域为背景。与图4中第二行和第三行的人类医生标注结果相比,本发明对眼底镜视网膜图像中血管的识别精度达到了人类医生的识别水平。通过图中白色虚线框的放大可知,本发明的血管分割预测结果与第一位医生标注的血管标准结果相比,基本上能分割出血管主要脉落,与第二位医生标注的血管对照结果相比,能更精确的识别出血管的细微脉络。转5.2.6;
5.2.6分割预测模块采用对比损失函数计算/>和人工标注的眼底镜视网膜血管YY1之间的差值,其数学表达式如公式(5)所示。通过缩小差值得到一个与人工标注的血管轮廓相似的预测结果,通过损失函数值的反向传播间接优化编码器和解码器,得到精调后的基于深度学习的视网膜图像血管智能识别系统。
其中代表分割预测结果/>中预测为前景(值为1)的像素点总和。
5.3采用精调验证集验证5.2步精调后的基于深度学习的视网膜图像血管智能识别系统的识别精度。方法是采用精调后的视网膜图像血管智能识别系统对中的图像进行血管识别,得到精调验证集中图像中血管轮廓的二值预测结果,通过计算预测结果与人工标注的血管轮廓之间的差值评价识别精度,并保留在精调验证集中精度最高的系统参数。具体方法如下:
5.3.1输入预处理模块从中读取批次大小为batchsize的图像集合/> 其中N=batchsize。采用3.2.1步所述图像预处理方法对XXX中的图像进行预处理,得到预处理后的图像集合XXX1,/>
5.3.2输入预处理模块从中读取批处理尺寸(batchsize)的图像集合/> 其中N=32。采用3.2.1步所述图像预处理方法对YYY中的标注进行预处理,得到预处理后的标注集合/>
5.3.3编码器从输入预处理模块接收XXX1,采用3.2.5所述的特征提取方法对XXX1进行特征提取,得到XXX1的高维语义特征集合θθθ1, 将θθθ1发送给解码器。
5.3.4解码器从编码器接收θθθ1,采用3.2.9步所述的解码器特征还原方法将θθθ1还原为低维的结构性特征集合ωωω,ωωω={ωωω1,ωωω2,…,ωωωn…,ωωωN},将ωωω发送给分割预测模块。
5.3.5分割预测模块从解码器接收ωωω,采用5.2.5所述的分割预测方法将ωωω的维度降低到血管分割的类别个数2,得到XXX的血管分割预测结果
5.3.6计算预测分割结果与人工标注的眼底镜视网膜血管YYY1之间的平均dice值,作为识别精度的评价指标。方法是公式(6):
若dice>最高精度dice_best,将编码器和解码器的权重参数作为最佳权重以pth格式保存,令停滞次数patience_cur=0,转5.3.7;否则令patience_cur=patience_cur+1,转5.3.7。
5.3.7若epoch_cur=epoch_max,或patience_cur=patience_max,精调结束,得到精调后的基于深度学习的视网膜图像血管智能识别系统,转第六步;否则,通过余弦衰减(公式(4))更新学习率,令epoch_cur=epoch_cur+1,转5.2.1继续对血管智能识别系统进行精调。
第六步,采用精调后的基于生成对比学习的视网膜图像血管智能识别系统对用户输入的眼底镜视网膜图像进行血管识别,得到预测的血管分割结果。方法是:
6.1精调后的基于生成对比学习的视网膜图像血管智能识别系统接收用户输入的眼底镜视网膜图像Xuser;
6.2输入预处理模块采用3.2.1步所述图像预处理方法对Xuser进行预处理,得到预处理后的图像
6.3编码器从输入预处理模块接收预处理后的图像采用3.2.5所述的特征提取方法对/>进行特征提取,得到/>的高维语义特征/>
6.4解码器从编码器接收高维语义特征采用3.2.9步所述解码器特征还原方法将/>还原为低维的结构性特征/>将/>发送给分割预测模块。
6.5分割预测模块从解码器接收低维的结构性特征采用5.2.5所述的分割预测方法将/>的维度降低到血管分割的类别个数,接着通过上采样层上采样和激活函数层的激活,得到与眼底镜视网膜图像同等分辨率大小的单通道掩膜图像,得到分割预测结果/>与人工标注图像格式保持一致,是由1和0组成的单通道二维矩阵,其中1代表本血管识别方法判断眼底镜视网膜图像中的血管区域,0代表眼底镜视网膜图像中除血管外的其他背景区域,/>的图像分辨率大小与眼底镜视网膜图像分辨率一致,作为对用户输入的眼底镜视网膜图像的逐像素血管识别结果。/>
为了检验本发明预训练及精调后的血管识别精度,选取来自国际数字视网膜图像血管提取竞赛中提供的开源数据集DRIVE作为测试数据集,根据第二步中的数据集划分,共得到10张图像和标注作为最终的测试集数据,本发明的血管识别方法对测试集图像进行血管识别,与测试集标注进行对比计算Dice系数作为评价指标,测试环境是Ubuntu20.04,搭载英特尔E5-2678系列的中央处理器,处理频率为2.50GHz,另外配有八块英伟达GTX1080Ti图像处理器,核心频率为1480MHz,显存容量为11GB。实验时,3.1步和5.1步学习率learningrate为0.01,批处理尺寸batchsize为32,训练迭代总轮数epoch_max为100,更新停滞阈值patience_max为30。
在本实验环境下,采用本发明可以达到以下技术效果:
1.采用本发明眼底镜视网膜图像血管能够提高眼底镜视网膜图像的血管识别精度,可达到0.8025的dice性能,而第2.4步中DRIVE提供的第二位医生的专业标注结果Z的dice精度仅为0.7881。因此,本发明达到了人类同水平识别精度。如下表所示,当使用同样的编码器和解码器时,使用基于无监督学习预训练方法精调后的模型预测dice精度仅为0.7521,使用自监督学习预训练SimCLR、MoCo方法精调后的模型,分别能取得0.7900、0.7898的dice精度。当使用基于ImageNet自然图像有监督预训练方法精调后的模型预测Dice精度仅为0.7941,使用有标注的眼底镜视网膜图像数据开展有监督训练的模型预测dice精度为0.7857,0.7929。
/>
2.本发明在无需人工标注的前提下进行预训练达到了与有标注方法同水平识别精度,有效减少了由于人工标注眼底镜视网膜所产生的时间、人力、物力成本。
经过测试,本发明提出的基于生成对比学习的眼底镜视网膜图像血管识别方法能够达到0.8025的dice性能,而DRIVE数据集中提供的第二位专业人类医师标注dice精度仅为0.7881,结果表明本发明的方法达到了人类同水平识别精度。当使用同样的编码器和解码器时,使用基于无监督学习预训练方法精调后的模型[Bibiloni et al.[9]]预测dice精度仅为0.7521,使用自监督学习预训练SimCLR、MoCo方法精调后的模型,分别能取得0.7900、0.7898的dice精度。当使用基于ImageNet自然图像有监督预训练方法精调后的模型预测Dice精度仅为0.7941,使用有标注的眼底镜视网膜图像数据开展有监督训练的模型预测dice精度为0.7827[无预训练方法,模型随机初始化],0.7857[Orlando et al.[33]],0.7929[Fraz et al.[18]],上述结果证明了本发明在没有标注预训练的前提下达到了与有标注方法同水平识别精度,有效减少了由于人工标注眼底镜视网膜所产生的时间、人力、物力成本。本发明针对的场景是针对眼底镜视网膜图像中的血管识别方法,希望利用生成对比学习技术,在没有标注的前提下进一步增强对图像自身上下文信息的利用,通过挖掘自身上下文信息开展预训练,然后再通过有标签的精调使其对眼底镜视网膜图像中的血管识别精度dice数值有提升。
与目前已有的基于神经网络模型的血管识别方法相比,本发明在识别精度dice上超过以往所有的模型的最佳数值。具体而言,与目前最好的基于ImageNet自然图像的有监督预训练模型相比,本发明实现的血管识别系统可以在dice数值上提升0.84个百分点左右;与目前最好的基于眼底镜视网膜图像的有监督预训练模型相比,本发明实现的血管识别系统可以在dice数值上提升0.96个百分点左右。值得一提的是,本发明提升的幅度约一个百分点,虽然看似很小,但是在目前大数据横行的时代,一项任务的数据量非常大的时候,一个百分点所带来的效果的改善也是非常可观的;更重要的是,本发明的预训练方法是不需要任何标注数据的,而前文中相比较的方法均需要人工标注数据,本发明无疑节省了大量的开销。此外,本发明实现的血管识别系统比人类医师在dice精度数值上提升了1.44个百分点,证明了本发明的可应用性。
因此本发明实现了利用生成对比学习技术提高眼底镜视网膜图像中的血管识别的效果。
以上对本发明所提供的一种基于生成对比学习的眼底镜视网膜图像血管识别方法进行了详细介绍。本文对本发明的原理及实施方式进行了阐述,以上说明用于帮助理解本发明的核心思想。应当指出,对于本技术领域的普通研究人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (11)
1.一种基于生成对比学习的眼底镜视网膜图像血管识别方法,其特征在于包括以下步骤:
第一步,构建基于深度学习的视网膜图像血管智能识别系统;基于深度学习的视网膜图像血管智能识别系统由输入预处理模块、编码器、解码器、对比学习模块、生成学习模块、分割预测模块构成,各模块均由多层卷积神经网络CNN在深度学习框架PyTorch中实现;
输入预处理模块与眼底镜视网膜图像数据库、编码器、对比学习模块相连,从眼底镜视网膜图像数据库读取眼底镜视网膜图像,对眼底镜视网膜图像进行增强,然后进行随机掩膜重建和非线性变换,得到预处理后的眼底镜视网膜图像;同时输入预处理模块确定正、负样本对关系,将预处理后的眼底镜视网膜图像发送给编码器,将正、负样本对关系发送给编码器;所述增强包括图像随机裁剪、遮盖、变色;
编码器与输入预处理模块、解码器、对比学习模块相连,编码器从输入预处理模块接收预处理后的眼底镜视网膜图像,对预处理后的眼底镜视网膜图像进行下采样,从预处理后的眼底镜视网膜图像中提取高维的语义特征;编码器由5个串联的卷积模块组成,其中编码器第一卷积模块由多个卷积层、归一化层、激活函数层、下采样层组成,编码器第二至第五卷积模块由4个卷积层、4个归一化层、1个激活函数层组成;编码器将提取的预处理后的图像高维语义特征发送给解码器;此外,根据输入预处理模块中确定的正负样本对关系,构建高维的正、负特征对,将高维的正、负特征对发送给对比学习模块;
对比学习模块与输入预处理模块、编码器相连,从输入预处理模块接收正、负样本对关系,从编码器接收高维的正、负特征对,根据正、负样本对关系计算正、负特征对的语义嵌入,得到正、负样本对应的语义嵌入;对比学习模块由2个全连接层,1个ReLU激活函数层组成,利用InfoNCE损失函数计算正、负特征对的语义嵌入的差值作为损失值,利用损失值的反向传播优化编码器;
解码器与编码器、生成学习模块、分割预测模块相连,对从编码器接收的高维语义特征进行上采样,将高维语义特征还原为低维的结构性特征;解码器由5个串联的卷积模块组成,每个卷积模块由卷积层、归一化层、激活函数层、恒等映射层组成;第二至第五卷积模块中的恒等映射层级联每个解码器卷积模块的输入和对应上一级编码器卷积模块的结果,即解码器第二卷积模块的恒等映射层级联解码器第二卷积模块的输入和编码器第一卷积模块的结果,以此类推;解码器在预训练阶段将低维的结构性特征发送给生成学习模块,在精调阶段将低维的结构性特征发送给分割预测模块;
生成学习模块与解码器、输入预处理模块相连,从解码器接收低维的结构性特征,对低维的结构性特征进行重建,得到与眼底镜视网膜图像同等分辨率大小的重建后图像;从输入预处理模块接收原始的眼底镜视网膜图像,并利用MSE损失函数计算重建后图像与原始图像之间的差值作为损失值,利用损失值的反向传播优化编码器和解码器;生成学习模块由2个连续的卷积层、1个上采样层、1个激活函数层组成;
分割预测模块与解码器相连,由2个卷积层、1个上采样层和1个激活函数层组成;分割预测模块从解码器接收低维的结构性特征,将低维的结构性特征的维度降低到血管分割的类别个数即2;接着通过上采样层和激活函数层,使得分割预测结果中每个像素点的取值范围都在[0,1]内,然后将数值最大的像素点所属类别作为当前像素点的预测类别,得到与眼底镜视网膜图像同等分辨率大小的单通道掩膜图像,作为对眼底镜视网膜图像的逐像素血管识别结果;精调阶段利用二元交叉熵BCE损失函数计算整体预测结果与实际人工标注结果之间的差值作为损失值,利用损失值的反向传播优化编码器和解码器,并保留在精调验证集中精度最高的系统参数;
第二步,构建用于训练基于深度学习的视网膜图像血管智能识别系统的数据集;方法是:
2.1采用来自国际数字视网膜图像血管提取竞赛中提供的开源数据集DRIVE作为训练集;
2.2从DRIVE数据集中随机选择33张健康人的眼底图,未显示任何糖尿病视网膜病变迹象;再选择7张含有糖尿病视网膜病灶的眼底图像,显示轻度早期糖尿病视网膜病变迹象;
2.3对2.2步选择的40张图像进行JPEG压缩,并去识别化,将受试者的个人信息从图像中剥离,得到40张去识别化的图像,令其为X;受试者的个人信息指隐私;
2.4将2.3步得到的40张去识别化的图像X的第一位医生的标注作为标准标注Y,第二位医生的标注作为对照标注Z,将图像X、标准标注Y、对照标注Z的组成三元组<X,Y,Z>,将<X,Y,Z>作为去识别化的数据集;
2.5将去识别化的数据集中的X作为预训练数据集将去识别化的X和Y按照2:1:1的比例划分为精调训练集/>精调验证集/>和测试集<XTest,YTest>;/>为X中的一半图像,/>为Y中的一半标注,/>为X中的1/4个图像,/>为Y中的1/4个标注,XTest为X中的1/4个图像,YTest为Y中的1/4个标注;
第三步,采用对眼底镜视网膜图像血管识别系统的编码器、解码器、对比学习模块、生成学习模块进行预训练,得到编码器、解码器、对比学习模块、生成学习模块中的最佳网络权重参数;方法是:
3.1随机初始化编码器、解码器、对比学习模块、生成学习模块中的权重参数,包括初始学习率learningrate,批处理尺寸batchsize,训练迭代总轮数epoch_max,令当前训练轮数epoch_cur为1;
3.2预训练眼底镜视网膜图像血管识别系统,方法是采用具有当前权重参数的眼底镜视网膜图像血管识别系统对中的原始眼底镜视网膜图像进行血管图像重建,得到与中原始眼底镜视网膜图像同等分辨率大小的重建后图像,对比学习模块和生成学习模块利用损失函数值的反向传播优化编码器和解码器;具体方法是:
3.2.1输入预处理模块从中读取batchsize大小的图像集合X0,X0={x1,x2,…,xn…,xN},/>其中N=32;采用图像预处理方法对X0进行预处理,得到预处理后的图像集合X1,方法是:
3.2.1.1令变量n=1;
3.2.1.2将xn转化到RGB色彩空间,得到3通道的xn;
3.2.1.3对3通道的xn的尺寸规格化为512×512,得到规格化后的xn;
3.2.1.4将规格化后的xn从向量形式转化为张量形式,得到张量形式的xn,令为将/>放入预处理后的图像集合X1;
3.2.1.5若n<N,令n=n+1,转3.2.1.2;若n=N,得到预处理后的图像集合X1,转3.2.2;
3.2.2输入预处理模块采用非线性变换方法对X1进行数据增强,得到风格变化后的图像集X2, 为第n个风格变化后的图像;
3.2.3输入预处理模块采用随机掩膜重建方法对X2再次进行数据增强,得到经过随机块状掩膜遮盖后图像集合X3, 为第n个经过随机块状掩膜遮盖后的图像,随机掩膜重建方法是先随机生成一组块状区域作为掩膜,该掩膜与X2中的图像具有相同大小的分辨率,然后利用掩膜遮盖X2中的图像,被掩盖的区域作为“黑箱”在训练过程中对编码器、解码器和生成学习模块不可见;编码器和解码器通过恢复被掩盖的区域的结构信息学习到输入图像的结构性语义特征,生成学习模块对解码器还原的低维结构性特征进行重建,得到与原始输入的眼底镜视网膜图像同等分辨率大小的重建后图像;
3.2.4将X1中的第n个样本及X3中的对应样本/>作为正样本对/>将X1中除以外的所有其他样本及X3中除/>以外的其它样本作为负样本对/>n!∈{1,2,…,n-1,n+1…,N};将X1和X3发送给编码器,同时将正、负样本对关系/> 发送到编码器和对比学习模块;
3.2.5编码器从输入预处理模块接收X3,采用特征提取方法对X3进行特征提取,得到X3的高维的语义特征集合θ3,将θ3发送给解码器;具体方法是:
3.2.5.1初始化n=1;
3.2.5.2编码器第一卷积模块采用卷积方法对执行第一次卷积操作,得到编码器第一卷积模块的结果/>将/>发送给编码器第二卷积模块;
3.2.5.3编码器第二卷积模块从编码器第一卷积模块接收将/>发送给解码器第二卷积模块,然后采用第一恒等映射卷积操作方法对/>进行V=3次卷积操作,得到编码器第二卷积模块的结果/>第一恒等映射卷积操作方法是:
3.2.5.3.1初始化卷积次数v=1;
3.2.5.3.2编码器第二卷积模块的第一卷积层对进行二维卷积,输入通道是M=64,得到通道数为M=64的第一卷积结果,将第一卷积结果发送给第一归一化层;
3.2.5.3.3编码器第二卷积模块的第一归一化层对第一卷积结果进行归一化操作,得到第一归一化结果,将第一归一化结果发送给第二卷积层;
3.2.5.3.4编码器第二卷积模块的第二卷积层对第一归一化结果进行卷积核大小为3×3的二维卷积,输入通道是M=64,得到通道数为M=64的第二卷积结果,将第二卷积结果发送给第二归一化层;
3.2.5.3.5编码器第二卷积模块的第二归一化层对第二卷积结果进行归一化操作,输入通道是M=64,得到通道数为M=64的第二归一化结果,将第二归一化结果发送给第三卷积层;
3.2.5.3.6编码器第二卷积模块的第三卷积层对第二归一化结果进行卷积核大小为1×1的二维卷积,输入通道是M=64,得到通道数为W=256的第三卷积结果,将第三卷积结果发送给第三归一化层;
3.2.5.3.7编码器第二卷积模块的第三归一化层对第三卷积结果进行归一化操作,得到第三归一化结果,将第三归一化结果发送给第四卷积层和第一恒等映射层;
3.2.5.3.8编码器第二卷积模块的第四卷积层对第三归一化结果进行卷积核大小为1×1的卷积操作,输入通道是M=64,得到通道数为W=256的第四卷积结果,将第四卷积结果发送给第四归一化层;
3.2.5.3.9编码器第二卷积模块的第四归一化层对第四卷积结果进行归一化操作,得到第四归一化结果,将第四归一化结果发送给恒等映射层;
3.2.5.3.10编码器第二卷积模块的第一恒等映射层对第三归一化结果和3.2.5.3.9的第四归一化结果进行级联操作,得到第一级联结果,通道数是W=256,将第一级联结果发送给第一激活函数层;
3.2.5.3.11编码器第二卷积模块的第一激活函数层对第一级联结果进行非线性激活得到第v次非线性激活结果
3.2.5.3.12若v<V,令v=v+1,将第v-1次非线性激活结果发送给编码器第二卷积模块的第五卷积层和编码器第二卷积模块的第二恒等映射层,转3.2.5.3.13;若v=V,则将发送给编码器第三卷积模块,转3.2.5.4;
3.2.5.3.13编码器第二卷积模块的第五卷积层对第v-1次非线性激活结果进行卷积核大小为1×1的二维卷积,输入通道数是256,得到通道数为M=64的第五卷积结果,将第五卷积结果发送给第五归一化层;
3.2.5.3.14编码器第二卷积模块的第五归一化层对第五卷积结果进行归一化操作,得到第五归一化结果,将第五归一化结果发送给第六卷积层;
3.2.5.3.15编码器第二卷积模块的第六卷积层对第五归一化结果进行卷积核大小为1×1的二维卷积,输入通道是M=64,得到通道数为M=64的第六卷积结果,将第六卷积结果发送给第六归一化层;
3.2.5.3.16编码器第二卷积模块的第六归一化层对第六卷积结果进行归一化操作,得到第六归一化结果,将第六归一化结果发送给第七卷积层;
3.2.5.3.17编码器第二卷积模块的第七卷积层对第六归一化结果进行卷积核大小为1×1的二维卷积,输入通道是M=64,得到通道数为W=256的第七卷积结果,将第七卷积结果发送给第二恒等映射层;
3.2.5.3.18编码器第二卷积模块的第二恒等映射层对第v-1次非线性激活结果和第七卷积结果进行级联操作,得到第二级联结果,通道数是W=256,将第二级联结果发送给第二激活函数层;
3.2.5.3.19编码器第二卷积模块的第二激活函数层对第二级联结果进行非线性激活,得到第v次非线性激活结果转3.2.5.3.12;
3.2.5.4编码器第三卷积模块接收编码器第二卷积模块的结果将其发送给解码器第三卷积模块,然后采用3.2.5.3所述的第一恒等映射卷积操作方法,对编码器第二卷积模块的结果/>执行V=4次卷积操作,得到通道数W=512的编码器第三卷积模块的结果将/>发送给编码器第四卷积模块;
3.2.5.5编码器第四卷积模块接收编码器第三卷积模块的结果将/>发送给解码器第四卷积模块,采用3.2.5.3所述的第一恒等映射卷积操作方法对编码器第三卷积模块的结果/>执行V=6次卷积操作,得到通道数为W=1024的编码器第四卷积模块的结果将/>发送给编码器第五卷积模块;
3.2.5.6编码器第五卷积模块接收编码器第四卷积模块的结果将/>发送给解码器第五卷积模块,采用3.2.5.3所述的第一恒等映射卷积操作方法对/>执行V=3次卷积操作,得到通道数为W=2048高维的语义特征/>将/>放到X3的高维的语义特征集合θ3中;
3.2.5.7若n=N,得到高维的语义特征集合θ3,将θ3发送给解码器,转3.2.6;否则n=n+1,转3.2.5.1;
3.2.6编码器从输入预处理模块接收X1,采用3.2.5所述的特征提取方法对X1进行特征提取,得到X1的高维语义特征集合θ1,将θ1发送给解码器;
3.2.7编码器从输入预处理模块接收正负样本对关系对θ1和θ3构建对应的高维的正特征对集合/>负特征对集合/> 为第n个高维的正特征对,/>是第n个高维的负特征对集合,n!是不等于n的变量集合,即n!={1,2,…,n-1,n+1…,N},将高维的正、负特征对集合发送给对比学习模块;
3.2.8对比学习模块从编码器接收高维的正、负特征对集合 采用对比学习方法对高维的正、负特征对集合进行语义嵌入提取;具体方法是:
3.2.8.1令变量n=1;
3.2.8.2对比学习模块的第一全连接层分别对和/>中的高维特征进行隐向量提取,得到特征通道数为2048的隐向量,将隐向量发送给对比学习模块的激活函数层;
3.2.8.3对比学习模块的激活函数层采用激活函数ReLU对隐向量进行非线性激活,得到非线性激活后的隐向量,将非线性激活后的隐向量发送给第二全连接层;
3.2.8.3对比学习模块的第二全连接层对非线性激活后的隐向量进行语义嵌入提取,得到通道数是128的正嵌入向量对负嵌入向量对/>
3.2.8.4对比学习模块采用间距计算方法衡量正嵌入向量对的间距:使用余弦相似度函数计算正嵌入向量对/>与/>之间的间距/> 其中T是转置,||||是模长,/>表示/>的模长,表示/>的模长;
3.2.8.5对比学习模块计算负嵌入向量对中/>与/>之间的间距集合;
3.2.8.6采用InfoNCE函数作为对比学习损失函数数学表达式如公式(2)所示;通过缩小/>将正嵌入向量对的间距缩小、将负嵌入向量对的间距扩大;将计算得到的损失函数值通过反向传播优化编码器;
λ是温度超参数,10≥λ≥0.1,用于调节间距大小;
3.2.9解码器从编码器接收高维语义特征集合θ3,采用解码器特征还原方法将θ3还原为低维的结构性特征ω,将ω发送给生成学习模块;方法是:
3.2.9.1令n=1;
3.2.9.2解码器第五卷积模块的恒等映射层对通道数是2048的和通道数是1024的编码器第四卷积模块的结果/>进行通道维度的级联操作,得到第五级联后的结果/> 通道数是3072,将第五级联后的结果/>发送给解码器第五卷积模块的卷积层;
3.2.9.3解码器第五卷积模块接收第五级联后的结果采用第二恒等映射卷积方法将通道数是3072的/>还原为通道数是256的低维结构性特征,方法是:
3.2.9.3.1解码器第五卷积模块的第一卷积层对级联后的结果进行二维卷积,输入特征通道数M=3072,得到特征通道数W=256的解码第一卷积结果/>发送给第一归一化层;
3.2.9.3.2解码器第五卷积模块的第一归一化层对解码第一卷积结果进行归一化操作,得到解码第一归一化结果/>输入通道数W=256,将/>发送给激活函数层;
3.2.9.3.3解码器第五卷积模块的第一激活函数层采用激活函数对解码第一归一化结果进行非线性激活,得到第一非线性激活后的结果/>将/>发送给第二卷积层;
3.2.9.3.4解码器第五卷积模块的第二卷积层对第一非线性激活后的结果进行二维卷积,输入特征通道数是256,得到通道数是256的解码第二卷积结果/>将/>发送给第二归一化层;
3.2.9.3.5解码器第五卷积模块的第二归一化层对解码第二卷积结果进行归一化操作,输入特征通道数是256,得到解码第二归一化结果/>将/>发送给第二激活函数层;
3.2.9.3.6解码器第五卷积模块的第二激活函数层采用激活函数对解码第二归一化结果进行非线性激活,得到非线性激活后的通道数是256的低维结构性特征/>将/>发送给解码器第四卷积模块;
3.2.9.4解码器第四卷积模块的恒等映射层对低维结构性特征和通道数是512的编码器第三卷积模块的结果/>进行通道维度的级联操作,得到通道数是768的第四级联后的结果/>将Ω4发送给解码器第四卷积模块的卷积层;
3.2.9.5解码器第四卷积模块采用3.2.9.3步所述的第二恒等映射卷积方法将输入通道数是M=768的还原为通道数是W=128的低维结构性特征,将通道数是W=128的低维结构性特征发送给解码器第三卷积模块;
3.2.9.6解码器第三卷积模块的恒等映射层对通道数是W=128的低维结构性特征和通道数是256的编码器第二卷积模块的结果进行通道维度的级联操作,得到通道数是384的第三级联后的结果/>将/>发送给解码器第三卷积模块的卷积层;
3.2.9.7解码器第三卷积模块采用3.2.9.3所述的第二恒等映射卷积方法将输入通道数是M=384的Ω3还原为通道数是W=64的低维结构性特征,将通道数是W=64的低维结构性特征发送给解码器第二卷积模块;
3.2.9.8解码器第二卷积模块的恒等映射层对通道数是W=64的低维结构性特征和通道数是64的编码器第一卷积模块的结果进行通道维度的级联操作,得到通道数是128的第二级联后的结果/>将Ω2发送给解码器第二卷积模块;
3.2.9.9解码器第二卷积模块采用3.2.9.3所述的第二恒等映射卷积方法将输入通道数是128的级联后的结果还原为通道数是32的低维结构性特征/>
3.2.9.10解码器第一卷积模块采用3.2.9.3所述的第二恒等映射卷积方法将3.2.9.9还原的低维结构性特征还原为通道数是16的低维结构性特征ωn,将ωn放到低维结构性特征集合ω中;
3.2.9.11若n=N,将低维结构性特征集合ω发送给生成学习模块,ω={ω1,ω2,…,ωn…,ωN},转3.2.10;若n<N,令n=n+1,转3.2.9.2;
3.2.10生成学习模块从解码器接收ω,对ω进行重建,得到与中的原始眼底镜视网膜图像同等分辨率大小的重建后图像/> 是第n个重建后的图像;从输入预处理模块接收X1,利用MSE损失函数计算/>与X1之间的差值,将差值作为损失值通过反向传播更新编码器和解码器的参数;
3.3若当前训练轮数epoch_cur=训练迭代总轮数epoch_max,结束预训练,将编码器和解码器的经预训练得到的权重参数以pth格式保存,转第五步;否则,将学习率learningrate按公式(4)进行余弦衰减,令epoch_cur=epoch_cur+1,转3.2继续训练;
第四步,采用pth格式保存的经预训练得到的权重参数初始化编码器和解码器,得到预训练后的基于深度学习的视网膜图像血管智能识别系统;
第五步,采用对预训练后的基于深度学习的视网膜图像血管智能识别系统进行精调,得到精调后的基于深度学习的视网膜图像血管智能识别系统,方法是:
5.1设置精调网络训练参数,方法是:初始化学习率learning rate、批处理尺寸batchsize、训练迭代总轮数epoch_max和更新停滞阈值patience_max,令训练轮数epoch_cur为1,令初始更新停滞次数patience_cur为0,令初始最高精度dice_best为0;
5.2精调预训练后的基于深度学习的视网膜图像血管智能识别系统,方法是采用预训练后的基于深度学习的视网膜图像血管智能识别系统对精调数据集中的输入图像进行血管识别,得到输入图像中血管轮廓的二值预测结果,其中0代表背景,1代表血管区域,利用损失函数值的反向传播优化编码器和解码器,得到精调后的基于深度学习的视网膜图像血管智能识别系统;方法是:
5.2.1输入预处理模块从中读取批次大小为batchsize的图像集合XX={xx1,xx2,…,xxn…,xxN},其中N=batchsize;采用3.2.1步所述图像预处理方法对XX中的图像进行预处理,得到预处理后的图像集合XX1,/>
5.2.2输入预处理模块从中读取批次大小为batchsize的标注集合YY={yy1,yy2,…,yyn…,yyN},其中N=batchsize;采用3.2.1步所述图像预处理方法对YY中的标注进行预处理,得到预处理后的标注集合/>
5.2.3编码器从输入预处理模块接收XX1,采用3.2.5步所述特征提取方法对XX1进行特征提取,得到XX1的高维语义特征集合θθ1,将θθ1发送给解码器;
5.2.4解码器从编码器接收θθ1,采用3.2.9步所述解码器特征还原方法将θθ1还原为低维的结构性特征集合ωω,ωω={ωω1,ωω2,…,ωωn…,ωωN},将ωω发送给分割预测模块,其中ωωn为第n个结构性特征;
5.2.5分割预测模块从解码器接收ωω,采用分割预测方法将ωω的维度降低到血管分割的类别个数,接着通过上采样层进行上采样和激活函数层进行激活,得到与眼底镜视网膜图像同等分辨率大小的单通道掩膜图像,得到分割预测结果集合 作为对眼底镜视网膜图像的逐像素血管识别结果;
5.2.6分割预测模块采用对比损失函数计算/>和人工标注的眼底镜视网膜血管YY1之间的差值,其数学表达式如公式(5)所示;通过缩小差值得到一个与人工标注的血管轮廓相似的预测结果,通过损失函数值的反向传播间接优化编码器和解码器,得到精调后的基于深度学习的视网膜图像血管智能识别系统;
其中代表分割预测结果/>中预测为前景的像素点总和;
5.3采用精调验证集验证5.2步精调后的基于深度学习的视网膜图像血管智能识别系统的识别精度;方法是采用精调后的视网膜图像血管智能识别系统对中的图像进行血管识别,得到精调验证集中图像中血管轮廓的二值预测结果,通过计算预测结果与人工标注的血管轮廓之间的差值评价识别精度,并保留在精调验证集中精度最高的系统参数;具体方法如下:
5.3.1输入预处理模块从中读取批次大小为batchsize的图像集合XXX={xxx1,xxx2,…,xxxn…,xxxN},其中N=batchsize;采用3.2.1步所述图像预处理方法对XXX中的图像进行预处理,得到预处理后的图像集合XXX1,/>
5.3.2输入预处理模块从中读取batchsize的图像集合YYY={yyy1,yyy2,…,yyyn…,yyyN},其中N=32;采用3.2.1步所述图像预处理方法对YYY中的标注进行预处理,得到预处理后的标注集合/>
5.3.3编码器从输入预处理模块接收XXX1,采用3.2.5所述的特征提取方法对XXX1进行特征提取,得到XXX1的高维语义特征集合θθθ1,将θθθ1发送给解码器;
5.3.4解码器从编码器接收θθθ1,采用3.2.9步所述的解码器特征还原方法将θθθ1还原为低维的结构性特征集合ωωω,ωωω={ωωω1,ωωω2,…,ωωωn…,ωωωN},将ωωω发送给分割预测模块;
5.3.5分割预测模块从解码器接收ωωω,采用5.2.5所述的分割预测方法将ωωω的维度降低到血管分割的类别个数2,得到XXX的血管分割预测结果
5.3.6计算预测分割结果与人工标注的眼底镜视网膜血管YYY1之间的平均dice值,作为识别精度的评价指标;方法是公式(6):
若dice>最高精度dice_best,将编码器和解码器的权重参数作为最佳权重以pth格式保存,令停滞次数patience_cur=0,转5.3.7;否则令patience_cur=patience_cur+1,转5.3.7;
5.3.7若epoch_cur=epoch_max,或patience_cur=patience_max,精调结束,得到精调后的基于深度学习的视网膜图像血管智能识别系统,转第六步;否则,通过公式(4)更新学习率,令epoch_cur=epoch_cur+1,转5.2.1继续对血管智能识别系统进行精调;
第六步,采用精调后的基于生成对比学习的视网膜图像血管智能识别系统对用户输入的眼底镜视网膜图像进行血管识别,得到预测的血管分割结果;方法是:
6.1精调后的基于生成对比学习的视网膜图像血管智能识别系统接收用户输入的眼底镜视网膜图像Xuser;
6.2输入预处理模块采用3.2.1步所述图像预处理方法对Xuser进行预处理,得到预处理后的图像
6.3编码器从输入预处理模块接收预处理后的图像采用3.2.5所述的特征提取方法对/>进行特征提取,得到/>的高维语义特征/>
6.4解码器从编码器接收高维语义特征采用3.2.9步所述解码器特征还原方法将还原为低维的结构性特征/>将/>发送给分割预测模块;
6.5分割预测模块从解码器接收低维的结构性特征采用5.2.5所述的分割预测方法将/>的维度降低到血管分割的类别个数,接着通过上采样层上采样和激活函数层的激活,得到分割预测结果/> 与人工标注图像格式保持一致,是由1和0组成的单通道二维矩阵,其中1代表本血管识别方法判断眼底镜视网膜图像中的血管区域,0代表眼底镜视网膜图像中除血管外的其他背景区域,/>的图像分辨率大小与眼底镜视网膜图像分辨率一致,作为对用户输入的眼底镜视网膜图像的逐像素血管识别结果。
2.如权利要求1所述的基于生成对比学习的眼底镜视网膜图像血管识别方法,其特征在于第一步所述深度学习框架PyTorch要求1.10版本及以上。
3.如权利要求1所述的基于生成对比学习的眼底镜视网膜图像血管识别方法,其特征在于所述编码器第一卷积模块中的卷积层的卷积核大小是7×7,步长是2,填充大小是3;下采样层的核大小是3,步长是2,填充大小是1;编码器第二至第五卷积模块中的卷积层由两种卷积核组成,第一种是大小是3×3,步长是1,填充大小是1的卷积核;第二种是大小是1×1,步长是1,无填充的卷积核;编码器五个卷积模块中的激活函数层均采用ReLU函数进行非线性激活;所述解码器中每个卷积模块的卷积层的卷积核大小是3×3,步长是1,填充大小是1,解码器中所有卷积模块中的激活函数层均采用ReLU函数进行非线性激活;所述生成学习模块第一卷积层的卷积核大小是3×3,步长是1,填充大小是1;生成学习模块第二卷积层的卷积核大小是1×1,步长是1,无填充;激活函数层采用Sigmoid函数进行非线性激活;分割预测模块第一卷积层的卷积核大小是3×3,步长是1,填充大小是1;分割预测模块第二卷积层的卷积核大小是1×1,步长是1,无填充;激活函数层采用Sigmoid函数进行非线性激活。
4.如权利要求1所述的基于生成对比学习的眼底镜视网膜图像血管识别方法,其特征在于3.1步将所述学习率learningrate初始化为0.01,将批处理尺寸batchsize初始化为32,将训练迭代总轮数epoch_max初始化为100;5.1步将所述初始学习率learning rate初始化为0.001,将批处理尺寸batchsize初始化为32,将训练迭代总轮数epoch_max初始化为100,令更新停滞阈值patience_max为30。
5.如权利要求1所述的基于生成对比学习的眼底镜视网膜图像血管识别方法,其特征在于3.2.2步输入预处理模块采用非线性变换方法对X1进行数据增强的方法是:使用三次项贝塞尔曲线产生单调且可逆的非线性函数,贝塞尔曲线数学表达式如公式(1)所示;
Bézier(P0,P1,P2,P3,t)=P0·(1-t)3+P1·3·(1-t)2·t+P2·3·(1-t)·t2+P3·t3 公式(1)
其中P0是起控制点,P3是止控制点,P0的坐标记为(x0,y0)、P3的坐标为(x3,y3),P1和P2是中间控制点,P1坐标记为(x1,y1)、P2的坐标为(x2,y2),t是介于[0,1]之间的系数;利用非线性函数对X1进行数据增强的方法是:
3.2.2.1设计Q组控制点(P0,P1,P2,P3),利用公式(1)对Q组点拟合三次多项式曲线,得到Q组单调且可逆的非线性函数{φ1,φ2,…,φq,…,φQ},1≤Q;
3.2.2.2令变量n=1;
3.2.2.3从{φ1,φ2,…,φq,…,φQ}中随机选择一个非线性函数对预处理后的图像中每个像素值进行非线性变换,得到风格变化后的图像/>将/>放到非线性变换后的图像集X2中;
3.2.2.4若n<N,n=n+1,转3.2.2.3;若n=N,得到风格变化后的图像集X2,
6.如权利要求1所述的基于生成对比学习的眼底镜视网膜图像血管识别方法,其特征在于3.2.3步所述输入预处理模块采用随机掩膜重建方法对X2再次进行数据增强的具体方法是:
3.2.3.1令变量n=1;
3.2.3.2随机生成一个大小为32×32的服从高斯分布的掩膜矩阵Γ;
3.2.3.3设定超参数比例τ%,40≤τ≤60,将Γ中前τ%的数值取1,Γ中其它1-τ%的数值取0,得到一个由{0,1}组成的矩阵Γ′;
3.2.3.4利用最邻近插值方法将Γ′尺寸扩大为与尺寸同等大小,得到的掩膜矩阵;
3.2.3.5将风格变化增强后的眼底镜视网膜图像与Γ′进行逐像素矩阵乘,得到经过随机块状掩膜遮盖后的图像/>将/>放到经过随机块状掩膜遮盖后图像集合X3中;
3.2.3.6若n<N,令n=n+1,转3.2.3.2;若n=N,得到经过随机块状掩膜遮盖后图像集合X3,
7.如权利要求1所述的基于生成对比学习的眼底镜视网膜图像血管识别方法,其特征在于3.2.5.2步所述编码器第一卷积模块采用卷积方法对执行第一次卷积操作,得到/>下采样结果的方法是:
3.2.5.2.1编码器第一卷积模块的卷积层对进行二维卷积,输入通道是3,得到通道数是64的二维卷积结果,将/>二维卷积结果发送给归一化层;
3.2.5.2.2编码器第一卷积模块的归一化层对二维卷积结果进行归一化操作,得到归一化结果,将/>归一化结果发送给激活函数层;
3.2.5.2.3编码器第一卷积模块的激活函数层对归一化结果进行非线性激活,得到非线性激活结果,将/>非线性激活结果发送给下采样层;
3.2.5.2.4编码器第一卷积模块的下采样层对非线性激活结果进行最大池化操作,得到/>下采样结果。
8.如权利要求1所述的基于生成对比学习的眼底镜视网膜图像血管识别方法,其特征在于3.2.7步所述编码器对θ1和θ3构建对应的高维的正特征对集合、负特征对集合的方法是:
3.2.7.1令变量n=1;
3.2.7.2根据正样本对关系从θ1中挑选/>对应的特征/>从θ3挑选对应的特征/>将/>和/>组合构建成正样本对/>对应的高维的正特征对/>将放入正特征对集合;
3.2.7.3根据负样本对关系从θ1中挑选构建/>对应的特征/>从θ3中挑选构建/>对应的特征/>将/>和/>组合构建成负样本对/>对应的高维的负特征对/>将/>放入负特征对集合;
3.2.7.4若n<N,令n=n+1,转3.2.7.2;若n=N,得到高维的正特征对集合负特征对集合/>/>将高维的正、负特征对集合发送给对比学习模块。
9.如权利要求1所述的基于生成对比学习的眼底镜视网膜图像血管识别方法,其特征在于3.2.8.5步所述对比学习模块计算负嵌入向量对中/>与/>之间的间距集合/>的方法是:
3.2.8.5.1令n!=1;
3.2.8.5.2若n!=n,则令n!=n!+1,转3.2.8.5.3;若n!≠n,直接转3.2.8.5.3;
3.2.8.5.3对比学习模块采用3.2.8.4所述的间距计算方法衡量负嵌入向量对中/>与/>之间的间距/>
3.2.8.5.4若n!≠N,令n!=n!+1,转3.2.8.5.2;若n!=N,得到负嵌入向量对的间距集合
10.如权利要求1所述的基于生成对比学习的眼底镜视网膜图像血管识别方法,其特征在于3.2.10步所述生成学习模块对ω进行重建,得到与中的原始眼底镜视网膜图像同等分辨率大小的重建后图像/>利用MSE损失函数计算/>与X1之间的差值,将差值作为损失值通过反向传播更新编码器和解码器的参数的方法是:
3.2.10.1令n=1;
3.2.10.2生成学习模块的第一卷积层对输入特征通道是16的低维结构性特征ωn进行卷积操作,得到特征通道是16的第一卷积结果将/>发送给第二卷积层;
3.2.10.3生成学习模块的第二卷积层对输入特征通道是16的第一卷积结果进行卷积操作,得到特征通道数是3的第二卷积结果/>将/>发送到生成学习模块的上采样层;
3.2.10.4生成学习模块的上采样层对进行二维插值操作,将输入的分辨率恢复至与原始输入的眼底镜视网膜图像/>同等分辨率大小,得到二维插值操作结果/>将/>发送给激活函数层;
3.2.10.5激活函数层对进行非线性激活,得到重建后的图像/>将/>放到重建图像集合/>
3.2.10.5若n=N,得到重建图像集合 将/>发送给生成学习模块,转3.2.10.6;若n<N,令n=n+1,转3.2.10.2;
3.2.10.6生成学习模块采用MSE函数作为生成学习损失函数 计算重建图像集合/>和原始图像集合X1之间的差值,通过缩小差值得到一个与/>相似的重建图像,通过损失函数值的反向传播优化编码器和解码器。
11.如权利要求1所述的基于生成对比学习的眼底镜视网膜图像血管识别方法,其特征在于5.2.5步所述采用分割预测方法将ωω的维度降低到血管分割的类别个数,接着通过上采样层进行上采样和激活函数层进行激活的方法是:
5.2.5.1令n=1;
5.2.5.2第一卷积层对输入特征通道数是16的低维结构性特征ωωn进行卷积操作,得到特征通道数是16的第一卷积结果发送给第二卷积层;
5.2.5.3第二卷积层对第一卷积结果再次进行卷积操作,得到特征通道数是1的第二卷积结果/>发送给上采样层;
5.2.5.4上采样层对5.2.5.3的第二卷积结果进行二维插值操作,将输入的分辨率恢复至与/>同等分辨率大小,得到分辨率恢复后的眼底镜视网膜图像In;
5.2.5.5激活函数层对In进行非线性激活,得到单通道掩膜图像作为分割预测结果,将/>放到分割预测结果集合/>中;
5.2.5.6若n<N,令n=n+1,转5.2.5.2;若n=N,得到分割预测结果集合 />
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211220289.9A CN116071292B (zh) | 2022-10-08 | 2022-10-08 | 基于生成对比学习的眼底镜视网膜图像血管识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211220289.9A CN116071292B (zh) | 2022-10-08 | 2022-10-08 | 基于生成对比学习的眼底镜视网膜图像血管识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116071292A CN116071292A (zh) | 2023-05-05 |
CN116071292B true CN116071292B (zh) | 2023-09-22 |
Family
ID=86175822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211220289.9A Active CN116071292B (zh) | 2022-10-08 | 2022-10-08 | 基于生成对比学习的眼底镜视网膜图像血管识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116071292B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116563549B (zh) * | 2023-05-16 | 2023-12-15 | 中国人民解放军国防科技大学 | 基于粗粒度弱标注的磁共振图像心脏分割方法 |
CN116385467B (zh) * | 2023-05-29 | 2023-09-12 | 中国科学院自动化研究所 | 基于自监督学习的脑血管分割方法及相关设备 |
CN116759042B (zh) * | 2023-08-22 | 2023-12-22 | 之江实验室 | 一种基于环形一致性的反事实医疗数据生成系统及方法 |
CN117390206A (zh) * | 2023-10-26 | 2024-01-12 | 杭州食方科技有限公司 | 生鲜图像存储方法、装置、电子设备和计算机可读介质 |
CN117152397B (zh) * | 2023-10-26 | 2024-01-26 | 慧医谷中医药科技(天津)股份有限公司 | 一种基于热成像投影的三维人脸成像方法及系统 |
CN117495741B (zh) * | 2023-12-29 | 2024-04-12 | 成都货安计量技术中心有限公司 | 一种基于大卷积对比学习的畸变还原方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881862A (zh) * | 2015-04-03 | 2015-09-02 | 南通大学 | 一种基于眼底镜图像的视网膜血管迂曲度计算方法及其应用 |
DE202017104953U1 (de) * | 2016-08-18 | 2017-12-04 | Google Inc. | Verarbeiten von Fundusbildern unter Verwendung von Maschinenlernmodellen |
CN113724206A (zh) * | 2021-08-12 | 2021-11-30 | 武汉大学 | 一种基于自监督学习的眼底图像血管分割方法及系统 |
-
2022
- 2022-10-08 CN CN202211220289.9A patent/CN116071292B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881862A (zh) * | 2015-04-03 | 2015-09-02 | 南通大学 | 一种基于眼底镜图像的视网膜血管迂曲度计算方法及其应用 |
DE202017104953U1 (de) * | 2016-08-18 | 2017-12-04 | Google Inc. | Verarbeiten von Fundusbildern unter Verwendung von Maschinenlernmodellen |
CN113724206A (zh) * | 2021-08-12 | 2021-11-30 | 武汉大学 | 一种基于自监督学习的眼底图像血管分割方法及系统 |
Non-Patent Citations (1)
Title |
---|
Automated Detection of Diabetic Retinopathy using a Binocular Siamese-Like Convolutional Network;XiangLong Zeng;《2019 IEEE International Symposium on Circuits and Systems (ISCAS)》;1-5 * |
Also Published As
Publication number | Publication date |
---|---|
CN116071292A (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116071292B (zh) | 基于生成对比学习的眼底镜视网膜图像血管识别方法 | |
Rahane et al. | Lung cancer detection using image processing and machine learning healthcare | |
Li et al. | Accurate retinal vessel segmentation in color fundus images via fully attention-based networks | |
Zreik et al. | Deep learning analysis of coronary arteries in cardiac CT angiography for detection of patients requiring invasive coronary angiography | |
Alghamdi et al. | A comparative study of deep learning models for diagnosing glaucoma from fundus images | |
Bhanumathi et al. | CNN based training and classification of MRI brain images | |
Popescu et al. | Retinal blood vessel segmentation using pix2pix gan | |
Arif et al. | [Retracted] Automated Detection of Nonmelanoma Skin Cancer Based on Deep Convolutional Neural Network | |
CN116823625B (zh) | 基于变分自编码器的跨对比度磁共振超分辨率方法和系统 | |
CN116563549B (zh) | 基于粗粒度弱标注的磁共振图像心脏分割方法 | |
Priyadharshini et al. | A novel hybrid Extreme Learning Machine and Teaching–Learning-Based Optimization algorithm for skin cancer detection | |
CN115294075A (zh) | 一种基于注意力机制的octa图像视网膜血管分割方法 | |
CN116091412A (zh) | 一种从pet/ct图像中分割肿瘤的方法 | |
Xu et al. | Application of artificial intelligence technology in medical imaging | |
Ruan et al. | An efficient tongue segmentation model based on u-net framework | |
Singh et al. | Detection and classification of brain tumor using hybrid feature extraction technique | |
CN113421250A (zh) | 一种基于无病变影像训练的眼底疾病智能诊断方法 | |
Xia et al. | HRNet: A hierarchical recurrent convolution neural network for retinal vessel segmentation | |
CN115713535A (zh) | 图像分割模型确定方法以及图像分割方法 | |
Yasmin et al. | Impact of fuzziness for skin lesion classification with transformer-based model | |
Selvathi et al. | Deep convolutional neural network-based diabetic eye disease detection and classification using thermal images | |
Zhong et al. | Denoising auto-encoder network combined classfication module for brain tumors detection | |
CN112967295A (zh) | 一种基于残差网络和注意力机制的图像处理方法及系统 | |
Chen | An Alzheimer's Disease Identification and Classification Model Based on the Convolutional Neural Network with Attention Mechanisms. | |
Prusty et al. | Enhancing medical image classification with generative AI using latent denoising diffusion probabilistic model and wiener filtering approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |