主要内容

alexnet

AlexNet卷积神经网络

  • AlexNet网络体系结构

描述

AlexNet卷积神经网络,是8层深。你可以加载一个pretrained版本的网络训练图像从ImageNet数据库超过一百万[1]。pretrained网络可以分类图像到1000年对象类别,如键盘,鼠标,铅笔,和许多动物。因此,网络学习丰富广泛的图像特征表示。的网络图像输入大小227 - 227。在MATLAB pretrained网络®,请参阅Pretrained深层神经网络

您可以使用分类对新的图像使用AlexNet网络进行分类。遵循的步骤分类图像使用GoogLeNet和替换GoogLeNet AlexNet。

自由实践介绍实际深度学习方法,明白了深度学习斜坡弯道

例子

= alexnet返回一个在ImageNet AlexNet网络训练数据集。

这个函数需要深度学习工具箱™模型AlexNet网络金宝app支持包。如果这种支持包没金宝app有安装,功能提供了一个下载链接。另外,看到深度学习工具箱模型AlexNet网络

在MATLAB pretrained网络,看到的Pretrained深层神经网络

= alexnet(“权重”,“imagenet”)返回一个在ImageNet AlexNet网络训练数据集。这相当于语法网= alexnet

= alexnet(“权重”,“没有”)返回未经训练的AlexNet网络体系结构。未经训练的模型不需要支持包。金宝app

例子

全部折叠

下载并安装深度学习工具箱模型AlexNet网络金宝app支持包。

类型alexnet在命令行中。

alexnet

如果深入学习工具箱模型AlexNet网络金宝app支持包没有安装,那么函数提供了一个链接到需要在插件浏览器支持包。安装支持包,单击该链接,然后单金宝app击安装。通过输入检查安装是否成功alexnet在命令行中。

alexnet
ans = SeriesNetwork属性:层:[25×1 nnet.cnn.layer.Layer]

如果所需的支持包安装,那么函数返金宝app回SeriesNetwork对象。

可视化网络使用深层网络设计师。

deepNetworkDesigner (alexnet)

探索其他pretrained网络深陷网络设计师通过点击

深层网络设计师开始页面显示可用pretrained网络

如果你需要下载一个网络,点击所需的网络和暂停安装打开插件浏览器。

这个例子显示了如何调整pretrained AlexNet卷积神经网络进行分类的新图片的集合。

AlexNet已经在超过一百万个图像和训练可以分类图像到1000年对象类别(如键盘、咖啡杯、铅笔,和许多动物)。网络已经学会丰富广泛的图像特征表示。网络需要一个图像作为输入和输出图像中对象的标签一起为每个对象的类别的概率。

在深度学习应用程序转移学习是常用的。pretrained网络,可以使用它作为一个起点,学习一个新任务。微调网络转移学习通常比训练一个网络快得多,也更容易与随机初始化权重从零开始。您可以快速学习功能转移到一个新的任务使用较少的训练图像。

加载数据

解压缩和加载新的图像作为图像数据存储。imageDatastore自动标签图像基于文件夹的名字和存储数据作为ImageDatastore对象。图像数据存储可以存储大量图像数据,包括数据,并不适合在内存中,有效地阅读批图像卷积神经网络在训练。

解压缩(“MerchData.zip”);imd = imageDatastore (“MerchData”,“IncludeSubfolders”,真的,“LabelSource”,“foldernames”);

将数据分为训练和验证数据集。使用70%的图片,培训为30%,验证。splitEachLabel分裂的图片数据存储到两个新的数据存储。

[imdsTrain, imdsValidation] = splitEachLabel (imd, 0.7,“随机”);

这个非常小的数据集包含55训练图像和20验证图像。显示一些示例图像。

numTrainImages =元素个数(imdsTrain.Labels);idx = randperm (numTrainImages 16);图i = 1:16次要情节(4 4 i) i = readimage (imdsTrain idx (i));imshow(我)结束

负载Pretrained网络

加载pretrained AlexNet神经网络。如果深入学习工具箱™模型AlexNet网络没有安装,那么软件提供一个下载链接。AlexNet培训超过一百万张图片,可以分类图像到1000年对象类别,如键盘,鼠标,铅笔,和许多动物。结果,模型已经学会丰富广泛的图像特征表示。

网= alexnet;

使用analyzeNetwork显示一个交互式可视化的网络体系结构和网络层的详细信息。

analyzeNetwork(净)

图像输入层,第一层要求输入的图像大小227 - 227 - 3,3是颜色通道的数量。

.InputSize inputSize = net.Layers (1)
inputSize =1×3227 227 3

取代最后一层

的最后三层pretrained网络配置为1000类。这些三层必须调整为新分类问题。提取所有层,除了最后三,从pretrained网络。

layersTransfer = net.Layers (1: end-3);

层转移到新的分类任务代替最后三层完全连接层,softmax层和输出层分类。指定的选项完全连接层根据新的数据。设置完全连接层相同的大小在新数据类的数量。更快地学习在新的层比传输层,增加WeightLearnRateFactorBiasLearnRateFactor完全连接层的值。

numClasses =元素个数(类别(imdsTrain.Labels))
numClasses = 5
层= [layersTransfer fullyConnectedLayer (numClasses“WeightLearnRateFactor”,20岁,“BiasLearnRateFactor”,20)softmaxLayer classificationLayer];

列车网络的

网络需要输入的图像大小227 - 227 - 3,但图像的图像数据存储有不同的大小。使用一个增强图像数据存储图像自动调整训练。指定额外增加操作执行培训图片:随机翻转训练图像沿垂直轴,,随便翻译一下30像素水平和垂直。数据增加有助于防止网络过度拟合和记忆的训练图像的细节。

pixelRange = 30 [-30];imageAugmenter = imageDataAugmenter (“RandXReflection”,真的,“RandXTranslation”pixelRange,“RandYTranslation”,pixelRange);augimdsTrain = augmentedImageDatastore (inputSize (1:2), imdsTrain,“DataAugmentation”,imageAugmenter);

自动调整验证图像不执行进一步的数据,使用一个增强的图像数据存储不指定任何额外的预处理操作。

augimdsValidation = augmentedImageDatastore (inputSize (1:2), imdsValidation);

指定培训选项。转移学习,防止功能的早期层pretrained网络(传输层的重量)。放慢学习的传输层,设置初始学习速率小值。在前面的步骤中,您增加了学习速率因子完全连接层加快学习在新的最后一层。这种组合的学习速率设置导致快速学习只有在新的层和慢学习其他层。当执行转移学习,你不需要训练尽可能多的时代。一个时代是一个完整的培训周期在整个训练数据集。指定mini-batch大小和验证数据。软件验证网络的每一个ValidationFrequency迭代在训练。

选择= trainingOptions (“个”,“MiniBatchSize”10“MaxEpochs”6“InitialLearnRate”1的军医,“洗牌”,“every-epoch”,“ValidationData”augimdsValidation,“ValidationFrequency”3,“详细”假的,“阴谋”,“训练进步”);

训练网络,包括转移和新层。默认情况下,trainNetwork使用GPU如果是可用的,否则,它使用一个CPU。培训在GPU需要并行计算工具箱™和支持GPU设备。金宝app支持设备的信息,请参阅金宝appGPU的金宝app支持版本(并行计算工具箱)。您还可以指定使用的执行环境“ExecutionEnvironment”名称-值对的观点trainingOptions

netTransfer = trainNetwork (augimdsTrain层,选项);

验证图像进行分类

使用调整网络验证图像进行分类。

[YPred,分数]= (netTransfer augimdsValidation)进行分类;

显示四个样本验证图像预测标签。

idx = randperm(元素个数(imdsValidation.Files), 4);图i = 1:4次要情节(2,2,我)我= readimage (imdsValidation idx (i));imshow(我)标签= YPred (idx (I));标题(字符串(标签));结束

计算上的分类精度验证集。精度是标签的一部分网络预测正确。

YValidation = imdsValidation.Labels;精度=意味着(YPred = = YValidation)
精度= 1

在提高分类精度的建议,见深度学习技巧和窍门

读取、调整和使用AlexNet分类图像。首先,加载一个pretrained AlexNet模型。

网= alexnet;

读取图像使用imread

我= imread (“peppers.png”);图imshow(我)

pretrained模型要求图像大小相同的输入网络的大小。确定网络的输入大小使用InputSize网络的第一层的属性。

深圳= net.Layers (1) .InputSize
深圳=1×3227 227 3

调整图像的输入规模网络。

I = imresize(我,深圳(1:2));图imshow(我)

图像分类使用分类

标签=分类(净,我)
标签=分类甜椒

显示图像和分类结果。

图imshow(我)标题(标签)

这个例子展示了如何提取图像特征认识从pretrained卷积神经网络,训练一个图像分类器,并使用这些特性。特征提取是最简单和最快的方式使用pretrained深层网络的表征能力。例如,您可以使用训练支持向量机(SVM)金宝appfitcecoc(统计和机器学习的工具箱™)提取的特征。因为特征提取只需要一个通过数据,这是一个很好的起点,如果你没有一个GPU加速网络训练。

加载数据

解压缩和加载示例图像作为图像数据存储。imageDatastore自动标签图像基于文件夹的名字和存储数据作为ImageDatastore对象。图像数据存储可以存储大量图像数据,包括数据,并不适合在内存中。把数据分成70%的训练,30%测试数据。

解压缩(“MerchData.zip”);imd = imageDatastore (“MerchData”,“IncludeSubfolders”,真的,“LabelSource”,“foldernames”);[imdsTrain, imdsTest] = splitEachLabel (imd, 0.7,“随机”);

现在55训练图像和20验证图像在这个非常小的数据集。显示一些示例图像。

numImagesTrain =元素个数(imdsTrain.Labels);idx = randperm (numImagesTrain 16);我= 1:16我{}= readimage (imdsTrain idx (i));结束图imshow (imtile(我))

负载Pretrained网络

加载一个pretrained AlexNet网络。如果深度学习工具箱模型AlexNet网络金宝app支持包没有安装,那么软件提供一个下载链接。AlexNet培训超过一百万张图片,可以分类图像到1000年对象类别。例如,键盘、鼠标、铅笔,和许多动物。结果,模型已经学会丰富广泛的图像特征表示。

网= alexnet;

显示网络体系结构。网络有五个卷积层和三个完全连接层。

net.Layers
ans x1 = 25层阵列层:227 x227x3图像数据的图像输入“zerocenter”正常化2 conv1卷积96年11 x11x3旋转步[4 4]和填充[0 0 0 0]3‘relu1 ReLU ReLU 4 norm1的横通道正常化横通道正常化与5频道/元素5“pool1”马克斯池3 x3马克斯池步(2 - 2)和填充[0 0 0 0]6“conv2”分组卷积2组128 5 x5x48旋转步[1]和填充(2 2 2 2)7的relu2 ReLU ReLU 8 norm2的横通道正常化横通道正常化与5频道/元素9“pool2”马克斯池3 x3马克斯池步(2 - 2)和填充[0 0 0 0]384 3 x3x256 conv3的卷积运算与步幅[1]和填充[1 1 1 1]11的relu3 ReLU ReLU 12“conv4”分组卷积2组192 3 x3x192旋转步[1]和填充[1 1 1 1]13的relu4 ReLU ReLU 14“conv5”分组卷积2组128 3 x3x192旋转步[1]和填充[1 1 1 1]15 ' relu5 ReLU ReLU 16“pool5”马克斯池3 x3 Max池步(2 - 2)和填充[0 0 0 0]17 fc6完全连接4096完全连接层18“relu6”ReLU ReLU 19“drop6”辍学50%辍学20“fc7”完全连接4096完全连接层21 ' relu7 ReLU ReLU 22“drop7”辍学50%辍学23 fc8完全连接1000完全连接层24“概率”Softmax Softmax 25“输出”分类输出crossentropyex“鲤鱼”和999其他的类

图像输入层,第一层要求输入的图像大小227 - 227 - 3,3是颜色通道的数量。

.InputSize inputSize = net.Layers (1)
inputSize =1×3227 227 3

提取图像特征

网络结构的层次化表示输入图像。深层包含高级特性,构造使用前面的低层特征层。的训练和测试的特征表示图像,使用激活完全连接层“fc7”。图像的低层表示,网络中使用早期层。

网络需要输入的图像大小227 - 227 - 3,但图像的图像数据存储有不同的大小。自动调整训练和测试图像输入到网络之前,创建增强图像数据存储,指定所需的图像大小,和使用这些数据存储作为输入参数激活

augimdsTrain = augmentedImageDatastore (inputSize (1:2), imdsTrain);augimdsTest = augmentedImageDatastore (inputSize (1:2), imdsTest);层=“fc7”;featuresTrain =激活(净、augimdsTrain层,“OutputAs”,“行”);featuresTest =激活(净、augimdsTest层,“OutputAs”,“行”);

提取类标签的训练和测试数据。

YTrain = imdsTrain.Labels;欧美= imdsTest.Labels;

适合图像分类器

使用从训练图像提取的特征作为预测变量和适应多类支持向量机(SVM)使用金宝appfitcecoc(统计和机器学习的工具箱)。

mdl = fitcecoc (featuresTrain YTrain);

测试图像进行分类

使用训练SVM模型分类测试图像和测试图像的特征提取。

featuresTest YPred =预测(mdl);

显示四个样品的测试图像与他们预测标签。

idx = [1 5 10 15];图i = 1:元素个数(idx)次要情节(2,2,我)我= readimage (imdsTest idx (i));标签= YPred (idx (i));imshow (I)标题(标签)结束

计算测试集上的分类精度。精度是标签的一部分网络预测正确。

精度=意味着(YPred = =次)
精度= 1

这SVM具有较高的精度。如果使用特征提取精度不够高,然后试着转移学习。

输出参数

全部折叠

Pretrained AlexNet卷积神经网络,作为一个返回SeriesNetwork对象。

未经训练的AlexNet卷积神经网络架构,作为一个返回数组中。

提示

引用

[1]ImageNet。http://www.image-net.org

[2]Russakovsky, O。邓,J。苏,H。,et al. "ImageNet Large Scale Visual Recognition Challenge."国际计算机视觉杂志(IJCV)。第115卷,第三期,2015年,页211 - 252

[3]Krizhevsky,亚历克斯,Ilya Sutskever和杰弗里·e·辛顿。“ImageNet与深卷积神经网络分类。”先进的神经信息处理系统。2012年。

[4]BVLC AlexNet模型。https://github.com/BVLC/caffe/tree/master/models/bvlc_alexnet

扩展功能

版本历史

介绍了R2017a