首页 > 自考资讯 > 自考知识

无所不能的 MATLAB

头条共创 2024-08-11

无所不能的 MATLAB


糖尿病性视网膜病变 (DR) 是导致失明的一大元凶,全世界有 9,300 万人受此疾病困扰。DR 是一种与糖尿病有关的眼部疾病。在早期对 DR 进行检测和分级有助于预防永久性视力丧失。在视网膜病变筛查过程中进行自动检测和分级,则有助于提供宝贵的第二诊疗意见。来自代顿大学研究院(UDRI))的 Barath Narayanan 博士将为我们介绍使用深度卷积神经网络 (CNN) 来实现一种简单的基于迁移学习的 DR 检测方法。


作者:Barath%20Narayanan,代顿大学研究院%20(UDRI)。

合著者:Russell%20C.%20Hardie%20博士,代顿大学%20(UD)。

Barath%20Narayanan%20博士毕业于代顿大学%20(UD),分别于%202013%20年和%202017%20年获得理学硕士学位和电气工程博士学位。他目前担任%20UDRI%20软件系统小组研究科学家,兼任代顿大学%20(UD)%20电子和计算机工程%20(ECE)%20系客座教授。他的研究方向包括深度学习、机器学习、计算机视觉和模式识别。


数据集

Kaggle%20失明检测竞赛数据集(APTOS%202019%20Datasetwww.kaggle.com/c/aptos2019-blindness-detection)包含单独的训练和测试用例。在这篇博文中,我们只利用训练数据集来研究和估计性能。这些影像采集于印度亚拉文眼科医院。训练数据集中包含%203,662%20张影像,这些影像由临床专家标记为不同的类别(正常、轻度%20DR、中度%20DR、重度%20DR%20和增殖性%20DR)。请注意,在这篇博文中,我们只关注%20DR%20的检测,如需分级架构的详细信息,请参见我们的论文。


按类别进行数据分组

我们从%20Excel%20工作表中提取标签,将这些影像分到"Yes"和"No"两个文件夹中,因为本文只关注%20DR%20的检测。用于划分数据类别的辅助函数代码位于本文结尾处。


加载数据库首先,使用

imageDatastore(www.mathworks.com/help/matlab/ref/matlab.io.datastore.imagedatastore.html)%20加载数据库。该函数用于加载影像及其标签以执行分析,具有较高的计算效率。

算效率。

%Two-classDatapathtwo_class_datapath%20='Train%20Dataset%20Two%20Classes';%ImageDatastoreimds=imageDatastore(two_class_datapath,...%20%20%20%20'IncludeSubfolders',true,...%20%20%20%20'LabelSource','foldernames');%Determine%20the%20split%20uptotal_split=countEachLabel(imds)


影像可视化

可视化影像,了解各个类之间的影像差异。这也有助于我们确定采用何种分类方法来区分两个类。根据影像,我们可以确定有助于完成分类的预处理方法。根据类内相似性及类间差异性,我们可以确定可用于研究的%20CNN%20架构类型。在这篇文章中,我们将使用%20inception-v3%20架构来实现迁移学习。您可以阅读我们的论文,了解各种预处理操作和其他现有架构的性能。

%Number%20of%20Imagesnum_images=length(imds.Labels);%Visualize%20random%2020%20imagesperm=randperm(num_images,20);figure;for%20idx=1:20%20%20%20%20%20%20%20%20subplot(4,5,idx);%20%20%20%20imshow(imread(imds.Files{perm(idx)}));%20%20%20%20title(sprintf('%s',imds.Labels(perm(idx))))%20%20%20%20end


训练、测试和验证

我们将数据集分为训练、验证和测试三个部分。首先,我们将数据集中的%2080%%20分为一组(训练和验证),20%%20分为另一组(测试)。确保各组中两类的数量均衡。

%Split%20the%20TrainingandTestingDatasettrain_percent=0.80;[imdsTrain,imdsTest]=splitEachLabel(imds,train_percent,'randomize');%20%Split%20the%20TrainingandValidationvalid_percent=0.1;[imdsValid,imdsTrain]=splitEachLabel(imdsTrain,valid_percent,'randomize');

这样,我们就得到以下计数:%20


深度学习方法

我们采用迁移学习方法来对视网膜影像进行分类。在这篇文章中,我将利用%20Inception-v3%20进行分类。您可以利用这篇论文中提到的其他迁移学习方法,或者您认为可能适合此应用的其他架构。如需使用其他现有网络进行迁移学习,可以参考我的%20MathWorks%20博文:AlexNet、ResNet。


训练我们将验证容忍度设为%203,作为停止条件。训练最开始,我们将"MaxEpochs"设为%202,但可以根据训练进度进一步调整。理想情况下,我们希望在训练过程停止时达到较高的验证性能。我们根据硬件内存限制将小批量大小设为%2032,您也可以选更大的值,但要确保相应更改其他参数。

%Converting%20images%20to%20299%20x%20299%20to%20suit%20the%20architectureaugimdsTrain%20=%20augmentedImageDatastore([299299],imdsTrain);augimdsValid%20=%20augmentedImageDatastore([299299],imdsValid);%Set%20the%20training%20optionsoptions%20=%20trainingOptions('adam','MaxEpochs',2,'MiniBatchSize',32,...'Plots','training-progress','Verbose',0,'ExecutionEnvironment','parallel',...'ValidationData',augimdsValid,'ValidationFrequency',50,'ValidationPatience',3);netTransfer%20=%20trainNetwork(augimdsTrain,incepnet,options);


测试和性能评估

%Reshape%20the%20test%20images%20match%20with%20the%20network%20augimdsTest%20=%20augmentedImageDatastore([299299],imdsTest);%PredictTestLabels[predicted_labels,posterior]=%20classify(netTransfer,augimdsTest);%ActualLabelsactual_labels%20=%20imdsTest.Labels;%ConfusionMatrixfigureplotconfusion(actual_labels,predicted_labels)title('Confusion%20Matrix:%20Inception%20v3');

%%20ROC%20Curvetest_labels=double(nominal(imdsTest.Labels));[fp_rate,tp_rate,T,AUC]=%20perfcurve(test_labels,posterior(:,2),2);figure;plot(fp_rate,tp_rate,'b-');hold%20on;grid%20on;xlabel('False%20Positive%20Rate');ylabel('Detection%20Rate');



类激活映射结果

使用以下代码,将不同%20DR%20病例经过这些网络处理后得到的类激活映射%20(CAM)%20结果可视化:www.mathworks.com/help/deeplearning/examples/investigate-network-predictions-using-class-activation-mapping.html。这有助于医生了解算法决策背后的依据。以下是不同病例的相应结果:%20


结论本文介绍了一种基于深度学习的简单分类方法,可用于视网膜影像%20DR%20的计算机辅助诊断%20(CAD)。在没有任何预处理的情况下,使用%20Inception-v3%20的分类算法表现相对出色,总体准确度为%2098.0%,AUC%20为%200.9947(结果可能会因随机拆分而异)。在这篇论文中,我们研究了各种现有%20CNN%20架构在不同预处理条件下用于同一组训练和测试用例集时的性能。综合各种架构的结果,将有助于从%20AUC%20和总体准确度两方面提高性能。如果能就计算量(内存和时间)和性能两方面综合研究这些算法,将有助于相关专家有所侧重地选择算法。此外,我们还在这篇论文中提出了%20DR%20检测和分级的创新架构方法。


辅助函数代码

按%20DR%20类别(Yes%20或No)进行数据分组的代码从网站下载%20ZIP%20文件并解压到名为%20train_images%20的文件夹中。确保下载的是包含临床专家提供的真值标签的%20Excel%20工作表%20train.csv,将其转换为%20.xlsx%20以用于此代码。我们从%20Excel%20工作表中提取标签,将这些影像分到"Yes"和"No"两个文件夹中,因为本文只关注%20DR%20的检测。

%%20Training%20Data%20pathdatapath='train_images\';%%20Two-class%20Data%20pathtwo_class_datapath='Train%20Dataset%20Two%20Classes\';%%20Class%20Namesclass_names={'No','Yes'};mkdir(sprintf('%s%s',two_class_datapath,class_names{1}))mkdir(sprintf('%s%s',two_class_datapath,class_names{2}))%%20Read%20the%20Excel%20Sheet%20with%20Labels[num_data,text_data]=xlsread('train.xlsx');%%20Determine%20the%20Labelstrain_labels=num_data(:,1);%%20Merge%20all%20labels%20marked%20into%20Mild,%20Medium,%20Severe%20and%20Proliferative%20DR%20%%20into%20a%20single%20category%20'Yes'%20train_labels(train_labels~=0)=2;%%20Rest%20of%20the%20dataset%20belongs%20to%20'No'%20categorytrain_labels(train_labels==0)=1;%%20Filenamefilename=text_data(2:end,1);%%20Now,%20write%20these%20images%202-folders%20'Yes'%20or%20'No'%20for%20us%20to%20develop%20a%20deep%%20learning%20architecture%20utilizing%20Deep%20learning%20toolbox%%20Determine%20the%20Files%20put%20them%20in%20separate%20folderfor%20idx=1:length(filename)%20%20%20%20%20%20%20%%20You%20could%20uncomment%20if%20you%20would%20like%20to%20see%20live%20progress%20%20%20%20%%20%20fprintf('Processing%20%d%20among%20%d%20files:%s%20\n',idx,length(filename),filename{idx})[/%]%20%20%20%20%20%20%20%20%%20Read%20the%20image%20%20%20%20current_filename=strrep(filename{idx},%20char(39),%20'');%20%20%20%20img=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

    无所不能的 MATLAB

    无所不能的 MATLAB 糖尿病性视网膜病变 (DR) 是导致失明的一大元凶,全世界有 9,300

    来源:中国自考网 2024-08-11
  • 实用工具~MATLAB的入门级攻略

    实用工具~MATLAB的入门级攻略

    大家在学校中大多接触过MATLB,那如果后续工作或者学习中需要进一步使用这个软件呢,下面就给大家一份

    来源:中国自考网 2024-08-11
  • 数据分析软件MATLAB

    数据分析软件MATLAB

    MathWorks MATLAB R2023b是一款强大的科学计算和数据分析软件,由MathWork

    来源:中国自考网 2024-08-11
  • MATLAB全套自学攻略,让你从入门到精通

    MATLAB全套自学攻略,让你从入门到精通

    MATLAB 即矩阵实验室,是由美国 Mathworks 公司发布的"面对科学计算、数据可视化、系统

    来源:中国自考网 2024-08-11
  • 什么是Matlab ?

    什么是Matlab ?

    Matlab 是一种编制电脑程序的语言,就如我们孰悉用的FORTRAN 程序语言,为什么它会被广泛接

    来源:中国自考网 2024-08-11
  • 学会MATLAB到底能做什么?

    学会MATLAB到底能做什么?

    MATLAB是Mathworks公司于1984年推出的一套高性能的数值计算的可视化软件,它集数值分析

    来源:中国自考网 2024-08-11
  • 每天都在用 Map,这些核心技术你知道吗?

    每天都在用 Map,这些核心技术你知道吗?

    作者:楼下小黑哥本篇文章站在多线程并发安全角度,带你了解多线程并发使用 HashMap 将会引发的问

    来源:中国自考网 2024-08-11
  • Map详解

    Map详解

    说一下 HashMap 的实现原理?HashMap概述: HashMap是基于哈希表的Map接口的非

    来源:中国自考网 2024-08-11
  • Go语言利器篇map

    Go语言利器篇map

    让我们继续向前,今天我们来看一下Go语言的map。一、map的声明在Golang中map的声明有几种

    来源:中国自考网 2024-08-11
  • Map考试扫盲帖,Map是什么,考什么,为什么考?怎么备考?

    Map考试扫盲帖,Map是什么,考什么,为什么考?怎么备考?

    每年新学期前的暑假,都会有不少妈妈找到老师咨询MAP考试的事情,有的是因为升入新的国际或者双语学校,

    来源:中国自考网 2024-08-11