MATLAB Answers

セマンティックセグメンテーションの評価

2 views (last 30 days)
Kodai Sato
Kodai Sato on 7 Dec 2019
Commented: Kenta on 7 Dec 2019
URLのコードをもとに解析を行ったところ学習と画像の出力は出来たのですがネットワークの評価の際GPUのメモリ不足のエラーが出ました
%学習済みネットワークの評価
pxdsResults = semanticseg(imdsTest,net,'WriteLocation',tempdir,'Verbose',false);
metrics = evaluateSemanticSegmentation(pxdsResults,pxdsTest,'Verbose',false);
metrics.DataSetMetrics
metrics.ClassMetrics
metrics.ConfusionMatrix
normConfMatData = metrics.NormalizedConfusionMatrix.Variables;
figure
h = heatmap(classes,classes,100*normConfMatData);
h.XLabel = 'Predicted Class';
h.YLabel = 'True Class';
h.Title = 'Normalized Confusion Matrix (%)';
%学習オプションの選択
options = trainingOptions('sgdm', ...
'Momentum',0.9, ...
'InitialLearnRate',1e-3, ...
'L2Regularization',0.0005, ...
'MaxEpochs',100, ...
'MiniBatchSize',1, ...
'Shuffle','every-epoch', ...
'VerboseFrequency',2);
CUDADevice のプロパティ:
Name: 'GeForce GTX 950'
Index: 1
ComputeCapability: '5.2'
SupportsDouble: 1
DriverVersion: 10.1000
ToolkitVersion: 10.1000
MaxThreadsPerBlock: 1024
MaxShmemPerBlock: 49152
MaxThreadBlockSize: [1024 1024 64]
MaxGridSize: [2.1475e+09 65535 65535]
SIMDWidth: 32
TotalMemory: 2.1475e+09
AvailableMemory: 1.6633e+09
MultiprocessorCount: 6
ClockRateKHz: 1190000
ComputeMode: 'Default'
GPUOverlapsTransfers: 1
KernelExecutionTimeout: 1
CanMapHostMemory: 1
DeviceSupported: 1
DeviceSelected: 1

  0 Comments

Sign in to comment.

Accepted Answer

Kenta
Kenta on 7 Dec 2019
こんにちは、ネットワークの評価の際にGPUのメモリ不足のエラーが出たということは
pxdsResults = semanticseg(imdsTest,net,'WriteLocation',tempdir,'Verbose',false);
こちらのコードが実行できなかったということで正しいでしょうか?
関数semanticsegを実行する際のデフォルトのミニバッチサイズは128になっているため、そのミニバッチ分のデータがGPUメモリに乗らなかったと考えられます。そのため、
pxdsResults = semanticseg(imdsTest,net,'WriteLocation',tempdir,'Verbose',false,'MiniBatchSize',1);
などとして、ミニバッチサイズを小さくした上で実行すれば問題ないと思うのですがいかがでしょうか。

  2 Comments

Kodai Sato
Kodai Sato on 7 Dec 2019
無事に動作しました
本当に助かりました
ありがとうございました
Kenta
Kenta on 7 Dec 2019
返信いただきありがとうございます。よかったです。
ミニバッチサイズを1にすると、推論の時間が長くなるので、128以下の範囲で
もう少し大きくしてもよいかもしれません。とはいえ、値を大きくしてフリーズしても困りますので、難しいですが...

Sign in to comment.

More Answers (0)