人工智能

应用机器学习和深入学习

医学成像深度学习:COVID-19检测

我很高兴发表的另一篇文章Barath Narayanan,代顿大学研究所(UDRI),LinkedIn的资料
作者:博士。拉塞尔·c·难的代顿大学(UD)
博士。Barath Narayanan毕业于女士和代顿大学的电气工程博士学位(UD)分别于2013年和2017年。他目前持有联合被任命为一个研究科学家UDRI软件系统集团作为一个兼职教员的ECE部门在特拉华大学。他的研究兴趣包括深度学习、机器学习、计算机视觉和模式识别。
在这个博客中,我们应用深度学习(DL)技术检测COVID-19基于使用MATLAB胸片。

背景

冠状病毒病(COVID-19)是一种新型的疾病在人类在2019年发现,过去从来没有被确认。冠状病毒是一种大家庭的病毒导致的疾病的病人从普通感冒到先进的呼吸道症状如中东呼吸综合症(MERS-COV)和严重急性呼吸系统综合症(冠)。许多人正在影响和世界各地正在接受治疗引发全球大流行。仅在美国,1.6亿年到2.14亿年的人可能是感染的COVID-19流行(https://www.nytimes.com/2020/03/13/us/coronavirus-deaths-estimate.html)。一些国家已经宣布全国进入紧急状态,隔离数以百万计的人。这是一个详细的文章冠状病毒如何影响人:https://www.nytimes.com/article/coronavirus-body-symptoms.html
检测和诊断工具提供一个有价值的第二意见医生和筛选过程中帮助他们。这种类型的机制也将协助迅速向医生提供结果。在这个博客中,我们应用深度学习(DL)技术检测COVID-19基于使用MATLAB胸片。
COVID-19数据集利用在策划了这个博客约瑟夫·科恩博士蒙特利尔大学的博士后研究员。多亏了文章通过艾德里安博士Rosebrock让这胸部影像数据集可及研究人员在全球范围内,使用DL呈现初始工作。注意,我们仅利用x射线图像。你应该能够直接从本文下载的图片。后从该网站下载的ZIP文件并提取一个文件夹叫“Covid 19日”,我们有一子文件夹类“数据集”。标签“Covid”表示存在COVID-19病人和“正常”。以来,我们平均分配(25图像)两类,没有类不平衡问题。

加载数据集

让我们首先加载数据库使用imageDatastore。它是一种计算有效的函数加载图片连同它的标签进行分析。
%明显工作区清晰;关闭所有;clc;%图像Datapath公司-请相应地修改路径datapath公司=“数据集”;%的图像数据存储imd = imageDatastore (datapath公司,……“IncludeSubfolders”,真的,…“LabelSource”、“foldernames”);%确定分手total_split = countEachLabel (imd)

可视化图像

让我们想象图片,看看图片每个类而有所不同。它还将帮助我们确定分类技术可以应用的类型区分两类。根据图片,我们可以识别预处理技术,将协助我们的分类过程。我们还可以确定CNN的类型体系结构研究,可以利用基于类内的相似之处和差异在类。
%的图片num_images =长度(imds.Labels);%可视化随机图像烫= randperm (num_images 6);图;idx = 1:长度(烫)次要情节(2、3、idx);imshow (imread (imds.Files{烫发(idx)}));标题(sprintf (“% s”, imds.Labels(烫发(idx))))
为了缓解DL的分类过程架构,我们应用简单的预处理技术和本文函数是封闭的。

K-fold验证

正如你已经知道,有一组有限的图片在这个数据集,我们把数据集分割成10倍进行分析即10个不同算法使用不同的训练数据集的照片。这种类型的验证研究将为我们提供一个更好的估计性能的比较典型的抵抗验证方法。
我们采用ResNet-50架构在这个博客已经被证明是非常有效的各种医学成像应用[1,2]。
%的折叠num_folds = 10;%为每个折叠循环fold_idx = 1: num_folds流('处理% d % d折叠\ n”之间,fold_idx, num_folds);%测试指标目前的褶皱test_idx = fold_idx: num_folds: num_images;%测试用例为当前的褶皱test_idx imdsTest =子集(imd);%火车指数当前的褶皱train_idx = setdiff(1:长度(imds.Files) test_idx);%训练情况下当前的褶皱train_idx imdsTrain =子集(imd);% ResNet架构网= resnet50;lgraph = layerGraph(净);清楚净;%的类别numClasses =元素个数(类别(imdsTrain.Labels));%的新可学的层newLearnableLayer = fullyConnectedLayer (numClasses,……“名称”、“new_fc’,……“WeightLearnRateFactor”10…“BiasLearnRateFactor”, 10);%取代最后一层的新层lgraph = replaceLayer (lgraph fc1000, newLearnableLayer);newsoftmaxLayer = softmaxLayer(“名字”,“new_softmax”);lgraph = replaceLayer (lgraph fc1000_softmax, newsoftmaxLayer);newClassLayer = classificationLayer(“名字”,“new_classoutput”);lgraph = replaceLayer (lgraph ClassificationLayer_fc1000, newClassLayer);%的预处理技术imdsTrain。ReadFcn = @(文件名)preprocess_Xray(文件名);imdsTest。ReadFcn = @(文件名)preprocess_Xray(文件名);%训练选项,我们选择一个小mini-batch大小由于有限的图像选择= trainingOptions(“亚当”,…‘MiniBatchSize MaxEpochs, 30日,8日……“洗牌”、“every-epoch’,……“InitialLearnRate”, 1的军医,…“详细”,假的,…“阴谋”,“训练进步”);%数据增强增量= imageDataAugmenter (…“RandRotation”, 5 [5],“RandXReflection”, 1,…RandYReflection, 1,“RandXShear”, [-0.05 - 0.05],“RandYShear”, [-0.05 - 0.05]);%调整所有训练图像为ResNet架构(224 224)auimds = augmentedImageDatastore ((224 224)、imdsTrain DataAugmentation,增压器);%的培训netTransfer = trainNetwork (auimds、lgraph选项);%调整所有的测试图像为ResNet架构(224 224)augtestimds = augmentedImageDatastore ([224 - 224], imdsTest);%测试和相应的标签和后针对每种情况[predicted_labels test_idx)、后(test_idx:)) = (netTransfer augtestimds)进行分类;%保存独立ResNet架构获得每个褶皱保存(sprintf (ResNet50_ % d_among_ % d_folds, fold_idx, num_folds),‘netTransfer’,‘test_idx’,‘train_idx’);%清除不必要的变量刚fold_idx clearvars num_folds num_images predicted_labels后imd netTransfer;结束

每个折叠将显示一个训练情节而训练,为简便起见,这只是显示最后的培训策划,褶皱10的10。

性能研究

让我们测量的性能算法的混淆矩阵,这个指标也给了一个好主意的性能方面的精度和召回。我们认为整体精度是一个很好的指示器作为测试数据集用于这项研究均匀分布(用图片属于每个类别)。
混淆矩阵
%实际标签actual_labels = imds.Labels;%混淆矩阵图;plotconfusion (actual_labels predicted_labels”)标题(“混淆矩阵:ResNet”);
ROC曲线
中华民国将协助医生在选择他们的操作点的假阳性检出率。
test_labels =双(名义(imds.Labels));% ROC曲线——在这种情况下我们的目标类是第一节课[fp_rate tp_rate T, AUC] = perfcurve (test_labels后(:1)1);图;情节(fp_rate tp_rate, ' b - ');网格;包含(“假阳性率”);ylabel(检出率);
% ROC曲线下的面积值AUC

类活动映射

我们可视化类激活映射(CAM)的结果为不同COVID-19情况下使用这些网络代码://www.tatmou.com/help/deeplearning/examples/investigate-network-predictions-using-class-activation-mapping.html。这将有助于提供见解医生的决定背后的算法。
这里有各种情况下的结果:

测试在其他公开的数据集

研究和分析算法的性能进一步,我们确定的概率COVID-19其他公开数据集没有任何COVID-19标签。我们利用情况下标记为正常,细菌性肺炎或病毒性肺炎的放射科医生在[2]。提到的,每个网络训练从COVID-19一组不同的图像数据集。任何图像covid后值大于0.5被认为是假阳性(FP)。结果清楚地表明,我们的算法的特异性和灵敏度高。每个测试用例的时间几乎是单核GPU 13毫秒。

结论

在这个博客中,我们提出了一个简单的基于深度学习COVID-19 CAD的分类方法。分类算法使用ResNet整体精度高和AUC表现相对较好。传输性能的学习方法明确重申,CNN建立分类模型提取特征。算法可以很容易地培训与新标记的图像进一步提高性能。将这些结果与其他现有架构将提高性能的AUC和整体的精度。这些算法的全面研究,无论是计算(内存和时间)和性能提供了选择的主题专家根据他们的选择算法。CAD是伟大的医生的帮助COVID-19筛查和将帮助提供一个有价值的第二意见。

引用

[1]Narayanan, b . N。De Silva m . S。难的,r . C。,Kueterman, N. K., & Ali, R. (2019). "Understanding Deep Neural Network Predictions for Medical Imaging Applications". arXiv preprint arXiv:1912.09621.
[2]Narayanan, b . N。、Davuluru v . s . P。,& Hardie, R. C. (2020, March). "Two-stage deep learning architecture for pneumonia detection and its diagnosis in chest radiographs". In Medical Imaging 2020: Imaging Informatics for Healthcare, Research, and Applications (Vol. 11318, p. 113180G). International Society for Optics and Photonics.

预处理功能

函数Iout = preprocess_Xray(文件名)%这个函数将它转化为给定的x射线图像进行预处理%如果需要灰度和适应三路后转换成图像%现有深度学习架构%%作者:Barath Narayanan%日期:3/17/2020%读取文件名I = imread(文件名);%一些可能RGB图像,将其转换成灰度如果~ ismatrix(我)我= rgb2gray(我);结束%复制图像3 *创建一个RGB图像Iout =猫(3,我,我,我);结束
你有什么问题对Barath这篇文章吗?请在下面留下你的评论
|
  • 打印
  • 发送电子邮件

评论

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