深度学习

理解和使用深度学习网络

医学成像的深度学习:疟疾检测

本文来自Barath Narayanan戴顿大学研究所。
博士Barath Narayanan毕业于硕士和博士学位。戴顿大学电气工程学位(UD)分别为2013和2017。他目前被联合任命为联合研究科学家UDRI的软件系统集团并作为该学院的附属教员ECE部门在UD。他的研究兴趣包括深度学习、机器学习、计算机视觉和模式识别。
数据科学是当前计算机科学领域的热门话题之一。机器学习(ML)在各种应用中不断兴起,包括但不限于自动驾驶、制造业、医疗成像。计算机辅助检测(CAD)医学影像诊断一直是一个备受关注的研究领域。全世界有32亿人面临感染疟疾的风险(https://www.childfund.org/infographic/malaria/).检测和诊断工具为医生提供了有价值的第二意见,并在筛查过程中帮助他们。在这篇博客中,我们将使用MATLAB应用基于深度学习(DL)的技术来检测细胞图像上的疟疾。疟原虫是一种导致人类疟疾的寄生原生动物,在细胞图像上对疟原虫进行CAD将有助于显微镜工作者并加强他们的工作流程。
如果您正在使用代码的任何部分进行研究,请引用以下文章。
Barath Narayanan Narayanan,Redha阿里拉塞尔·c·难的“基于细胞图像的疟疾检测的机器学习和深度学习架构的性能分析”,Proc. SPIE 11139,机器学习的应用,111390W(2019年9月6日);https://doi.org/10.1117/12.2524681
疟疾数据集由美国国立卫生研究院(NIH)公开提供。该数据集包含27558张图像,分为两类(13779张属于寄生类,13799张属于未感染类)。所有这些图像都是由Mahidol牛津热带医学研究中心的专家幻灯片阅读器手动注释的。从网站下载ZIP文件并将其解压缩到名为“cell_images”的文件夹后,我们在“cell_images”中为每个类提供一个子文件夹。寄生表明存在疟原虫,疟原虫是一种寄生原生动物,表明存在疟疾。因为我们两个阶级的分布是平等的,所以这里不存在阶级不平衡的问题。

加载数据库

让我们从使用加载数据库开始 图像数据存储 .它是一个计算效率很高的函数,可以加载图像及其标签进行分析。
% Images Datapath -请相应地修改您的路径datapath公司=“cell_images”;%图像数据存储imd = imageDatastore (datapath公司,……“IncludeSubfolders”,真的,…“LabelSource”、“foldernames”);%确定拆分total_split = countEachLabel (imd)
总分割=2×2表
标签
1. 寄生 13779
2. 未受感染的 13779

可视化图像

让我们将图像可视化,看看每个类别的图像如何不同。这也将帮助我们确定可用于区分这两个类别的分类技术的类型。根据图像,我们可以确定有助于分类过程的预处理技术。我们还可以确定CNN arc的类型基于类内相似性和类间差异的可用于研究的体系结构。例如,如果我们看到一个简单的差异(比如区分三角形和正方形)在这两个类之间,我们可以使用具有最小层的简单CNN体系结构 在这篇文章中,我们强调迁移学习。
%图像数量num_images=长度(imds.Labels);%可视化随机图像20烫= randperm (num_images 20);图;idx = 1:20次要情节(4、5、idx);imshow (imread (imds.Files{烫发(idx)}));标题(sprintf (“%s”imds.Labels(烫(idx))))结束
你可以观察到,大多数被寄生的图像都含有一个“红点”,表明存在疟原虫。然而,也有一些图像难以区分。您可以深入数据集查看一些棘手的示例。此外,还有一系列的图像颜色,因为这些图像是用不同的显微镜以不同的分辨率拍摄的。我们将在下一节中通过预处理图像来解决这些问题。万博 尤文图斯

预处理

为了简化DL体系结构的分类过程,我们应用颜色恒常性技术来解决基于颜色的问题,并根据深度学习体系结构的要求将图像调整到所需的大小。我们的预处理功能附在本文末尾。
可视化预处理的图像
图;idx = 1:20次要情节(4、5、idx);imshow(preprocess_malaria_images(imds.Files{perm(idx)},[250 250])) title(sprintf('%s',imds.Labels(perm(idx)))) end . txt)
颜色稳定性有助于保持图像颜色的一致性,并有助于我们的分类算法。

培训、测试和验证

让我们将数据集分成训练、验证和测试。首先,我们将数据集分成80%(训练和验证)和20%(测试)两组。确保每个班级的人数相等。
%分割训练和测试数据集列车百分比=0.80;[imdsTrain,imdsTest]=拆分每个标签(imds,训练百分比,'randomize');%将培训和验证分开有效百分比=0.1;[imdsValid,imdsTrain]=splitEachLabel(imdsTrain,有效百分比,'randomize');列车分割=计数每个标签(imdsTrain);
这为我们提供了9921个序列图像、1102个验证图像和2756个测试图像,用于每种类别:寄生和未感染。

深度学习法

让我们采用迁移学习方法对细胞图像进行分类。在本文中,我使用AlexNet进行分类,您可以使用中提到的其他迁移学习方法或者您认为可能适合此应用程序的任何其他体系结构。
%负载AlexNetnet=alexnet;%传送除最后3层外的图层LayerTransfer=净层数(1:end-3);%清除现有的alexnet架构清楚净;%定义新图层numClasses=numel(类别(imdsTrain.Labels));%新层layers=[layertranstransfer fulllyconnectedlayer (numClasses,'WeightLearnRateFactor',20,'BiasLearnRateFactor',20) softmaxLayer classificationLayer];

预处理训练和验证数据集

或者,我们可以利用推荐的AugumenteImage数据存储用于更快地调整大小和变换/结合更改数据集。
imdsTrain.ReadFcn = @(文件名)preprocess_malaria_images(文件名,(层(1).InputSize(1)层(1).InputSize (2)));imdsValid.ReadFcn = @(文件名)preprocess_malaria_images(文件名,(层(1).InputSize(1)层(1).InputSize (2)));

培训网络

我们将使用4作为停止标准。首先,我们将使用“MaxEpochs”作为训练的10,我们可以根据训练进度进一步调整它。理想情况下,当培训过程停止时,我们希望验证性能较高。我们根据计算机的内存限制选择128个小批量,您可以选择更大的小批量,但请确保相应地更改其他参数。
选项=培训选项('adam','MiniBatchSize',128,'MaxEpochs',10,'Shuffle','every-epoch','InitialLearnRate',1e-4,'ValidationData',imdsValid,'ValidationFrequency',50,'ValidationPatience',4,'Verbose',false,'Plots','training-progress');%培训网络netTransfer=列车网络(imdsTrain、层、选项);
从培训进度来看,我们的模型没有不适合或过适合的问题,并且经过了良好的培训。训练和验证数据集的准确率约为96-97%。

测试

现在,让我们研究一下网络在测试集上的性能。
%预处理与培训类似的测试用例imdsTest.ReadFcn=@(文件名)预处理图像(文件名,[layers(1).InputSize(1),layers(1).InputSize(2)];%使用分类命令预测测试标签[预测标签,后]=分类(净转移,imdsTest);

性能研究

让我们用混淆矩阵来衡量我们算法的性能——这个指标也给出了精度、召回率方面的性能。我们认为总体准确度是一个很好的指标,因为本研究中使用的测试数据集是均匀分布的(就属于每个类别的图像而言)。
%实际标签actual_labels = imdsTest.Labels;%混淆矩阵图;绘图混淆(实际标签、预测标签)标题(“混淆矩阵:AlexNet”);

ROC曲线

ROC将根据假阳性率和检出率协助显微镜检查人员选择操作点。
测试标签=双(标称(imdsTest.标签));% ROC曲线-我们的目标类是这个场景中的第一个类。[fp_比率,tp_比率,T,AUC]=性能曲线(测试_标签,后(:,1),1);图形绘图(fp_比率、tp_比率、b-);等等网格化;xlabel(“假阳性率”);ylabel(‘检出率’);
%ROC值下的面积AUC
AUC=0.9917

检查演示在这里的某些测试用例!我们使用类激活映射来可视化结果,以便分析我们的网络所做的决定,并为微观学者提供见解。

结论

在这个博客中,我们为疟原虫CAD提供了一种简单的基于深度学习的分类方法。使用AlexNet的分类算法和使用颜色恒定性的预处理表现相对较好,总体准确率为96.4%,AUC为0.992(由于随机分割,值可能会有所不同)。在,我们研究了我们自己的简单CNN, AlexNet, ResNet, VGG-16和DenseNet对于同一套训练和测试用例的性能。迁移学习方法的性能清楚地重申了一个事实,即基于CNN的分类模型在提取特征方面是很好的。算法可以很容易地用新的标记图像集重新训练,以进一步提高性能。结合所有这些体系结构的结果,在AUC和总体精度方面都提高了性能。从计算(内存和时间)和性能两个方面对这些算法进行全面的研究,可以让主题专家根据自己的选择来选择算法。CAD将对疟疾筛查的显微镜工作者有很大的帮助,并将有助于提供有价值的第二意见。

预处理功能

函数Iout = preprocess_malaria_images(文件名,desired_size)%此函数使用颜色恒定性对疟疾图像进行预处理%技术,然后将其重塑为所需大小的图像%作者:巴拉斯·纳拉亚南%读取镜像I = imread(文件名);%某些图像可能是灰度的,复制图像3次%创建一个RGB图像。如果ismatrix(I)I=cat(3,I,I,I);结束%转换为双精度以便于计算我=双(I);%平均值计算Ir =我(::1);mu_red =意味着(Ir (:));Ig =我(:,:2);mu_green =意味着(Ig (:));Ib =我(:,:,3);mu_blue =意味着(Ib (:));mean_value = (mu_red + mu_green + mu_blue) / 3;%缩放图像以获得颜色恒定性Iout(:: 1) =我(:,:1)* mean_value / mu_red;Iout(:: 2) =我(:,:2)* mean_value / mu_green;Iout(:: 3) =我(:,:,3)* mean_value / mu_blue;%将它转换回uint8Iout=uint8(Iout);%调整图像大小Iout=imresize(Iout,[所需大小(1)所需大小(2)];终止
我想感谢Barath花时间写了这篇博文,并与我们分享了他的详细代码。特别感谢合著者Redha阿里,Russell C. Hardie博士,代顿大学。检查信号和图像处理实验室网页,以了解更多有关这个小组的工作。
|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。