前沿拓展:
matlab官方下载
网络异常。
1、m负松atlab2022a是最新出的一款功能强大的专业的数学计算变
糖尿病性视网膜病变 (DR) 是导致失明的一大元凶,全世界有 9,300 万人受此疾病困扰。DR 是一种与糖尿病有关的眼部疾病。在早期对 DR 进行检测和分级有助于预防**性视力丧失。在视网膜病变筛查过程中进行自动检测和分级,则有助于提供宝贵的第二诊疗意见。来自代顿大学研究院(UDRI))的 Barath Narayanan 博士将为我们介绍使用深度卷积神经网络 (CNN) 来实现一种简单的基于迁移学习的 DR 检测方法。
作者:Barath Narayanan,代顿大学研究院 (UDRI)。
合著者:Russell C. Hardie 博士,代顿大学 (UD)。
Barath Narayanan 博士毕业于代顿大学 (UD),分别于 2013 年和 2017 年获得理学硕士学位和电气工程博士学位。他目前担任 UDRI 软件系统小组研究科学家,兼任代顿大学 (UD) 电子和计算机工程 (ECE) 系客座教授。他的研究方向包括深度学习、机器学习、计算机视觉和模式识别。
数据集
Kaggle 失明检测竞赛数据集(APTOS 2019 Datasetwww.kaggle.com/c/aptos2019-blindness-detection)包含单独的训练和测试用例。在这篇博文中,我们只利用训练数据集来研究和估计性能。这些影像采集于印度亚拉文眼科医院。训练数据集中包含 3,662 张影像,这些影像由临床专家标记为不同的类别(正常、轻度 DR、中度 DR、重度 DR 和增殖性 DR)。请注意,在这篇博文中,我们只关注 DR 的检测,如需分级架构的详细信息,请参见我们的论文。
按类别进行数据分组
我们从 Excel 工作表中提取标签,将这些影像分到"Yes"和"No"两个文件夹中,因为本文只关注 DR 的检测。用于划分数据类别的辅助函数代码位于本文结尾处。
加载数据库第一,使用
imageDatastore(www.mathworks.com/help/matlab/ref/matlab.io.datastore.imagedatastore.html) 加载数据库。该函数用于加载影像及其标签以执行分析,具有较高的计算效率。
算效率。
%Two-classDatapathtwo_class_datapath ='Train Dataset Two Classes';%ImageDatastoreimds=imageDatastore(two_class_datapath,… 'IncludeSubfolders',true,… 'LabelSource','foldernames');%Determine the split uptotal_split=countEachLabel(imds)
影像可视化
可视化影像,了解各个类之间的影像差异。这也有助于我们确定采用何种分类方法来区分两个类。根据影像,我们可以确定有助于完成分类的预处理方法。根据类内相似性及类间差异性,我们可以确定可用于研究的 CNN 架构类型。在这篇文章中,我们将使用 inception-v3 架构来实现迁移学习。您可以阅读我们的论文,了解各种预处理**作和其他现有架构的性能。
%Number of Imagesnum_images=length(imds.Labels);%Visualize random 20 imagesperm=randperm(num_images,20);figure;for idx=1:20 subplot(4,5,idx); imshow(imread(imds.Files{perm(idx)})); title(sprintf('%s',imds.Labels(perm(idx)))) end
训练、测试和验证
我们将数据集分为训练、验证和测试三个部分。第一,我们将数据集中的 80% 分为一组(训练和验证),20% 分为另一组(测试)。确保各组中两类的数量均衡。
%Split the TrainingandTestingDatasettrain_percent=0.80;[imdsTrain,imdsTest]=splitEachLabel(imds,train_percent,'randomize'); %Split the Trainingan**alidationvalid_percent=0.1;[imdsValid,imdsTrain]=splitEachLabel(imdsTrain,valid_percent,'randomize');
这样,我们就得到以下计数:
深度学习方法
我们采用迁移学习方法来对视网膜影像进行分类。在这篇文章中,我将利用 Inception-v3 进行分类。您可以利用这篇论文中提到的其他迁移学习方法,或者您认为可能适合此应用的其他架构。如需使用其他现有网络进行迁移学习,可以参考我的 MathWorks 博文:AlexNet、ResNet。
训练我们将验证容忍度设为 3,作为停止条件。训练最开始,我们将"MaxEpochs"设为 2,但可以根据训练进度进一步调整。理想情况下,我们希望在训练过程停止时达到较高的验证性能。我们根据硬件内存限制将小批量大小设为 32,您也可以选更大的值,但要确保相应更改其他参数。
%Converting images to 299 x 299 to suit the architectureaugimdsTrain = augmentedImageDatastore([299299],imdsTrain);augimdsValid = augmentedImageDatastore([299299],imdsValid);%Set the training optionsoptions = trainingOptions('adam','MaxEpochs',2,'MiniBatchSize',32,…'Plots','training-progress','Verbose',0,'ExecutionEnvironment','parallel',…'ValidationData',augimdsValid,'ValidationFrequency',50,'ValidationPatience',3);netTransfer = trainNetwork(augimdsTrain,incepnet,options);
测试和性能评估
%Reshape the test images match with the network augimdsTest = augmentedImageDatastore([299299],imdsTest);%PredictTestLabels[predicted_labels,posterior]= classify(netTransfer,augimdsTest);%ActualLabelsactual_labels = imdsTest.Labels;%ConfusionMatrixfigureplotconfusion(actual_labels,predicted_labels)title('Confusion Matrix: Inception v3');
% ROC Curvetest_labels=double(nominal(imdsTest.Labels));[fp_rate,tp_rate,T,AUC]= perfcurve(test_labels,posterior(:,2),2);figure;plot(fp_rate,tp_rate,'b-');hold on;grid on;xlabel('False Positive Rate');ylabel('Detection Rate');
类激活映射结果
使用以下代码,将不同 DR 病例经过这些网络处理后得到的类激活映射 (CAM) 结果可视化:www.mathworks.com/help/deeplearning/examples/investigate-network-predictions-using-class-activation-mapping.html。这有助于医生了解算法决策背后的依据。以下是不同病例的相应结果:
结论本文介绍了一种基于深度学习的简单分类方法,可用于视网膜影像 DR 的计算机辅助诊断 (CAD)。在没有任何预处理的情况下,使用 Inception-v3 的分类算法表现相对出色,总体准确度为 98.0%,AUC 为 0.9947(结果可能会因随机拆分而异)。在这篇论文中,我们研究了各种现有 CNN 架构在不同预处理条件下用于同一组训练和测试用例集时的性能。综合各种架构的结果,将有助于从 AUC 和总体准确度两方面提高性能。如果能就计算量(内存和时间)和性能两方面综合研究这些算法,将有助于相关专家有所侧重地选择算法。此外,我们还在这篇论文中提出了 DR 检测和分级的创新架构方法。
辅助函数代码
按 DR 类别(Yes 或No)进行数据分组的代码从网站下载 ZIP 文件并解压到名为 train_images 的文件夹中。确保下载的是包含临床专家提供的真值标签的 Excel 工作表 train.csv,将其转换为 .xlsx 以用于此代码。我们从 Excel 工作表中提取标签,将这些影像分到"Yes"和"No"两个文件夹中,因为本文只关注 DR 的检测。
% Training Data pathdatapath='train_images';% Two-class Data pathtwo_class_datapath='Train Dataset Two Classes';% Class Namesclass_names={'No','Yes'};mkdir(sprintf('%s%s',two_class_datapath,class_names{1}))mkdir(sprintf('%s%s',two_class_datapath,class_names{2}))% Read the Excel Sheet with Labels[num_data,text_data]=xlsread('train.xlsx');% Determine the Labelstrain_labels=num_data(:,1);% Merge all labels marked into Mild, Medium, Severe and Proliferative DR % into a single category 'Yes' train_labels(train_labels~=0)=2;% Rest of the dataset belongs to 'No' categorytrain_labels(train_labels==0)=1;% Filenamefilename=text_data(2:end,1);% Now, write these images 2-folders 'Yes' or 'No' for us to develop a deep% learning architecture utilizing Deep learning toolbox% Determine the Files put them in separate folderfor idx=1:length(filename) % You could uncomment if you would like to see live progress % fprintf('Processing %d among %d files:%s n',idx,length(filename),filename{idx})[/%] % Read the image current_filename=strrep(filename{idx}, char(39), ''); img=imread(sprintf('%s%s.png',datapath,current_filename)); % Write the image in the respective folder imwrite(img,sprintf('%s%s%s%s.png',two_class_datapath,class_names{train_labels(idx)},'',current_filename)); clear img; end
#医疗##科技##科技快讯##科技曼曼谈##matlab#
拓展知识:
matlab官方下载
《mathematica安装包》百度网盘高清资源免费在线观看
下载地址:https://pan.baidu.com/s/1gkrYotP3EDAcuUOMGI582Q
提取码: kpy6
作品相关介绍:
Wolfram Mathematica (简称:Mathematica)是一款科学计算软件,有时候也被称为计算机代数系统,广泛使用于科学、工程、数学、计算等领域。
原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/68492.html