人工智能

应用机器学习和深入学习

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

这篇文章来自Barath Narayanan代顿大学研究所。
博士。Barath Narayanan毕业于女士和代顿大学的电气工程博士学位(UD)分别于2013年和2017年。他目前持有共同被任命为助理研究员UDRI软件系统集团作为一个兼职教员的ECE部门在特拉华大学。他的研究兴趣包括深度学习、机器学习、计算机视觉和模式识别。
数据科学目前的计算机科学领域的热门话题。机器学习(ML)一直在上升为各种应用程序,包括但不限于自主驾驶、制造业、医疗成像。计算机辅助诊断(CAD)和诊断在医学成像研究领域引起极大的兴趣。32亿人感染疟疾的风险在世界各地(https://www.childfund.org/infographic/malaria/)。检测和诊断工具提供了一个宝贵的第二意见医生和筛选过程中帮助他们。在这个博客中,我们应用深度学习(DL)技术检测疟疾基于细胞使用MATLAB图像。疟原虫疟疾是一种寄生原生动物引起疟疾的疟原虫的人类和CAD细胞图像将协助显微镜化验员,提高他们的工作流程。
请引用下面这篇文章如果你使用代码的任何部分的研究。
Barath Narayanan Narayanan,Redha阿里,拉塞尔·c·难的“机器学习的性能分析和深度学习架构疟疾检测细胞图像”,Proc。相比11139年,应用机器学习,111390 w(2019年9月6日);https://doi.org/10.1117/12.2524681
疟疾数据集公开了美国国立卫生研究院(NIH)。这个数据集包含27558张图片属于两类属于寄生(13779和13799属于未感染)。这些图片都是手工注释由一个专家读者在牛津热带医学研究单位。后从该网站下载的ZIP文件并提取一个文件夹叫“cell_images”,我们有一子文件夹类“cell_images”。寄生的疟原虫的存在,这是一种寄生原生动物表明疟疾的存在。因为我们有相同分布的两类,没有类不平衡问题。

加载数据库

让我们首先加载数据库使用 imageDatastore 。这是一个计算效率函数加载图片连同它的标签进行分析。
%图像Datapath公司-请相应地修改路径datapath公司=“cell_images”;%的图像数据存储imd = imageDatastore (datapath公司,……“IncludeSubfolders”,真的,…“LabelSource”、“foldernames”);%确定分手total_split = countEachLabel (imd)
total_split =2×2表
标签
1 寄生 13779年
2 未受感染的 13779年

可视化图像

让我们想象图片,看看图片每个类而有所不同。它还将帮助我们确定分类技术可以应用的类型区分两类。根据图片,我们可以识别预处理技术,将协助我们的分类过程。我们还可以确定CNN的类型体系结构研究,可以利用基于类内的相似之处和差异在类。举例来说,如果我们看一个简单的区别(比如区分三角形和正方形)在两个类之间,我们可以使用一个简单的CNN架构以最少的层。我们提出了一个简单的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{烫发(idx)}, 250[250]))标题(sprintf (“% s”, imds.Labels(烫发(idx))))
颜色恒常性有助于保持一致性的颜色的图片,将帮助我们分类算法。

培训,测试和验证

我们将数据集分为训练、验证和测试。首先,我们把数据集分成组80%(培训&验证)和20%(测试)。确保将相等数量的每个类。
%的训练和测试数据集train_percent = 0.80;[imdsTrain, imdsTest] = splitEachLabel (imd, train_percent“随机”);%将培训和验证valid_percent = 0.1;[imdsValid, imdsTrain] = splitEachLabel (imdsTrain valid_percent,“随机”);train_split = countEachLabel (imdsTrain);
这给了我们9921训练图像,1102验证图片,和2756个测试图像为每个类别:感染和未感染。

深度学习的方法

我们采用转移学习方法对细胞图像进行分类。在这篇文章中,我利用AlexNet分类,你可以利用其他转移学习方法如前所述或任何其他建筑,你认为可能适合这个应用程序。
%负载AlexNet网= alexnet;%转移层除了过去的3层layersTransfer = net.Layers (1: end-3);%清除现有alexnet架构清楚净;%定义新层numClasses =元素个数(类别(imdsTrain.Labels));%的新层层= [layersTransfer fullyConnectedLayer (numClasses WeightLearnRateFactor, 20日BiasLearnRateFactor, 20) softmaxLayer classificationLayer);

预处理的培训和验证数据集

另外,我们可以利用建议augumentedImageDatastore为更快的调整和变换/结合改变数据集。
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基于我们的计算机的内存限制,你可以选择一个更大的迷你批大小但一定要相应改变其他参数。
选择= trainingOptions(“亚当”,…“MiniBatchSize”, 128年,…“MaxEpochs”10…“洗牌”、“every-epoch’,……“InitialLearnRate”, 1的军医,…ValidationData, imdsValid,……“ValidationFrequency”, 50岁,“ValidationPatience”, 4,……“详细”,假的,…“阴谋”,“训练进步”);%训练网络netTransfer = trainNetwork (imdsTrain层,选项);
看培训进展,我们的模型并不受到underfitting或过度拟合问题,是训练有素的。准确性训练和验证数据集约为96 - 97%。

测试

现在,让我们研究网络性能的测试集。
%预处理测试用例类似于培训imdsTest.ReadFcn = @(文件名)preprocess_malaria_images(文件名,(层(1).InputSize(1)层(1).InputSize (2)));%预测测试标签使用分类命令[predicted_labels,后]= (netTransfer imdsTest)进行分类;

性能研究

让我们测量的性能算法的混淆矩阵,这个指标也给了一个好主意的性能在精度方面,召回。我们认为整体精度是一个很好的指示器作为测试数据集用于这项研究分布均匀(属于每个类别的图像)。
%实际标签actual_labels = imdsTest.Labels;%混淆矩阵图;plotconfusion (actual_labels predicted_labels)标题(“混淆矩阵:AlexNet”);

ROC曲线

中华民国将协助显微镜工作者在选择他/她的操作点的假阳性检出率。
test_labels =双(名义(imdsTest.Labels));% ROC曲线——在这种情况下我们的目标类是第一节课。[fp_rate tp_rate T, AUC] = perfcurve (test_labels后(:1)1);图;情节(fp_rate tp_rate, ' b - ');坚持;网格;包含(“假阳性率”);ylabel(检出率);
%面积中华民国的价值AUC
AUC = 0.9917

检查演示在某些测试用例!我们可视化结果使用类激活映射为了分析决定由我们的网络和显微镜工作者提供见解。

结论

在这个博客中,我们提出了一个简单的基于深度学习分类方法对CAD的疟原虫。分类算法利用AlexNet和预处理使用颜色恒常性表现相对较好,总体精度96.4%和0.992的AUC值(受不同,因为随机分裂)。在的性能,我们研究了自己的简单的CNN, AlexNet, ResNet, VGG-16和DenseNet相同的训练集和测试用例。转移学习方法的性能显然重申这一事实CNN建立分类模型提取特征。算法可以很容易地培训与新标记的图像进一步提高性能。结合所有这些架构的结果提供了一个提高性能的AUC和整体精度。这些算法的全面研究,无论是计算(内存和时间)和性能提供了选择的主题专家根据他们的选择算法。CAD将是很大的帮助为疟疾显微镜专家筛选,将有助于提供一个有价值的第二意见。

预处理功能

函数Iout = preprocess_malaria_images(文件名,desired_size)%这个函数使用色彩恒常性疟疾图像进行预处理%的技术,后来重塑他们的形象所需的大小%作者:Barath Narayanan%读取图像I = imread(文件名);%的一些可能是灰度图像,复制图像的3倍%创建一个RGB图像。如果ismatrix(我)我=猫(3,我,我,我);结束%转换为计算双重目的我=双(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;回到uint8 %转换它Iout = uint8 (Iout);%调整图像Iout = imresize (Iout [desired_size (1) desired_size (2)));结束
我想感谢Barath时间把这篇文章放在一起,和我们一起分享他的详细的代码。特别感谢合著者Redha阿里,拉塞尔·c·哈迪博士代顿大学(UD)。检查信号和图像处理实验室网页,了解更多关于这个小组的工作。
|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。