[SOLVED] 代写 matlab graph network GoogLeNet を使用した転移学習 1. 導入

30 $

File Name: 代写_matlab_graph_network_GoogLeNet_を使用した転移学習_1._導入.zip
File Size: 706.5 KB

SKU: 5569358308 Category: Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Or Upload Your Assignment Here:


GoogLeNet を使用した転移学習 1. 導入
このレポートでは、様々な種類がある時計をGoogLeNet を使用した転移学習できちんと判別できるか調 べる。
2.データ
Google画像検索で用意した。検索ワードは、”alarm clock” ”hourglass” ”pocket watch” ”wall clock” ”watches”の5つ。それぞれの画像を検索ワードと同じファイルに入れ、それらのファイルはclockファイル にまとめてzipファイルに圧縮した。
3.手法 ・データの読み込み
新しいイメージを解凍してイメージ データストアとして読み込み、データを学習データセットと検証 データセットに分割します。イメージの 70% を学習に使用し、30% を検証に使用します。
unzip(‘clock.zip’);
imds = imageDatastore(‘clock’, …
‘IncludeSubfolders’,true, …
‘LabelSource’,’foldernames’);
[imdsTrain,imdsValidation] = splitEachLabel(imds,0.7,’randomized’);
・事前学習済みのネットワークの読み込み
GoogLeNet ネットワークを読み込み、学習済みネットワークから層グラフを抽出し、層グラフをプロッ トします。
net = googlenet;
lgraph = layerGraph(net);
figure(‘Units’,’normalized’,’Position’,[0.1 0.1 0.8 0.8]);
plot(lgraph)
1

net.Layers(1)
ans =
ImageInputLayer with properties:
Name: ‘data’
InputSize: [224 224 3]
Hyperparameters
DataAugmentation: ‘none’
Normalization: ‘zerocenter’
AverageImage: [224×224×3 single]
・最後の層の置き換え
lgraph = removeLayers(lgraph, {‘loss3-classifier’,’prob’,’output’});
numClasses = numel(categories(imdsTrain.Labels));
newLayers = [
fullyConnectedLayer(numClasses,’Name’,’fc’,’WeightLearnRateFactor’,10,’BiasLearnRat
softmaxLayer(‘Name’,’softmax’)
inputSize = net.Layers(1).InputSize;
2

classificationLayer(‘Name’,’classoutput’)];
lgraph = addLayers(lgraph,newLayers);
lgraph = connectLayers(lgraph,’pool5-drop_7x7_s1′,’fc’);
新しい層が正しく結合されていることをプロットして確認する。
figure(‘Units’,’normalized’,’Position’,[0.3 0.3 0.4 0.4]);
plot(lgraph)
ylim([0,10])
・初期の層の凍結
layers = lgraph.Layers;
connections = lgraph.Connections;
edit(fullfile(matlabroot,’examples’,’nnet’,’main’,’freezeWeights.m’))
layers(1:110) = freezeWeights(layers(1:110));
lgraph = createLgraphUsingConnections(layers,connections);
・ネットワークの学習
pixelRange = [-30 30];
imageAugmenter = imageDataAugmenter( …
‘RandXReflection’,true, …
3

‘RandXTranslation’,pixelRange, …
‘RandYTranslation’,pixelRange);
augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain, …
‘DataAugmentation’,imageAugmenter);
augimdsValidation = augmentedImageDatastore(inputSize(1:2),imdsValidation);
options = trainingOptions(‘sgdm’, …
‘MiniBatchSize’,10, …
‘MaxEpochs’,6, …
‘InitialLearnRate’,1e-4, …
‘ValidationData’,augimdsValidation, …
‘ValidationFrequency’,3, …
‘ValidationPatience’,Inf, …
‘Verbose’,false ,…
‘Plots’,’training-progress’);
net = trainNetwork(augimdsTrain,lgraph,options);
・検証イメージの分類
微調整したネットワークを使用して検証イメージを分類し、分類精度を計算します。
[YPred,probs] = classify(net,augimdsValidation);
accuracy = mean(YPred == imdsValidation.Labels)
accuracy = 0.8857
4.結果
4 枚のサンプル検証イメージを、予測ラベルとイメージがそれらのラベルを持つ予測確率と共に表示。 4

idx = randperm(numel(imdsValidation.Files),4);
figure
for i = 1:4
subplot(2,2,i)
I = readimage(imdsValidation,idx(i));
imshow(I)
label = YPred(idx(i));
title(string(label) + “, ” + num2str(100*max(probs(idx(i),:)),3) + “%”);
end
検証した結果、”wall clock”で”alarm clock”を読み込んでしまった。しかし、確率は45.7%と半分を下回っ ている。それ以外は正しく確率もほぼ100%であった。
5.考察
“wall clock”と”alarm clock”の中には特徴的な形の物もあるが、円形といったシンプルな形もある。それら は判断するのが難しくなったのだと考える。逆に”hourglass” ”pocket watch” ”watches”はとても判断しやす いと考えられる。
6.結論
シンプルな物や似ている物は少ない画像の枚数では判断が難しく、特徴が明確な物は少ない画像の枚数で
も判断できる。きちんと判断するためには、その画像にあった枚数が必要である。
5

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[SOLVED] 代写 matlab graph network GoogLeNet を使用した転移学習 1. 導入
30 $