主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

alexnet

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

说明

AlexNetは,深さが8层の畳み込みネットワークです.100万枚を超えるイメージ习させた事前习习のネットワークを,想象成データを[1]から読み込むことができます。この事前学習済みのネットワークは,イメージを1000個のオブジェクトカテゴリ(キーボード,マウス,鉛筆,多くの動物など)に分類できます。結果として,このネットワークは広範囲のイメージに対する豊富な特徴表現を学習しています。ネットワークのイメージ入力サイズは227 x 227です。MATLAB®の他の事前学习済みのネットワークは,事前学习済みの深层深层ネットワークネットワークを参照してください。

分类を使用すると,AlexNetネットワークを使用して新しいイメージを分類できます。GoogLeNetを使用したイメージの分類の手順に従って,GoogLeNetをAlexNetに置き換えます。

実际の深层学习のの种法を无料お试しいただくには,ディープラーニング入门をご覧ください。

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

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

matlabの他の事前学习済み済みネットワークについては,事前学习済みの深层深层ネットワークネットワークを参照してください。

= AlexNet('权重',“imagenet”は,Imagenetデータセットでで习せたalexnetネットワークネットワーク返しますます。このこの文は,net = alexnet.と等価です。

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

すべて折りたたむ

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

コマンドラインでalexnetとと力します。

alexnet

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

alexnet
ans = SeriesNetwork with properties: Layers: [25×1 net.cnn.layer. layer]

必要なサポートパッケージがインストールされている場合,関数によって系列网络オブジェクトが返されます。

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

Alexnetは,100万枚を超えるイメージ习しており,イメージを1000个のオブジェクト(キーボード,マグカップ,铅笔,多重の动物など)にこのできますにわたるのは囲にわたるの豊富な特价表现を学习ています。このネットワークははとしてイメージを取り,イメージ内のオブジェクトのを各オブジェクトカテゴリのと共にと共にと共に出

転移学习は,深层学习アプリケーションでよくされていますを习习のネットワークをして,新しいタスクの学问。通讯は,転移,ランダムに初初さた重み重みゼロからネットワーク习习させるよりはるか単単単ませませませませませんませんてて,新闻学习。

データの読み込み

新しいイメージを解凍してイメージデータストアとして読み込みます。imageDatastoreは,フォルダー名に基づいてイメージに自動的にラベルを付け,データをimageageAtastore.オブジェクトとして格式します。イメージデータストアを使使すると,メモリに收まらないデータなど大大イメージデータを格式し,畳み込み畳み込みネットワークの学习中间にイメージを単位で效率読み取ることができで效率読み取るますます效率

解压缩(“MerchData.zip”);imd = imageDatastore ('merchdata'...'insertumbfolders',真的,...'labelsource'“foldernames”);

データを学習データセットと検証データセットに分割します。イメージの70%を学習に使用し,30%を検証に使用します。spliteachlabel.は,图片データストアを2つつ新闻データストアににストアししし。

[IMDStrain,IMDSValidation] = SpliteachLabel(IMDS,0.7,“随机”);

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

numTrainImages =元素个数(imdsTrain.Labels);idx = randperm (numTrainImages 16);figure为了i = 1:16子图(4,4,i)i = ReadImage(IMDstrain,IDX(I));imshow(i)结尾

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

事前学習済みのAlexNetニューラルネットワークを読み込みます。深度学习工具箱™模型对于AlexNet网络がインストールされていないないないない场场は,ダウンロード用リンクが表示ます.alexnetは,100万枚を超えるイメージ习习であり,イメージを1000个个カテゴリ(キーボード,マウス,铅笔,多重の动物など)に分享できます。结果结果て,このモデルは広范囲のに対するなな徴表现を习しいます。

网= alexnet;

analyzeNetworkを使用して,ネットワークアーキテクチャを対話的に可視化し,ネットワーク層についての詳細情報を表示します。

分析(净)

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

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

最后の层の置き换え

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

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

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

numClasses =元素个数(类别(imdsTrain.Labels))
numclasses = 5
layers = [layertransfer fulllyconnectedlayer (numClasses,“WeightLearnRateFactor”, 20岁,“BiasLearnRateFactor”,20)SoftmaxLayer分类层];

ネットワークの学習

27x 227 x 3ののデータストアあるイメージがは异なりますますは异なり异なりを使。学习イメージに対して実行する追加の拡演算として,学校イメージを縦轴に沿っランダムに反転させる演算や,水平方向および垂直に大大30ピクセルだけランダムに移移ささ演算を指定ますデータ拡张は,ネットワークで过含有がが生物したり,学校イメージイメージ正确なが记忆さたりすること防止するのにますます防止するのに役立ちます。

PIXELRANGE = [-30 30];imageaugmenter = imagedataAugmenter(...“RandXReflection”,真的,...“RandXTranslation”pixelRange,...'randytranslation', pixelRange);augimdsTrain = augmentedImageDatastore (inputSize (1:2), imdsTrain,...'dataaugmentation',imageaugmender);

他のデータ拡張を実行せずに検証イメージのサイズを自動的に変更するには,追加の前処理演算を指定せずに拡張イメージデータストアを使用します。

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

学習オプションを指定します。転移学習の場合,事前学習済みのネットワークの初期の層からの特徴(転移された層の重み)を保持します。転移層での学習速度を下げるため,初期学習率を小さい値に設定します。上記の手順では,全結合層の学習率係数を大きくして,新しい最後の層での学習時間を短縮しています。この学習率設定の組み合わせによって,新しい層でのみ学習が急速に進み,他の層での学習速度は低下します。転移学習の実行時には,同じエポック数の学習を行う必要はありません。エポックとは,学習データセット全体の完全な学習サイクルのことです。ミニバッチのサイズと検証データを指定します。学習中はValidationFrequency回の反復ごとにネットワークが検証されます。

选项=培训选项(“个”...“MiniBatchSize”10...“MaxEpochs”6...'italllearnrate'1的军医,...“洗牌”“every-epoch”...'vightationdata'augimdsValidation,...“ValidationFrequency”3,...“详细”,错误的,...'plots'“训练进步”);

転移层と新闻层でで成されるに习习さます。既定既定は,利用可致なgpuがある合并,Trainnetwork.はGPUを使用します(并行计算工具箱™,および以3.0计算能力上のCUDA®対応GPUが必要)。そうでない場合はCPUが使用されます。培训选项の名前と値のペアの引数'executionenvironment'を使使し,実行环境をするするできでき。

netTransfer = trainNetwork (augimdsTrain层,选项);

検证イメージの分享

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

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

4个のサンプル検证イメージ,そのその予测ラベルを表示しし。

idx = randperm(元素个数(imdsValidation.Files), 4);figure为了i = 1:4 subplot(2,2,i) i = readimage(imdsValidation,idx(i));imshow(I) label = YPred(idx(I));标题(字符串(标签));结尾

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

yvalidation = imdsvalidation.labels;精度=均值(ypred == yvalidation)
精度= 1

分享精确の向上に关键词,深层学习のヒントとコツを参照してください。

AlexNetを使用してイメージの読み取り,サイズ変更,および分類を行います。最初に,事前学習済みのAlexNetモデルを読み込みます。

网= alexnet;

imreadを使用してイメージを読み取ります。

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

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

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

イメージのサイズをネットワークのの力サイズににしし。

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

分类をを用してイメージををしし。

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

イメージと分类结果をまとめ表示表示ます。

图imshow(我)标题(标签)

この例では,事前学习済みの畳み込みニューラルネットワーク习习済みイメージの徴をし,これらの特种を使してイメージををささし说说说ししししししししししますますしますしますしますますますますますししますますしししネットワークの表现表现力量をできる最も简而言之ののからない方。たとえば,抽出した特征に対してfitcecoc(统计和机器学习的工具箱™)を使用してサポートベクターマシン(SVM)に学習させることができます。特徴抽出が必要とするものはデータを一巡する1つのパスのみであるため,ネットワークの学習を加速するためのGPUがない場合,これは適切な開始点となります。

データの読み込み

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

解压缩(“MerchData.zip”);imd = imageDatastore ('merchdata'...'insertumbfolders',真的,...'labelsource'“foldernames”);[IMDStrain,IMDSTEST] = SpliteachLabel(IMDS,0.7,“随机”);

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

numimagestain = numel(imdstrain.labels);Idx = Randperm(NumimageStrain,16);为了i = 1:16 i {i} = readimage(imdsTrain,idx(i));结尾图imshow(imtile(i))

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

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

网= alexnet;

ネットワークネットワークにははははつのとありありありありありありありありありありありありありありありありありありにはははネットワークありありありありありありありありありありあり

网。层
ans = 25x1 Layer array with layers: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 Max池步(2 - 2)和填充[0 0 0 0]6conv2的分组卷积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“输出”输出与'tench'和999其他类交叉

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

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

イメージの特徴の抽出

ネットワークは,入力イメージの阶层を构筑ます。深い深いにはます构筑层は,初ののの低レベル特徴を使しし构筑たたたた,高度レベルのが含まれ。学习イメージとイメージイメージが。特价表现を取得するに,全全合“fc7”激活イメージ使低し。イメージイメージの低レベルの表现を取得するにはは取得ににはをするするににをを使をををするするをを

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

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

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

ytrain = imdstrain.labels;ytest = imdstest.labels;

イメージ分類器のあてはめ

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

mdl = fitcecoc (featuresTrain YTrain);

テストイメージの分享

学习済みのsvmモデルとテストイメージから抽出れた特色を使て,テストイメージを分享します。

featuresTest YPred =预测(mdl);

4个のサンプルテストイメージ,そのその予测ラベルを表示しし。

Idx = [1 5 10 15];figure为了i = 1:numel(idx) subplot(2,2,i) i = readimage(imdsTest,idx(i));标签= YPred (idx (i));imshow (I)标题(标签)结尾

テストセットに対する分类精密をを计算しし度とは,ネットワークネットワーク予测が正式行为れるラベルのの割。

精度=均值(Ypred == ytest)
精度= 1

このsvmは高い精密を示しています。特色抽出を使使してても度度度度度度ない场场くださいてくださいくださいて

出力引数

すべて折りたたむ

事前学習済みのAlexNet畳み込みニューラルネットワーク。系列网络オブジェクトとして返されます。

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

ヒント

参照

[1]想象成。http://www.image-net.org.

邓杰,苏海峰,等。ImageNet大型视觉识别挑战国际计算机视觉杂志。2015年第3期,第115卷,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で导入