MATLAB Answers

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

5 views (last 30 days)
Kodai Sato
Kodai Sato on 6 Jan 2020
Commented: Kodai Sato on 10 Jan 2020
深層学習を使用したセマンティック セグメンテーションをもとに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 Comment

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

Sign in to comment.

Accepted Answer

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

  1 Comment

Kodai Sato
Kodai Sato on 10 Jan 2020
無事確認できました
ありがとうございました

Sign in to comment.

More Answers (0)

Sign in to answer this question.