<医学成像深度学习:…<前一 回顾2019年>下一个> 使用深度学习场景分类 发布的Johanna Pingel,2019年11月25日 (30天)| 116年视图0喜欢|0评论 这是一篇文章总局品牌博士和能力的工程和计算机科学教授,当然MathWorks博客帖子出名图像增强。他回来讨论场景分类,以极大的代码让你试一试。你也可以在Twitter上关注他(@ProfessorOge) 自动场景分类(有时称为场景 识别,或场景 分析)是一个长期存在的研究问题在计算机视觉中,由分配一个标签如“海滩”、“卧室”,或者仅仅是“室内”或“户外”到一个图像作为输入,根据图像的整体内容。在这篇文章中,我将向您展示如何设计和实现一个计算机视觉解决方案,可以将一幅图像的一个场景类别(浴室,厨房,阁楼,或卧室室内;种秣草地,海滩,操场上,或森林户外)(图1)使用深层神经网络。 森林 卧室 厨房 种秣草地 阁楼 海滩 操场上 浴室 图1:图像的例子从麻省理工学院地方数据集[1]与相应的类别。首先让我指导你通过人类和场景识别的基本知识的历史场景使用计算机视觉识别。 场景识别人类为了讨论,让我们使用一个工作的定义场景“的观点真实的环境包含多个表面和对象,在一个组织有意义的方式。”[2]人类有能力识别和分类的场景在十分之一秒或更少,由于我们捕捉的能力要点的场景,尽管这通常意味着错过它的许多细节[3]。例如,我们可以告诉的形象浴室从一个的卧室快,但会目瞪口呆如果问(后图像不再是可见的)场景的细节(例如,床头柜上有多少/汇你看到了什么?) 场景识别在计算机视觉,之前和之后的深入学习深度学习之前,早期的努力包括计算模型的设计和实现整体场景识别的基于低维表示,称为它的空间信封 [3]。这也给了我们获得重要的数据集(例如Places365 [1]),它已经成功的至关重要的深度学习在场景识别研究。的训练集Places365-Standard从365 ~ 180万图像场景类别,每个类别多达5000张照片。深度学习的使用,特别是卷积神经网络(cnn),场景分类已经收到了从计算机视觉界的重视[4]。几个基线cnn pretrained上Places365-Standard数据集在https://github.com/CSAILVision/places365。 场景识别在MATLAB中使用深度学习接下来,我要介绍如何实现一个场景分类解决方案使用麻省理工学院地方数据集的一个子集[1],Places365GoogLeNet pretrained模型(5、6)。最大化的学习经验,我们将构建,培训,评估不同的cnn和比较结果。在第1部分中,我们将构建一个简单的CNN从头开始,训练它,并评估它。在“第2部分”中,我们将使用pretrained模型,Places365GoogLeNet,“是”。在第3部分,我们遵循转移学习方法,演示了一些最新的特性和最佳实践使用转移学习MATLAB的图像分类。最后,在“4”部分,我们采用图像数据增强技术是否导致更好的结果。 数据准备 我们建立一个ImageDatastore组成的八个文件夹(对应于八类:“阁楼”,“浴室”,“海滩”,“卧室”,“森林”,“干草地”,“厨房”,和“操场”)与1000图片。 我们将数据分为训练(70%)和验证(30%)。 我们创建一个augmentedImageDatastore处理图像缩放,指定训练图像和输出图像的大小,必须兼容所期望的大小的神经网络输入层。这是更加优雅和效率比运行批处理图像缩放(并保存缩放图片回磁盘)。 创建图像数据存储imd = imageDatastore (fullfile (“MITPlaces”),…IncludeSubfolders,没错,‘FileExtensions’,‘jpg’,‘LabelSource’,‘foldernames’);计算每个标签的图片数量和保存类的数量labelCount = countEachLabel (imd);numClasses =身高(labelCount);建立训练集和验证集[imdsTraining, imdsValidation] = splitEachLabel (imd, 0.7);使用图像数据增强处理调整原始图像是256 - 256。这个示例中使用的输入层cnn预计224 -,- 224。inputSize = (224224 3);augimdsTraining = augmentedImageDatastore (inputSize (1:2), imdsTraining);augimdsValidation = augmentedImageDatastore (inputSize (1:2), imdsValidation); 模型发展——第1部分(从头开始构建和训练一个CNN)我们从头开始构建一个简单的CNN(图3),指定其训练选项,训练它,并评估它。定义层层= [imageInputLayer ([224 224 3]) convolution2dLayer(3 16“填充”,1)batchNormalizationLayer reluLayer maxPooling2dLayer(2“大步”2)convolution2dLayer(3, 32岁的“填充”,1)batchNormalizationLayer reluLayer maxPooling2dLayer(2“大步”2)convolution2dLayer(64,“填充”,1)batchNormalizationLayer reluLayer fullyConnectedLayer (8) softmaxLayer classificationLayer);指定培训选项选择= trainingOptions(“个”,…“MaxEpochs”, 30岁的……ValidationData, augimdsValidation,……“ValidationFrequency”, 50岁,…“InitialLearnRate”, 0.0003,…“详细”,假的,…“阴谋”,“训练进步”);列车网络的baselineCNN = trainNetwork (augimdsTraining层,选项);分类和计算精度predictedLabels =分类(baselineCNN augimdsValidation);valLabels = imdsValidation.Labels;baselineCNNAccuracy = (predictedLabels = = valLabels) /元素个数之和(valLabels); 图3:一个基线CNN用于“第1部分”。 图4:学习曲线的基线CNN。注意过度拟合的迹象:训练数据的准确度和损失精益求精的但已经被夷为平地的验证数据集。意料之中的是,网络的准确性是温和(~ 60%)遭受过度拟合(图4)。 模型发展——第2部分(使用pretrained模型、Places365GoogLeNet“是”)我们使用一个pretrained模型,Places365GoogLeNet“是”。自模型已被训练为365 -类分类器,其性能将是次优(验证准确性~ 53%),部分原因情况下,模型预测相关的/更具体的类别以更大的信心比8的类别选择这个练习(图5)。负载pretrained Places365GoogLeNet,下载并安装的深度学习工具箱模型GoogLeNet网络支持包。金宝app看到//www.tatmou.com/help/deeplearning/ref/googlenet.html的指令。places365Net = googlenet(“权重”,“places365”);分类和计算精度YPred =分类(places365Net augimdsValidation);YValidation = imdsValidation.Labels;places365NetAccuracy = (YPred = = YValidation) /元素个数之和(YValidation); 图5:使用pre-trained CNN“是”:分类预测所导致的错误的例子类似的(或更具体的)类。 模型开发-第3部分(转移学习)现在我们将遵循一个原则转移学习的方法。我们首先定位最后可学的层和分类层使用layerGraph和findLayersToReplace。 lgraph = layerGraph (places365Net);[learnableLayer, classLayer] = findLayersToReplace (lgraph);[learnableLayer, classLayer]接下来,我们用适当的等效层(以下的例子[7]),更新网络的图有两个调用replaceLayer,同时冻结(即初始层。,setting the learning rates in those layers to zero) using freezeWeights: freezing the weights of the initial layers can significantly speed up network training and, since our new dataset is small, can also prevent those layers from overfitting to the new dataset.[7] newLayer = fullyConnectedLayer (numClasses,……“名称”、“new_fc’,……“WeightLearnRateFactor”10…“BiasLearnRateFactor”, 10);lgraph = replaceLayer (lgraph learnableLayer.Name newLayer);newClassLayer = classificationLayer(“名字”,“new_classoutput”);lgraph = replaceLayer (lgraph classLayer.Name newClassLayer);%初始冻结层层= lgraph.Layers;连接= lgraph.Connections;层(1:10)= freezeWeights(层(1:10));lgraph = createLgraphUsingConnections(层,连接);然后我们培训网络和评估的分类精度验证设置:~ 95%。由此产生的混淆矩阵(图6)给了我们额外的见解的类别分类错误的更频繁的模式——在这种情况下,浴室场景分为厨房(18实例)和卧室场景贴上阁楼(12例)。图6:场景分类混淆矩阵的解决方案使用pretrained模型,在转移学习Places365GoogLeNet和最佳实践。在检查分类错误的一些图片,你可以看到他们从错误的标签,结果模棱两可的场景,和“non-iconic”图像[8](图7)。 图7:从接受再培训,Places365GoogLeNet分类错误的例子,由于(分别从左到右):不正确的标签,模棱两可的场景(一个卧室在阁楼上),和“non-iconic”图像。 模型开发-第4部分(数据扩充)我们雇佣数据增加(详细介绍在我以前的文章 [9])指定另一个 augmentedImageDatastore(它使用图像可能随机处理左右翻转,翻译,和缩放)的数据源trainNetwork函数。产生的分类准确性和混淆矩阵是几乎相同的增加没有获得的数据,也不应该感到惊讶,因为我们的分析的分类错误(比如那些显示在图7)表明,偶尔的原因我们的模型的预测是不正确的(错误的标签,模棱两可的场景,和“non-iconic”图片)不减轻通过提供额外的变化(缩放、翻转、翻译)的每个图像模型在训练。这是加强Andrew Ng的建议投资时间在执行人为错误分析和制表错误背后的原因在机器学习解决方案之前决定的最好方法去改善它[10]。完整的代码和图像可用MATLAB文件交换[11]。你可以使用不同的适应pretrained cnn,数据集,和/或模型参数和hyperparameters。如果你这样做,让我们在评论部分的报告告诉我们你所做的和它如何运作。总而言之,这篇文章展示了如何使用MATLAB和深层神经网络对图像进行场景分类从公开的数据集。下面的参考资料提供的链接材料来了解更多细节。 引用 [1]b, A . Lapedriza斯拉,A·奥利瓦和A . Torralba”的地方:1000万图像数据库场景识别”,IEEE模式分析与机器智能,2017。http://places2.csail.mit.edu/ [2]a·奥利瓦“视觉场景知觉”,http://olivalab.mit.edu/Papers/VisualScenePerception-EncycloPerception-Sage-Oliva2009.pdf [3]a·奥利瓦和a . Torralba (2001)。“建模场景的形状:空间信封”的整体表示,国际期刊《计算机视觉,42卷(3):145 - 175。纸张、数据集和MATLAB代码可以在:http://people.csail.mit.edu/torralba/code/spatialenvelope/ [4]b, a . Lapedriza j ., a . Torralba和a·奥利瓦,“学习深功能场景识别使用数据库的地方,“少量的2014 [5]MathWorks。“googlenet: Pretrained googlenet卷积神经网络”。//www.tatmou.com/help/deeplearning/ref/googlenet.html [6]MathWorks。Pretrained Places365GoogLeNet卷积神经网络(代码)//www.tatmou.com/matlabcentral/fileexchange/70987-deep-learning-toolboxtm-model-for-places365-googlenet-network [7]MathWorks。“火车深学习网络分类新形象”。//www.tatmou.com/help/deeplearning/examples/train-deep-learning-network-to-classify-new-images.html 林[8],Tsung-Yi, et al。“微软可可:常见的对象上下文”。欧洲an conference on computer vision. Springer, Cham, 2014. [9]o .品牌,“数据增强图像分类使用深度学习的应用程序”,https://blogs.mathworks.com/deep-learning/2019/08/22/data-augmentation-for-image-classification-applications-using-deep-learning/ [10]a Ng,“机器学习”的向往https://www.deeplearning.ai/machine-learning-yearning/ [11]总局品牌(2019)。场景分类使用深度学习(//www.tatmou.com/matlabcentral/fileexchange/73333-scene-classification-using-deep-learning),MATLAB中央文件交换。 | 你现在下面这篇博客 你将看到在你更新活动提要。 你可以接收电子邮件,取决于你通知偏好。 类别: 深度学习 <医学成像深度学习:…<前一 回顾2019年>下一个> 另请参阅 深度学习的图像分类 博客 深入学习网络分析仪 博客 使用深度学习数据增强图像分类应用程序 博客 学习使用Pretrained网络传输 深度学习ToolboxTM Places365-GoogLeNet网络模型 火车深入学习网络对新图像进行分类 评论 留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。