imageDataA​ugmenterを使​わないData Augmentationについて

4 ビュー (過去 30 日間)
naoki etori
naoki etori 2019 年 10 月 18 日
コメント済み: Kenta 2020 年 5 月 26 日
CNNを使って画像の分類を行っています.
分類精度を上げるためにData Augmentationを行うことを考えています.
そこでimageDataAugmenterを使用してData Augmentationを行おうと考えましたが,
出来ることが限られているため,この関数を使わずにData Augmentationをしたいです.
現在は,transformを使ってData Augmentationを行おうと試みましたが,ImageDatastoreがTransformedDatastoreに変換されると学習ができないようです.
解決策がありましたらご回答の程よろしくお願い致します.
  3 件のコメント
naoki etori
naoki etori 2019 年 10 月 18 日
こんにちは. 回答ありがとうございます. 具体的にはノイズ付与とマスクの2つをしようと考えてます.
Kenta
Kenta 2020 年 5 月 26 日
こちら、マスクをしてaugmentationをするコードです。参考になれば幸いです。

サインインしてコメントする。

採用された回答

Kenta
Kenta 2019 年 10 月 18 日
function I_noise = img_aug(filename)
% load images
I = imread(filename);
I_noise = imnoise(I,'salt & pepper',0.02);
x = randi(size(I,1),1);
y = randi(size(I,2),1);
h = randi(size(I,1)-x,1);
w = randi(size(I,2)-y,1);
I_noise(x:x+h,y:y+w,:)=128;
end
ご返信ありがとうございます。確かに、マスクやカスタムした形のノイズは、
イメージストアでは直接的にはできないかもしれません。ただ、上のように、補助関数を同じパスに保存したうえで、
下のコード例を実行すると、画像のように、ノイズおよびマスクの入った画像が取得できます。
上では、まず、ノイズを入れる。そして、マスクの左上のx、y座標をランダムに発生させ、さらに、縦横の長さも画像に入る範囲でランダムに決定します。そのルールに従って、イメージデータストアから読みだすように定義すると、下のような、マスクとノイズがある画像を生成、訓練データとして入力することができます。
ノイズやマスクの設定は、質問者様の設定によると思うので、適宜変更してご使用いただければと思います。
よろしくお願いいたします。
imds = imageDatastore({'street1.jpg','street2.jpg','peppers.png','corn.tif'});
imds.ReadFcn = @(filename)img_aug(filename);
allimgs = readall(imds);
montage(allimgs)
imgs.png
  4 件のコメント
naoki etori
naoki etori 2019 年 10 月 21 日
回答ありがとうございます.
とりあえず2番目の方法で実装できました.ありがとうございます.
Data Augmentationの手法の一つとして部分マスクというものがあります.
google scholarで部分マスクを行った論文がいくつかありました.
Kenta
Kenta 2019 年 10 月 21 日
教えていただきありがとうございます。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeイメージを使用した深層学習 についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!