このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では,事前学習済みのAlexNet畳み込みニューラルネットワークを微調整して,新しいイメージコレクションを分類する方法を説明します。
Alexnetは,100万枚を超えるイメージ习习ており,イメージを1000个のオブジェクト(キーボード,マグカップ,铅笔,多重の动物など)にこのできますにわたるネットワークは囲特价表现を学习しいいます。
転移学習は,深層学習アプリケーションでよく使用されています。事前学习済みのネットワークを取得して、新しいタスクの学習の開始点として使用できます。通常は、転移学習によってネットワークを微調整する方が、ランダムに初期化された重みでゼロからネットワークに学習させるよりもはるかに簡単で時間がかかりません。少ない数の学習イメージを使用して、新しいタスクに学習済みの特徴を高速に転移できます。
新しいイメージを解凍してイメージデータストアとして読み込みます。ImageageAtastore.
は,〖nortge〗基于てに自动的にラベルを,データデータImageDatastore
オブジェクトとして格納します。イメージデータストアを使用すると,メモリに収まらないデータなどの大きなイメージデータを格納し,畳み込みニューラルネットワークの学習中にイメージをバッチ単位で効率的に読み取ることができます。
解压缩('merchdata.zip');imds = imageageatastore(“MerchData”,...'upplyubfolders',真的,...'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個のオブジェクトカテゴリ(キーボード,マウス,鉛筆,多くの動物など)に分類できます。結果として,このモデルは広範囲のイメージに対する豊富な特徴表現を学習しています。
网= alexnet;
analyzeNetwork
を使用して,ネットワークアーキテクチャを対話的に可視化し,ネットワーク層についての詳細情報を表示します。
analyzeNetwork(净)
,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
图层= [tallerstransfer全连接列(numcrasses,“WeightLearnRateFactor”, 20岁,“BiasLearnRateFactor”, 20) softmaxLayer classificationLayer];
ネットワークにはサイズが227 x 227 x 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);
学习オプションを指定指定ます。転移学习のの场のの层からのネットワークののからの重みのを保持しからの転移层転移层保持の习习転移层をためでの习习速度をげるためでのし习习速度をげるためためを小さい値に设定しますます。上记の手顺は,全全结层の习率率を大厦し,新しい最后のでの学习时间ををしています。のみ学习が急速に,他の层での习习习速度はのししににははエポックエポックの习习をう必要ははありませをううとははありませませんうとは习习セットませませううな习データセット全のななな习サイクルサイクルことです。ミニバッチミニバッチのサイズと検证データを指定しし指定しValidationFrequency
回の反復ごとにネットワークが検証されます。
选项=培训选项(“个”,...“MiniBatchSize”10...“MaxEpochs”,6,...“InitialLearnRate”1的军医,...“洗牌”,'每个时代',...“ValidationData”augimdsValidation,...'验证职业',3,...“详细”,错误的,...“阴谋”,“训练进步”);
転移層と新しい層とで構成されるネットワークに学習させます。既定で,trainNetwork
は,使用可能gpuがあればgpuをあれ使ををををを,なければcpuををうますに,并行计算工具箱™とサポートされいるgpuデバイスがです。については,リリース别のgpuサポート(并行计算工具箱)を参照してください。培训选项
の名称と値のののの“ExecutionEnvironment”
を使用して,実行環境を指定することもできます。
netTransfer = trainNetwork (augimdsTrain层,选项);
微調整したネットワークを使用して検証イメージを分類します。
[YPred,分数]= (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
分類精度の向上に関するヒントは,深層学習のヒントとコツを参照してください。
[1] Krizhevsky, Alex, Ilya Sutskever和Geoffrey E. Hinton。基于深度卷积神经网络的图像网络分类神经信息处理系统的进展。2012.
[2] BVLC AlexNet模型。https://github.com/BVLC/caffe/tree/master/models/bvlc_alexnet
trainNetwork
|培训选项
|AlexNet.
|analyzeNetwork