主要内容

このページの翻訳は最新ではありませ。

AlexNet.

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

説明

AlexNetは,深さが8層の畳み込みニューラルネットワークです。100年万枚を超えるイメージで学習させた事前学習済みのネットワークを,ImageNetデータベース[1]から読み込むことができます。この事前学習済みのネットワークは,イメージを1000個のオブジェクトカテゴリ(キーボード,マウス,鉛筆,多くの動物など)に分類できます。結果として,このネットワークは広範囲のイメージに対する豊富な特徴表現を学習しています。ネットワークのイメージ入力サイズは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 with properties: Layers: [25×1 net.cnn.layer. layer]

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

ディープネットワークデザイナーを使用してネットワークを可視化します。

deepNetworkDesigner (alexnet)

ディープネットワークデザイナーで[新規]をクリックし,事前学習済みの他のネットワークを探索します。

ネットワークをダウンロードする必要がある場合は,[インストール]をクリックしてアドオンエクスプローラーを開きます。

この例では,事前学習済みの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 x 3の入力イメージが必要です。ここで3はカラーチャネルの数です。

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

最後の層の置き換え

事前学習済みのネットワークの最後の3つの層は,1000個のクラスに対して構成されています。これらの3つの層を,新しい分類問題に対して微調整しなければなりません。事前学習済みのネットワークから、最後の 3 つの層を除くすべての層を抽出します。

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

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

numclasses = numel(类别(imdstrain.labels))
numClasses = 5
图层= [tallerstransfer全连接列(numcrasses,'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”1的军医,...'洗牌'“every-epoch”...“ValidationData”,augimdsvalidation,...“ValidationFrequency”,3,...'verbose'假的,...“阴谋”“训练进步”);

転移層と新しい層とで構成されるネットワークに学習させます。既定で,trainNetworkは,使用可能gpuがあればgpuをあれ使ををををを,なければcpuををうますに,并行计算工具箱™とサポートされいるgpuデバイスがです。については,リリース别のgpuサポート(并行计算工具箱)を参照してください。trainingOptionsの名称と値のののの“ExecutionEnvironment”を使用して,実行環境を指定することもできます。

netTransfer = trainNetwork (augimdsTrain层,选项);

検証イメージの分類

微調整したネットワークを使用して検証イメージを分類します。

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

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

idx = randperm(元素个数(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を使用ししイメージの読み取り,サイズサイズ,および分享を行。

net = alexnet;

imreadをを用品

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

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

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

イメージのサイズをネットワークの入力サイズに変更します。

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

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

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

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

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

この例では,事前学習済みの畳み込みニューラルネットワークから学習済みのイメージの特徴を抽出し,これらの特徴を使用してイメージ分類器に学習させる方法を説明します。特徴抽出は,事前学習済みの深いネットワークの表現能力を活用できる最も簡単で時間のかからない方法です。たとえば,抽出した特徴に対してfitcecoc(统计和机器学习工具箱™)をを用してサポートベクター(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(我))

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

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

net = alexnet;

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

Net.Layers.
ANS = 25x1层阵列,带有图层:1'数据'图像输入227x227x3与“Zerocenter”归一化2'Conv1'卷积96 11x11x3卷积有步部[4 4]和填充[0 0 0 0] 3'Cref1'Relu Relu 4'NORM1'跨通道归一化交叉通道归一化与5个通道每种元素5'池1'最大池3x3最大汇集3×3 max汇集步进[2 2]和填充[0 0 0 0] 6'CONC2'分组卷积2组128 5x5x48卷积组升级[11]和填充[2 2 2 2] 7'Relu2'Relu Relu 8'NOM2'跨通道归一化交叉通道归一化,每个元素9'池2'最大池3x3 Max池与步幅[2]和填充[0 0 0 0] 10'CONV3'卷积384 3x3x256卷曲的卷曲[1 1]和填充[111 1] 11'CRELU3'CREU RELU 12'CONV4'分组卷积2组192 3x3x192卷积与步幅的卷曲[1 1 1]和Padding [1 1 1 1] 13'Relu4'Relu Relu 14'Conv5'分组卷积2组128 3x3x192卷曲的卷曲[11]和填充[1 1 1 1] 15'Relu5'Relu Relu 16'Pool5'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'Dall7'丢弃50%丢弃23'FC8'完全连接的1000完全连接的1000个完全连接的1000完全连接的1000完全连接的层24'Prob'Softmax Softmax 25'输出'分类输出Crossentropyex与“Tench”和999级别

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

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

イメージの特徴の抽出

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

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

Augimdstrain = AugmentedimageGedatory(Inputsize(1:2),IMDstrain);augimdstest = augmentedimageageataStore(Inputsize(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) subplot(2,2,i) i = readimage(imdsTest,idx(i));标签= YPred (idx (i));imshow (I)标题(标签)结束

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

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

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

出力引数

すべて折りたたむ

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

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

ヒント

参照

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

邓杰,苏海峰,等。ImageNet大型视觉识别挑战国际计算机视觉杂志。2015年第3期,第115卷,211-252页

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

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

拡张机械

R2017aで導入