MATLAB Answers

u-netによるセマンティックセグメンテーション

19 ビュー (過去 30 日間)
Kodai Sato
Kodai Sato 2020 年 1 月 6 日
コメント済み: Kodai Sato 2020 年 1 月 10 日
深層学習を使用したセマンティック セグメンテーションをもとにU-netを用いて自分で用意したデータセットでセマンティックセグメンテーションを行ったところ以下のようなエラーが発生しました.
>> i_learning
エラー: nnet.cnn.LayerGraph>iValidateLayerName (line 663)
'pixelLabels' は存在しません。
エラー: nnet.cnn.LayerGraph/removeLayers (line 234)
iValidateLayerName( ...
エラー: i_learning (line 17)
lgraph = removeLayers(lgraph,'pixelLabels');
以下にi_learningのコードを示します.
%ネットワークの作成
imageSize = [352 480 3];
%imageSize = [180 240 3];
numClasses = numel(classes);
lgraph = unetLayers(imageSize,numClasses);
%クラスの重み付けを使用したクラスのバランス調整
imageFreq = tbl.PixelCount ./ tbl.ImagePixelCount;
classWeights = median(imageFreq) ./ imageFreq;
pxLayer = pixelClassificationLayer('Name','labels','ClassNames',tbl.Name,'ClassWeights',classWeights);
lgraph = removeLayers(lgraph,'pixelLabels');  %エラー発生箇所
lgraph = addLayers(lgraph, pxLayer);
lgraph = connectLayers(lgraph,'softmax','labels');
%学習オプションの選択
options = trainingOptions('sgdm', ...
'Momentum',0.9, ...
'InitialLearnRate',1e-3, ...
'L2Regularization',0.0005, ...
'MaxEpochs',200, ...
'MiniBatchSize',1, ...
'Shuffle','every-epoch', ...
'VerboseFrequency',2);
%データ拡張
augmenter = imageDataAugmenter('RandXReflection',true,...
'RandXTranslation',[-10 10],'RandYTranslation',[-10 10]);
%学習の開始
pximds = pixelLabelImageDatastore(imdsTrain,pxdsTrain,'DataAugmentation',augmenter);
net= trainNetwork(pximds,lgraph,options);

  1 件のコメント

Kodai Sato
Kodai Sato 2020 年 1 月 6 日
lgraph = removeLayers(lgraph,'pixelLabels');
lgraph = addLayers(lgraph, pxLayer);
lgraph = connectLayers(lgraph,'softmax','labels');
上のコードの部分を書き換えればいいのでしょうが,層の名前がわかりません.

Sign in to comment.

採用された回答

michio
michio 2020 年 1 月 8 日
層の名前であれば
lgraph.Layers
と実行したときに確認できると思いましたがいかがでしょう。

  1 件のコメント

Kodai Sato
Kodai Sato 2020 年 1 月 10 日
無事確認できました
ありがとうございました

Sign in to comment.

その他の回答 (0 件)