CNNを用いた回帰用のデータセットの構築について

こんにちは。小熊塁と申します。
回帰用のデータセットを作りたいのですが、大量のイメージを4-D doubleなデータにする際に
D=zeros(480,750,1,1000);
for i=1:1000
I=imread('102001456.png');
D(:,:,:,i)=I;
end
という風なコードを使用するつもりなのですが、3行目のimreadに対する入力を、任意のフォルダにある画像を順に読み込むようにしたいのですが、やり方が分かりません。

 採用された回答

Atsushi Ueno
Atsushi Ueno 2021 年 11 月 5 日

1 投票

folder_name = pwd; % これは現在のフォルダにある画像を探す例
imds = imageDatastore(folder_name);
D=zeros(480,750,1,1000);
for i=1:numel(imds.Files)
I=imread(imds.Files{i});
D(:,:,:,i)=I;
end
気になる点など:
  • PCのメモリに入りきらない位大量のイメージデータを扱う為にはイメージデータストアを使うべきです
  • (上記プログラムでもイメージデータストアを使いましたが、画像ファイル名の参照にしか使っていません)
  • 4-D doubleなデータにするには、全てのイメージが同一サイズでなければなりません
  • (サイズに応じて埋め合せる処理か、サイズ違いの3-D doubleなデータをセル配列に格納する処理が必要です)

3 件のコメント

塁 小熊
塁 小熊 2021 年 11 月 8 日
返信ありがとうございます。
上記のコードで私の環境でも理想的な形になってくれました。
追加で質問したいのですが、このようにして作った4-D doubleデータとラベルを用意した状態から、学習データ:検証データ=7:3に分割は出来るのでしょうか?
それとも別々にデータを用意するしかないのでしょうか。
Atsushi Ueno
Atsushi Ueno 2021 年 11 月 8 日
編集済み: Atsushi Ueno 2021 年 11 月 8 日
学習データ:検証データ=7:3に分割は出来るのでしょうか?⇒出来ます
現在の環境で4-D doubleデータをどのように扱うかで、ご自分の自由に分割する事が出来ます。
下記ドキュメントにおいて、ラベル付き動画データベース(CamVid Dataset)を取り込み、partitionCamVidData()と名付けられた関数でデータをシャッフルしながら各用途(学習用:60%、検証用:20%、テスト用:20%)に振り分けています。参考になるのではないでしょうか?
塁 小熊
塁 小熊 2021 年 11 月 9 日
返信ありがとうございます。
参考になるドキュメントの共有もありがとうございます!
また分からない箇所があったら別途質問を作成したいと思います。

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeDeep Learning Toolbox についてさらに検索

製品

リリース

R2021a

Community Treasure Hunt

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

Start Hunting!