主要内容

阿列克斯内特

AlexNet卷积神经网络

  • AlexNet网络体系结构

描述

AlexNet是一个8层的卷积神经网络。你可以从ImageNet数据库中加载经过训练的网络的预训练版本[1]。预训练网络可以将图像分类为1000个对象类别,如键盘、鼠标、铅笔和许多动物。因此,该网络学习了大量图像的丰富特征表示。该网络的图像输入大小为227×227。对于MATLAB中的更多预训练网络®看见预训练深度神经网络.

你可以用分类要使用AlexNet网络对新图像进行分类,请执行的步骤利用GoogLeNet对图像进行分类用AlexNet替换GoogLeNet。

有关实用深度学习方法的免费实践介绍,请参阅深度学习入门.

实例

=alexnet返回在ImageNet数据集上训练的AlexNet网络。

此函数需要深入学习工具箱™ 模型用于AlexNet网络金宝app支持包。如果未安装此支持包,该功能将提供下载链接。或者,请参见深度学习工具箱模型用于AlexNet网络.

有关MATLAB中的更多预训练网络,请参见预训练深度神经网络.

=alexnet('重量',“imagenet”)返回在ImageNet数据集上训练的AlexNet网络。此语法相当于net=alexnet.

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

例子

全部崩溃

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

类型阿列克斯内特在命令行。

阿列克斯内特

If深度学习工具箱模型用于AlexNet网络金宝app如果未安装支持包,则该函数会在附加模块资源管理器中提供指向所需支持包的链接。若要安装支持包,请单击该链接,然后单击“安装”安装。通过键入来检查安装是否成功阿列克斯内特在命令行。

阿列克斯内特
ans=具有以下属性的系列网络:层:[25×1 nnet.cnn.layer.layer]

如果安装了所需的支持包,则函数将金宝app返回系列网络对象

使用Deep network Designer可视化网络。

deepNetworkDesigner(alexnet)

在Deep Network Designer中,通过单击浏览其他预训练网络刚出现的.

显示可用预训练网络的Deep Network Designer起始页

如果需要下载网络,请暂停所需网络并单击安装打开加载项资源管理器。

此示例演示如何微调预训练的AlexNet卷积神经网络,以对新的图像集合执行分类。

AlexNet接受过超过一百万张图像的训练,可以将图像分为1000个对象类别(如键盘、咖啡杯、铅笔和许多动物)。该网络学习了大量图像的丰富特征表示。该网络将图像作为输入,并输出图像中对象的标签以及每个对象类别的概率。

迁移学习通常用于深度学习应用。你可以把一个预先训练好的网络作为学习新任务的起点。使用转移学习对网络进行微调通常比从头开始使用随机初始化权重训练网络要快得多,也容易得多。您可以使用较少数量的训练图像将学习到的功能快速传输到新任务。

加载数据

将新图像解压缩并加载为图像数据存储。图像数据存储根据文件夹名称自动标记图像,并将数据存储为图像数据存储对象。图像数据存储使您能够存储大型图像数据,包括内存中不适合的数据,并在卷积神经网络训练期间高效地读取图像批次。

解压(“MerchData.zip”);imds=图像数据存储(“水星”,...“包含子文件夹”符合事实的...“标签源”,“foldernames”);

将数据分为训练和验证数据集。使用70%的图像进行训练,30%进行验证。拆分标签分裂图像将数据存储到两个新的数据存储中。

[imdsTrain,imdsValidation]=拆分每个标签(imds,0.7,“随机化”);

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

numTrainImages=numel(imdsTrain.Labels);idx=randperm(numTrainImages,16);图对于i=1:16子批次(4,4,i)i=readimage(imdsTrain,idx(i));imshow(i)终止

负荷预训练网络

加载预训练的AlexNet神经网络。如果深度学习工具箱™ 模型用于AlexNet网络如果未安装,则软件提供下载链接。AlexNet接受了超过一百万张图像的训练,可以将图像分为1000个对象类别,如键盘、鼠标、铅笔和许多动物。因此,该模型学习了大量图像的丰富特征表示。

net=alexnet;

使用分析网络显示网络架构的交互式可视化和有关网络层的详细信息。

分析网络(net)

第一层,即图像输入层,需要大小为227×227×3的输入图像,其中3是颜色通道的数量。

inputSize=net.Layers(1).inputSize
输入大小=1×3227 227 3

替换最后一层

预训练网络的最后三层配置了1000个类。这三层必须针对新的分类问题进行微调。从预训练网络中提取除最后三层以外的所有层。

LayerTransfer=净层数(1:end-3);

通过将最后三层替换为完全连接层、softmax层和分类输出层,将层转移到新分类任务。根据新数据指定新完全连接层的选项。将完全连接层设置为与新数据中的类数相同的大小。要学习n新层中的速度快于传输层中的速度,增加加权比率因子双线性学习因子完全连接层的值。

numClasses=numel(类别(imdsTrain.Labels))
numclass=5
layers=[layersTransfer fullyConnectedLayer(numClass,“权重学习速率因子”,20,“BiasLearnRateFactor”,20)softmaxLayer分类层];

列车网络

网络需要大小为227×227×3的输入图像,但图像数据存储中的图像大小不同。使用增强图像数据存储自动调整训练图像的大小。指定要在训练图像上执行的其他增强操作:沿垂直轴随机翻转训练图像,并在水平和垂直方向上随机平移最多30个像素。数据扩充有助于防止网络过度拟合和记忆训练图像的确切细节。

pixelRange=[-30];imageAugmenter=imageDataAugmenter(...“随机选择”符合事实的...“随机翻译”,像素范围,...“兰迪翻译”,像素范围);augimdsTrain=增强的图像数据存储(inputSize(1:2),imdsTrain,...“数据增强”图像增强仪);

要在不执行进一步数据扩充的情况下自动调整验证图像的大小,请使用扩充图像数据存储,而不指定任何其他预处理操作。

augimdsValidation=增强图像数据存储(inputSize(1:2),imdsValidation);

指定训练选项。对于转移学习,保留预训练网络早期层的特征(转移层权重)。若要减慢传输层中的学习速度,请将初始学习速率设置为一个较小的值。在上一步中,您增加了完全连接层的学习速率系数,以加快新的最终层中的学习速度。这种学习速率设置组合只会导致新层中的快速学习和较慢的学习速度n其他层。在执行转移学习时,您不需要进行尽可能多的历元训练。历元是整个训练数据集上的完整训练周期。指定最小批量大小和验证数据。软件每隔一周对网络进行一次验证验证频率训练期间的迭代。

选项=培训选项(“sgdm”,...“MiniBatchSize”,10,...“MaxEpochs”6....“初始学习率”,1e-4,...“洗牌”,“每个时代”,...“验证数据”,augimdsValidation,...“验证频率”3....“冗长”错误的...“情节”,“培训进度”);

训练由传输层和新层组成的网络。默认情况下,列车网络如果GPU可用,则使用GPU,否则使用CPU。在GPU上进行培训需要并行计算工具箱™ 和支持的GPU设备。有关支持的设备的信息,请参阅金宝appGPU版金宝app本支持(并行计算工具箱). 您还可以使用“执行环境”的名称-值对参数培训选项.

netTransfer=列车网络(augimdsTrain、层、选项);

对验证图像进行分类

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

[YPred,得分]=分类(净转移,augimdsValidation);

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

idx=randperm(numel(imdsValidation.Files),4);图对于i=1:4子批次(2,2,i)i=readimage(imdsValidation,idx(i));imshow(i)label=YPred(idx(i));title(string(label));终止

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

YValidation=imdsValidation.Labels;精度=平均值(YPred==YValidation)
精度=1

有关提高分类准确性的提示,请参阅深入学习技巧.

使用AlexNet读取、调整图像大小并对图像进行分类。首先,加载预训练的AlexNet模型。

net=alexnet;

使用以下命令读取图像:伊姆雷德.

I=imread(“peppers.png”);图1(I)

预训练模型要求图像大小与网络的输入大小相同。使用输入大小网络第一层的属性。

sz=净层(1).InputSize
深圳=1×3227 227 3

将图像大小调整为网络的输入大小。

I=imresize(I,sz(1:2));图imshow(I)

使用分类.

标签=分类(净,I)
标签=明确的甜椒

同时显示图像和分类结果。

图imshow(I)标题(标签)

此示例演示如何从预训练卷积神经网络中提取学习的图像特征,并使用这些特征训练图像分类器。特征提取是使用预训练深层网络表示能力的最简单、最快速的方法。例如,您可以使用金宝app菲切克(统计和机器学习工具箱)™) 由于特征提取只需要对数据进行一次遍历,因此如果没有GPU来加速网络训练,这是一个很好的起点。

加载数据

解压示例图像并将其加载为图像数据存储。图像数据存储根据文件夹名称自动标记图像,并将数据存储为图像数据存储对象图像数据存储允许您存储大型图像数据,包括内存中不适合的数据。将数据分为70%的培训数据和30%的测试数据。

解压(“MerchData.zip”);imds=图像数据存储(“水星”,...“包含子文件夹”符合事实的...“标签源”,“foldernames”); [imdsTrain,imdsTest]=拆分每个标签(imds,0.7,“随机化”);

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

numImagesTrain=numel(imdsTrain.Labels);idx=randperm(numImagesTrain,16);对于i=1:16 i{i}=readimage(imdsTrain,idx(i));终止图imshow(imtile(I))

负荷预训练网络

加载预训练的AlexNet网络。如果深入学习工具箱模型用于AlexNet网络金宝app如果未安装支持包,则软件会提供下载链接。AlexNet接受了超过一百万张图像的培训,可以将图像分为1000个对象类别。例如,键盘、鼠标、铅笔和许多动物。因此,该模型学习了各种图像的丰富功能表示。

net=alexnet;

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

net.Layers
ans=25x1层阵列,带层:1“数据”图像输入227x227x3图像,带“零中心”标准化2“conv1”卷积96 11x11x3卷积,带跨距[4]和填充[0]3“relu1”ReLU ReLU 4“norm1”跨通道规格化跨通道规格化每个元素5个通道5“pool1”最大池3x3最大池带跨步[2]和填充[0 0 0 0]6“conv2”分组卷积2组128个5x5x48卷积带跨步[1]和填充[2 2 2 2 2]7“relu2”ReLU ReLU 8“norm2”跨通道规格化跨通道规格化每个元素5个通道9“pool2”最大池3x3最大池带跨步[2]和填充[0 0 0 0]10“conv3”卷积384 3x256卷积带跨步[1]和填充[1 1 1 1 1]11“relu3”ReLU ReLU 12“conv4”分组卷积2组192 3x3x192卷积带跨步[11]和填充[11]13“relu4”ReLU ReLU ReLU 14“conv5”分组卷积2组128 3x3x192卷积带跨步[11]和填充[11]15“relu5”ReLU ReLU 16“pool5”最大池3x3最大池带跨步[2]和填充[0 0 0 0]17“fc6”完全连接4096完全连接层18“relu6”ReLU ReLU 19“drop6”drop6”Dropout 50%Dropout 20“fc7”完全连接4096完全连接层21“relu7”ReLU ReLU 22“drop7”Dropout 50%Dropout 23“fc8”完全连接1000完全连接层24“prob”Softmax Softmax 25“output”分类输出交叉入口投影带“tench”及其他类别

第一层,即图像输入层,需要大小为227×227×3的输入图像,其中3是颜色通道的数量。

inputSize=net.Layers(1).inputSize
输入大小=1×3227 227 3

提取图像特征

该网络构建了输入图像的层次表示。更深的层包含更高级别的特征,使用早期层的较低级别特征构建。要获取训练和测试图像的特征表示,请使用激活在全连通层上“fc7”. 要获得较低级别的图像表示,请使用网络中较早的层。

网络需要大小为227-x-227-x-3的输入图像,但图像数据存储中的图像大小不同。若要在将培训和测试图像输入到网络之前自动调整其大小,请创建增强图像数据存储,指定所需的图像大小,并将这些数据存储用作激活.

augimdsTrain=增强的图像数据存储(输入大小(1:2),imdsTrain);augimdtest=增强的图像数据存储(inputSize(1:2),imdsTest);层=“fc7”;特征应变=激活(净、螺旋应变、层、,“输出”,“行”); featuresTest=激活(净、模拟测试、层、,“输出”,“行”);

从培训和测试数据中提取类标签。

YTrain=imdsTrain.Labels;YTest=imdsTest.标签;

Fit图像分类器

使用从训练图像中提取的特征作为预测变量,并使用金宝app菲切克(统计和机器学习工具箱)。

mdl=fitcecoc(特征菌株,YTrain);

对测试图像进行分类

利用训练好的支持向量机模型和从测试图像中提取的特征对测试图像进行分类。

YPred=预测(mdl,特征测试);

显示四个样本测试图像及其预测标签。

idx=[1 5 10 15];图形对于i=1:numel(idx)子批次(2,2,i)i=readimage(imdsTest,idx(i));label=YPred(idx(i));imshow(i)title(label)终止

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

精度=平均值(YPred==YTest)
精度=1

该支持向量机具有较高的精度。如果使用特征提取的精度不够高,则尝试转移学习。

输出参数

全部崩溃

预训练AlexNet卷积神经网络,返回为系列网络对象

未经训练的AlexNet卷积神经网络结构,返回为大堆

提示

工具书类

[1]图像网. http://www.image-net.org

[2] Russakovsky,O.,Deng,J.,Su,H.,等,“ImageNet大规模视觉识别挑战。”国际计算机视觉杂志(IJCV). 第115卷,2015年第3期,第211-252页

[3] Krizhevsky,Alex,Ilya Sutskever和Geoffrey E.Hinton.“具有深度卷积神经网络的图像网络分类。”神经信息处理系统的进展. 2012

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

扩展能力

R2017a中引入