最新のリリースでは,このページがまだ翻訳されていません。このページの最新版は英語でご覧になれます。

AlexNet.

AlexNet畳み込みニューラルネットワーク

説明

AlexNetは,深さが8層の畳み込みニューラルネットワークです。100年万枚を超えるイメージで学習させた事前学習済みのネットワークを,ImageNetデータベース[1]から読み込むことができます。この事前学习済みのネットワークは,イメージを千个のオブジェクトカテゴリ(キーボード,マウス,铅笔,多くの动物など)に分类できます。结果として,このネットワークは広范囲のイメージに対する豊富な特徴表现を学习しています。ネットワークのイメージ入力サイズは227 X 227です.MATLAB®の他の事前学習済みのネットワークについては,事前学習済みの深層ニューラルネットワークを参照してください。

分类,亚历山网ネットワークネットワーク使とて新闻イメージををますます。GoogLeNetを使用したイメージの分类の手顺に従って,GoogLeNetをAlexNetに置き换えます。

実際の深層学習の各種手法を無料でお試しいただくには,ディープラーニング入門ををください。

= alexnetは,ImageNetデータセットで学習させたAlexNetネットワークを返します。

この关节,深学习工具箱™模型AlexNet网络サポートパッケージが必要です。このサポートパッケージがインストールされていない场合,关数によってダウンロード用リンクが表示されます。または,深度学习工具箱模型AlexNet网络を参照してください。

MATLABの他の事前学習済みのネットワークについては,事前学習済みの深層ニューラルネットワークを参照してください。

= alexnet(“权重”,'Imagenet'は,ImageNetデータセットで学習させたAlexNetネットワークを返します。この構文は,网= alexnetと等価です。

= alexnet(“权重”,“没有”は,未学習のAlexNetネットワークアーキテクチャを返します。未学習モデルは,サポートパッケージを必要としません。

すべて折りたたむ

深度学习工具箱型号AlexNet网络サポートパッケージをダウンロードしてインストールします。

コマンドラインでAlexNet.と入力します。

AlexNet.

深度学习工具箱型号AlexNet网络サポートパッケージがインストールされていない场合,关数によってアドオンエクスプローラーに必要なサポートパッケージへのリンクが表示されます。サポートパッケージをインストールするには,リンクをクリックして,[インストール]をクリックします。コマンドラインでAlexNet.と入力して,インストールが正常に终了していることを确认します。

AlexNet.
ANS = SeriesNetwork与属性:层:[25×1 nnet.cnn.layer.Layer]

必要必要なサポートパッケージパッケージがインストールされている合词,关键词SeriesNetworkオブジェクトが返されます。

この例では,事前学习済みのAlexNet畳み込みニューラルネットワークを微调整して,新しいイメージコレクションを分类する方法を说明します。

100年AlexNetは万枚を超えるイメージで学習しており,イメージを1000個のオブジェクトカテゴリ(キーボード,マグカップ,鉛筆,多くの動物など)に分類できます。このネットワークは広範囲にわたるイメージについての豊富な特徴表現を学習しています。このネットワークは入力としてイメージを取り,イメージ内のオブジェクトのラベルを各オブジェクトカテゴリの確率と共に出力します。

転移学習は,深層学習アプリケーションでよく使用されています。事前学習済みのネットワークを取得して、新しいタスクの学習の開始点として使用できます。通常は、転移学習によってネットワークを微調整する方が、ランダムに初期化された重みでゼロからネットワークに学習させるよりもはるかに簡単で時間がかかりません。少ない数の学習イメージを使用して、新しいタスクに学習済みの特徴を高速に転移できます。

データの読み込み

新闻イメージを解冻しイメージイメージデータストアとして読み込みます。imageageAtastore.は,フォルダー名に基づいてイメージに自动的にラベルを付け,データをImageDatastoreオブジェクトとして格納します。イメージデータストアを使用すると,メモリに収まらないデータなどの大きなイメージデータを格納し,畳み込みニューラルネットワークの学習中にイメージをバッチ単位で効率的に読み取ることができます。

解压('merchdata.zip');imds = imageageatastore(“MerchData”......“IncludeSubfolders”,真的,......“LabelSource”'foldernames');

データデータ学习データセット検证データデータセットにますますイメージの70%を学校に使,30%を検证に使用しし。splitEachLabelは,图片データストアを2つの新しいデータストアに分割します。

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

このとき,この非常に小さなデータセットには,55个の学习イメージと20个の検证イメージが格纳されています。いくつかのサンプルイメージを表示します。

numtrainimages = numel(imdstrain.labels);idx = randperm(numtrainimages,16);数字i = 1:16 subplot(4,4,i) i = readimage(imdsTrain,idx(i));imshow(我)结束

事前学习済みのネットワークの読み込み

事前学习工具箱™型号事前学习工具箱™型号AlexNet网络がインストールされていない場合,ダウンロード用リンクが表示されます。100年AlexNetは万枚を超えるイメージについて学習済みであり,イメージを1000個のオブジェクトカテゴリ(キーボード,マウス,鉛筆,多くの動物など)に分類できます。結果として,このモデルは広範囲のイメージに対する豊富な特徴表現を学習しています。

net = alexnet;

分析を使用して,ネットワークアーキテクチャを対话的に可视化し,ネットワーク层についての详细情报を表示します。

analyzeNetwork(净)

最初の层であるイメージ入力层には,サイズが227 X 227×3の入力イメージが必要です。ここで,3はカラーチャネルの数です。

InputSize = Net.Layers(1).InputSize
inputSize =1×3.227 227 3

最後の層の置き換え

事前学習済みのネットワークの最后の3つの层は,1000个のクラスに対して构成されています。これらの3つの层を,新しい分类问题に対して微调整しなければなりません。事前学习済みのネットワークから,最后の3つの层を除くすべての层を抽出します。

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

最后の3つの层を全结合层,ソフトマックス层,および分类出力层に置き换えることによって,层を新しい分类タスクに転移させます。新しいデータに従って新しい全结合层のオプションを指定します。全结合层のサイズが新しいデータのクラス数と同じになるように设定します。新しい层での学习速度を転移层より速くするには,全结合层のWeightLearnRateFactorおよびBiasLearnRateFactorの値を大きくします。

numclasses = numel(类别(imdstrain.labels))
numClasses = 5
图层= [TALERSTRANSFER全连接层(NUMCLASS,'wexerlearnratefactor'20,'BiasLearnRateFactor', 20) softmaxLayer classificationLayer];

ネットワークの学习

ネットワークにはサイズが227 x 227 x 3の入力イメージが必要ですが,イメージデータストアにあるイメージのサイズは異なります。拡張イメージデータストアを使用して学習イメージのサイズを自動的に変更します。学習イメージに対して実行する追加の拡張演算として,学習イメージを縦軸に沿ってランダムに反転させる演算や,水平方向および垂直方向に最大30ピクセルだけランダムに平行移動させる演算を指定します。データ拡張は,ネットワークで過適合が発生したり,学習イメージの正確な詳細が記憶されたりすることを防止するのに役立ちます。

pixelRange = [-30 30];imageAugmenter = imageDataAugmenter (......'randxreflection',真的,......'randxtranslation',pixelrange,......“RandYTranslation”,pixelrange);Augimdstrain = AugmentedimageGedataStore(Inputsize(1:2),IMDstrain,......“DataAugmentation”, imageAugmenter);

他のデータ拡张ををずに検证イメージのサイズ自动的に変更するは,加加ののにするは指定ずに拡拡イメージずず拡拡拡データストア使

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

学习オプションを指定します。転移学习の场合,事前学习済みのネットワークの初期の层からの特徴(転移された层の重み)を保持します。転移层での学习速度を下げるため,初期学习率を小さい値に设定します。上记の手顺では,全结合层の学习率系数を大きくして,新しい最后の层での学习时间を短缩しています。この学习率设定の组み合わせによって,新しい层でのみ学习が急速に进み,他の层での学习速度は低下します。転移学习の実行时には,同じエポック数の学习を行う必要はありません。エポックとは,学习データセット全体の完全な学习サイクルのことです。ミニバッチのサイズと検证データを指定します。学习中はValidationFrequency回の反复ごとにネットワークが検证されます。

选择= trainingOptions ('sgdm'......'minibatchsize'10,......'maxepochs',6,......“InitialLearnRate”,1E-4,......'洗牌''每个时代'......“ValidationData”,augimdsvalidation,......'验证职业',3,......'verbose'假的,......“阴谋”'培训 - 进步');

転移層と新しい層とで構成されるネットワークに学習させます。既定では,利用可能なGPUがある場合,trainNetworkはGPUを使用します(并行计算工具箱™,および计算能力3.0以上のCUDA®対応GPUが必要)。そうでない场合はCPUが使用されます。trainingOptionsの名前と値ののペアペア数“ExecutionEnvironment”を使用して,実行環境を指定することもできます。

netTransfer = trainNetwork(augimdsTrain,层,选项);

検証イメージの分類

微调整したネットワークを使用して検证イメージを分类します。

[ypred,scores] =分类(nettransfer,augimdsvalidation);

4個のサンプル検証イメージと,その予測ラベルを表示します。

IDX = randperm(numel(imdsValidation.Files),4);数字i = 1:4子图(2,2,i)i = ReadImage(IMDSValidation,IDX(I));imshow(i)标签= ypred(idx(i));标题(字符串(标签));结束

検证セットに対する分类精度を计算します。精度とは,ネットワークによって予测が正しく行われるラベルの割合です。

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

分類精度の向上に関するヒントは,深層学習のヒントとコツを参照してください。

AlexNetをを用ししイメージ読み取り,サイズ変更,および分享を行。最初最初,事前学习済みのalexnetモデルを読み込み。

net = alexnet;

Imread.をを用してイメージを読み取ります。

我= imread('peppers.png');图imshow(我)

事前学习済みのモデルは,イメージサイズがネットワークの入サイズ同じである必要があり。输入プロパティプロパティ使使て,ネットワークネットワークの力サイズをます。

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

ネットワークの入力サイズに合わせてイメージをトリミングします。または,imresize.をを用してイメージのサイズ変更変更できます。

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

分类を使用してイメージを分類します。

标记=分类(净,I)
标签=分类灯笼椒

イメージと分類結果をまとめて表示します。

数字imshow(i)标题(标签)

この例では,事前学習済みの畳み込みニューラルネットワークから学習済みのイメージの特徴を抽出し,これらの特徴を使用してイメージ分類器に学習させる方法を説明します。特徴抽出は,事前学習済みの深いネットワークの表現能力を活用できる最も簡単で時間のかからない方法です。たとえば,抽出した特徴に対してfitcecoc(统计和机器学习Toolbox™)を使使ししサポートベクター(svm)に学习させるますます。特色抽出が必要とするはををを巡するするするするするするするするするのみであるためためためののみであるためためための习习加速するののgpuががない合,これは适切な开启点点なります。

データの読み込み

サンプルイメージを解冻してイメージデータストアとして読み込みます。imageageAtastore.は,フォルダー名に基づいてイメージに自动的にラベルを付け,データをImageDatastoreオブジェクトとして格纳します。イメージデータストアを使用すると,メモリに收まらないデータを含む大きなイメージデータを格纳できます。データを70%の学习データと30%のテストデータに分割します。

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

このとき,この非常に小さなデータセットには,55个の学习イメージと20个の検证イメージが格纳されています。いくつかのサンプルイメージを表示します。

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

事前学习済みのネットワークの読み込み

事前学习ネットワークののネットワークネットワーク読み込みます.deep学习工具箱模型AlexNet网络サポートパッケージがインストールされていない场合,ダウンロード用リンクが表示されます.AlexNetは,100万枚を超えるイメージについて学习済みであり,イメージを1000个のオブジェクトカテゴリに分类できます。たとえば,キーボード,マウス,铅笔,多重の动物などなど结果として,このモデルは広范囲のに対する豊富な徴を习习しいます。

net = alexnet;

ネットワークアーキテクチャを表示します。ネットワークには5つの畳み込み層と3つの全結合層があります。

net.layers.
ANS = 25x1层阵列具有图层:1'数据'图像输入227x227x3图像,具有“Zerocenter”归一化2'CONC1'卷积96 11x11x3卷曲的卷积[4 4]和填充[0 0 0 0] 3'Creu1'Relu Relu 4'NORM1'跨通道归一化交叉通道归一化与每个元素5'POOL1'最大池3x3最大汇集的5个通道[2 2]和填充[0 0 0 0] 6'CONV2'分组卷积2组128 5x5x48卷积组升级[11]和填充[2 2 2 2] 7'Relu2'Relu Relu 8'NOM2'跨通道归一化交叉通道归一化,每个元素9'Pool2'Max池3x3最大池与步道[2]和填充[0 0 0 0] 10'CONV3'卷积384 3x3x256卷曲的卷曲[1 1]和填充[1 1 1 1] 11'CRACU3'Relu Relu 12'CHAR4'分组的卷积2组192 3x3x192卷积与步幅的卷曲[1 1]和Padding [1 1 1 1] 13'Relu4'Relu Relu 14'Conv5'分组卷积2组128 3x3x192卷积与步幅[11]和填充[11 1 1] 15'Relu5'Relu Relu 16'池5'Max5'最大汇集3x3使用步幅进行汇集[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'Prob'Softmax Softmax 25'输出'分类输出交叉面快递带有'tench'和999其他班级

最初の层であるイメージ入力层には,サイズが227 X 227×3の入力イメージが必要です。ここで,3はカラーチャネルの数です。

InputSize = Net.Layers(1).InputSize
inputSize =1×3.227 227 3

イメージの特徴の抽出

ネットワークは,入力イメージの階層表現を構築します。深い層には,初期の層の低レベルの特徴を使用して構築された,より高レベルの特徴が含まれます。学習イメージとテストイメージの特徴表現を取得するには,全結合層'FC7'激活を使用します。イメージの低レベルの表現を取得するには,ネットワークの初期の層を使用します。

ネットワークにはサイズが227 X 227×3の入力イメージが必要ですが,イメージデータストアにあるイメージのサイズは异なります。学习およびテストイメージのサイズをネットワークへの入力前に自动的に変更するには,拡张イメージデータストアを作成して,目的のイメージサイズを指定し,これらのデータストアを激活のの力量引ますますし。

Augimdstrain = AugmentedimageGedataStore(InpueSize(1:2),IMDstrain);Augimdstest = AugmentedimageDataStore(InpueSize(1:2),IMDSTEST);图层='FC7';featuresTrain =激活(净,augimdsTrain,层“OutputAs”“行”);featuresTest =激活(净,augimdsTest,层“OutputAs”“行”);

学习データおよびテストデータからクラスラベルを抽出します。

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

イメージ分类器材ののあては

学習イメージから抽出された特徴を予測子変数として使用し,fitcecoc(统计和机器学习的工具箱)を使用してマルチクラスサポートベクターマシン(SVM)をあてはめます。

mdl = fitcecoc(Featurestrain,Ytrain);

テストイメージの分類

学習済みのSVMモデルとテストイメージから抽出された特徴を使用して,テストイメージを分類します。

Ypred =预测(MDL,Featustestest);

4個のサンプルテストイメージと,その予測ラベルを表示します。

Idx = [1 5 10 15];数字I = 1:numel(IDX)副区(2,2,i)的I = readimage(imdsTest,IDX(I));标记= YPred(IDX(I));imshow(I)标题(标签)结束

テストセットに対する分類精度を計算します。精度とは,ネットワークによって予測が正しく行われるラベルの割合です。

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

このSVMは高い精度を示しています。特徴抽出を使用しても十分な精度が得られない場合,代わりに転移学習を試してください。

出力引数

すべて折りたたむ

事前学习済みのalexnet畳み込みニューラルネットワーク。SeriesNetworkオブジェクトとして返されます。

未学习のalexnet畳み込みニューラルネットワークアーキテクチャ。配列として返されます。

ヒント

参照

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

[2] Russakovsky,O.,邓,J.,苏,H。等人。“ImageNet大型视觉识别的挑战。”国际计算机视觉杂志(IJCV)。第115卷,第3期,2015年,第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で導入