学習モデルを任意の画像に適応したい
조회 수: 8 (최근 30일)
이전 댓글 표시
今回実装したいものは、任意の画像を学習モデルに適応し、その精度・結果を確認したいです。
モデルはAlexNetを用いた転移学習で、画像分類を行うものです。
学習データと検証データの割合は7:3で、精度は93%程で検証用データの出力結果は正確に画像分類できています。
そこで、検証用データとは関係なく、全く別の画像fileにこのモデルを適応し、画像分類を行うことは可能でしょうか?
以下、転移学習を実装したソースコードになります。MathWorks公式のサンプルコードを用いて実装を行いました。
unzip('sample (3).zip');
imds = imageDatastore('sample', ...
'IncludeSubfolders',true, ...
'LabelSource','foldernames');
[imdsTrain,imdsValidation] = splitEachLabel(imds,0.7,'randomized');
numTrainImages = numel(imdsTrain.Labels);
idx = randperm(numTrainImages,16);
figure
for i = 1:16
subplot(4,4,i)
I = readimage(imdsTrain,idx(i));
imshow(I)
end
net = alexnet;
analyzeNetwork(net)
inputSize = net.Layers(1).InputSize;
layersTransfer = net.Layers(1:end-3);
numClasses = numel(categories(imdsTrain.Labels));
layers = [
layersTransfer
fullyConnectedLayer(numClasses,'WeightLearnRateFactor',20,'BiasLearnRateFactor',20)
softmaxLayer
classificationLayer];
pixelRange = [-30 30];
imageAugmenter = imageDataAugmenter( ...
'RandXReflection',true, ...
'RandXTranslation',pixelRange, ...
'RandYTranslation',pixelRange);
augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain, ...
'DataAugmentation',imageAugmenter, ...
'ColorPreprocessing','gray2rgb');
augimdsValidation = augmentedImageDatastore(inputSize(1:2),imdsValidation, ...
'ColorPreprocessing','gray2rgb');
options = trainingOptions('sgdm', ...
'MiniBatchSize',10, ...
'MaxEpochs',6, ...
'InitialLearnRate',1e-4, ...
'Shuffle','every-epoch', ...
'ValidationData',augimdsValidation, ...
'ValidationFrequency',3, ...
'Verbose',false, ...
'Plots','training-progress');
netTransfer = trainNetwork(augimdsTrain,layers,options);
[YPred,scores] = classify(netTransfer,augimdsValidation);
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));
end
YValidation = imdsValidation.Labels;
accuracy = mean(YPred == YValidation);
댓글 수: 0
채택된 답변
Kojiro Saito
2022년 11월 7일
편집: Kojiro Saito
2022년 11월 7일
新しい画像ファイルに適用することも可能です。
MATLABのワークスペースがクリアされても使えるように、まず学習済みのモデルをファイルに保存します。
save('netTransfer.mat', 'netTransfer')
netTransfer.matというファイルにモデルが保存されます。
matファイルからモデルをloadで読み込み、新しい画像ファイルをimageDatastoreで読み込みます。ここではnewというフォルダに画像が入っている前提です。
augmentedImageDatastoreで画像の前処理を行い、classifyで分類します。
% 学習済みモデルの読み込み
load('netTransfer.mat')
% 新しい画像ファイルの読み込み
imds = imageDatastore('new');
% または画像ファイルを指定するでもOK
% imds = imageDatastore('../new/image1.jpg');
% 画像のリサイズ、色の変換の前処理を実施
augImds = augmentedImageDatastore([227 227], imds, 'ColorPreprocessing','gray2rgb');
% 画像分類
[YPred,scores] = classify(netTransfer,augImds);
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 イメージを使用した深層学習에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!