AlexNetを用いた転移学習を実装したい
5 views (last 30 days)
Show older comments
options = trainingOptions('sgdm', ...
'MiniBatchSize',10, ...
'MaxEpochs',6, ...
'InitialLearnRate',1e-4, ...
'Shuffle','every-epoch', ...
'ValidationData',augimdsValidation, ...
'ValidationFrequency',3, ...
'Verbose',false, ...
'Plots','training-progress');
エラーメッセージ
nnet.cnn.TrainingOptionsSGDM
'ValidationData'の値は無効です。三番目の次元で入力イメージサイズが異なっているため、augmentedImageDatastoreはデータのMiniBatchesを形成できません。'ColorPreprocessing'オプションを使用してすべての拡張イメージに同数のチャネルを確保することを検討してください。
エラー:trainingOptions(行 340)opts=nnet.cnn.TrainingOptionsSGDM(varargin{:});
サンプルコードをコピペし、自前のイメージフォルダを使っています。
0 Comments
Accepted Answer
Atsushi Ueno
on 25 Oct 2022
Edited: Atsushi Ueno
on 26 Oct 2022
%> (Alexnetの)最初のイメージ入力層にはサイズが 227 x 227 x 3 の入力イメージが必要です。ここで 3 はカラーチャネルの数です。
「三番目の次元で入力イメージサイズが異なっている」は即ち「カラーイメージが入力されていない」という事です。自前のイメージフォルダの中にカラーではないイメージファイルが存在するはずです。(そのファイルの変更は不要です)
イメージ データストアにグレースケール イメージと RGB イメージが混在していても、augmentedImageDatastore関数にそれらを統一する機能「ColorPreprocessing — 色の前処理演算」オプションがあります。
「'ColorPreprocessing'オプションを使用してすべての拡張イメージに同数のチャネルを確保することを検討してください」は即ち「'ColorPreprocessing'オプションを使用して入力をカラーイメージに統一してください」という事です。
augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain, ...
'DataAugmentation',imageAugmenter, ... % ←他のデータ拡張を実行
'ColorPreprocessing','gray2rgb'); % ←ここを追加
(2022/10/26追記)
>他のデータ拡張を実行せずに検証イメージのサイズを自動的に変更するには、追加の前処理演算を指定せずに拡張イメージ データストアを使用します。(つまり検証イメージの方は2行目を追加しないという事です)
augimdsValidation = augmentedImageDatastore(inputSize(1:2),imdsValidation, ...
'ColorPreprocessing','gray2rgb'); % ←ここを追加
8 Comments
Atsushi Ueno
on 27 Oct 2022
今回重要なことは画像の色調が統一されておらず、'ColorPreprocessing'オプションを使用して入力をカラーイメージに統一することができる事で間違いないでしょうか?
⇒間違いありません。エラーメッセージの言う通りです。
何度も回答を間違えてしまい申し訳ありません。出来るだけこちらでもコードを動かして検証してから投稿するように致します。
More Answers (0)
See Also
Categories
Find more on イメージを使用した深層学習 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!