セマンティックセグメンテーションに使用するデータセットについて
Afficher commentaires plus anciens
2つのデータセットを組み合わせたセマンティックセグメンテーションについて質問があります。
「深層学習を使用したセマンティックセグメンテーション」
において使用されているCamVidデータセットからランダムに200枚を選択、そして貴社のアドオンアプリのグランドトゥルースラベラーを用いて作成した200枚程度のオリジナル画像を合わせた、合計400枚程のデータでセマンティックセグメンテーションを行いました。
グランドトゥルースラベラーで作成したオリジナルピクセルラベルイメージデータはグレースケールになっており、ビット深さが8のチャンネル数が1になっています。
pixelLabelDatastoreを使用してピクセルラベルイメージデータを読み込む際、そのピクセルラベルイメージデータのビット深さ(チャンネル数)が共通でないとエラーが出てしまう為、作成したピクセルラベルイメージデータのビット深さを、CamVidデータセットのピクセルラベルイメージと同様に24ビット(3チャンネル)に再作成しました。以下がその時使用したコードです。
rootFile = fullfile('C:\','Users','yohu-','OneDrive','デスクトップ');
imDir = fullfile(rootFile,'imageLabel');
imds = imageDatastore(imDir);%グレースケール画像データストア
for v = 1:1:173 %画像枚数
Y = readimage(imds,v); %イメージ読み込み
Y2 = imresize(Y,[720,960]);
[G] = imsplit(Y2); %グレースケールのピクセル値を取得
Y2 = cat(3,G,G,G); %ピクセル値を3次元行列として連結
s = num2str(v); %インクリメント変数Vを文字列に変換
str = [s,'.png']; %変換した文字列と拡張子文字列を連結
newstr = join(str);
imwrite(Y2,newstr); %指定した文字列のイメージファイルの保存
end
そして、学習時に参照させるクラスをCamVidデータセットとオリジナルデータセットで分けたかったので、CamVidデータセットからはSky,Pole,Pavement,Tree,SignSymbol,Fence,Car,Pedestrian,Bicyclistクラスを参照し、グランドトゥルースラベラーで作成したデータセットからBuilding,Roadクラスを参照するようにしました。
参照方法は「深層学習を使用したセマンティックセグメンテーション」で用いられた方法と同様に、ピクセルラベルIDをRGBカラー値に対応させた方法を行いました。
以下がそのピクセルラベルIDです。
function labelIDs = camvidPixelLabelIDs()
labelIDs = { ...
% "Sky"
[
128 128 128; ... % "Sky"
]
% "Building"
[
002 002 002;
]
% "Pole"
[
192 192 128; ... % "Column_Pole"
000 000 064; ... % "TrafficCone"
]
% Road
[
004 004 004;
]
% "Pavement"
[
000 000 192; ... % "Sidewalk"
064 192 128; ... % "ParkingBlock"
128 128 192; ... % "RoadShoulder"
]
% "Tree"
[
128 128 000; ... % "Tree"
192 192 000; ... % "VegetationMisc"
]
% "SignSymbol"
[
192 128 128; ... % "SignSymbol"
128 128 064; ... % "Misc_Text"
000 064 064; ... % "TrafficLight"
]
% "Fence"
[
064 064 128; ... % "Fence"
]
% "Car"
[
064 000 128; ... % "Car"
064 128 192; ... % "SUVPickupTruck"
192 128 192; ... % "Truck_Bus"
192 064 128; ... % "Train"
128 064 064; ... % "OtherMoving"
]
% "Pedestrian"
[
064 064 000; ... % "Pedestrian"
192 128 064; ... % "Child"
064 000 192; ... % "CartLuggagePram"
064 128 064; ... % "Animal"
]
% "Bicyclist"
[
000 128 192; ... % "Bicyclist"
192 000 192; ... % "MotorcycleScooter"
]
};
end
グランドトゥルースラベラーで作成した時、ピクセルラベルイメージのBuildingとRoadのグレースケール値がそれぞれ2と4だったので、それに合わせてピクセルラベルでも参照できるようにBuildingとRoadクラスだけデフォルトから変更しています。
上記URL「深層学習を使用したセマンティックセグメンテーション」のソースコードとほぼ同様に作成していたので、このピクセルラベル参照設定と、imageDatastoreとpixelDatastoreの参照先しかソースコードには変更を加えていません。
しかし、学習を実行してみると精度が45%程度からほぼ横ばいに停滞してしまい、学習精度が上がりませんでした。

ピクセルラベルの参照方法やデータストアのソート順に問題があるのでしょうか。
そもそもピクセルラベルイメージ仕様が異なるデータを合わせた学習自体が不可能なのでしょうか。
ご教授お願い致します。
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur セマンティック セグメンテーション dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!