質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

5599閲覧

KerasのImageDataGeneratorを使用したデータ拡張時に、元画像のラベル情報をファイル名に埋め込みたい

juuun

総合スコア3

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/08/12 17:07

前提・実現したいこと

KerasのImageDataGeneratorを使用したデータ拡張時に、元画像のラベル情報をファイル名に埋め込みたい

画像認識系のタスクで、元画像データ(1,000枚)をデータ拡張して10,000枚増やしたいと考えています。
元画像データにはそれぞれラベル(仮にA,B,C,D...Z)がついています。

データ拡張の結果として出力される画像ファイル名の中に、ラベル情報を埋め込みたいのですが、うまくいかない状況です。。

例)
元画像ファイル名(data[0]: 123.png)
元画像に該当するラベル(labels[0]: 'A') の場合、
データ拡張後の画像ファイル名: generated_123_A_01.png, generated_123_A_02.png, ...

発生している問題・エラーメッセージ

以下のようなコードで実行してみているのですが、★★★の部分を工夫することで、上記のことは実現できるものでしょうか..?
もしアイデア・方法をお持ちの方がいらっしゃいましたら、ご教示頂けますと大変助かります。

該当のソースコード

python

1data = data[:1000] 2labels = labels[:1000] 3(中略) 4datagen = ImageDataGenerator( 5 rescale=1./255, 6 zoom_range=0.2) 7(中略) 8g = datagen.flow(data, labels, batch_size=10, save_to_dir="../1_data_augmentation", save_format='png', save_prefix='generated_'+str(★★★)) 9for i in range(num_image): 10 batches = g.next()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ソースコードを見ると、ImageDataGenerator のファイル名は以下のように決まるので、質問内容の事を ImageDataGenerator 単体でやるのは無理です。

<save_prefix で指定した値>_<画像のインデックス>_<7桁の乱数>.<拡張子>

keras-preprocessing/iterator.py at master · keras-team/keras-preprocessing

代替案として、ディレクトリごとにジェネレーターを作成して保存する方法があります。
この方法で名前にクラスIDを付与できますが、上記のように名前のフォーマットは決まっているので、 generated_123_A_01.png という形にはできないです。
どうしてもその名前にしたい場合はあとからリネームするか、Keras のソースコードを編集するのが手っ取り早いでしょう。

python

1import numpy as np 2 3# 保存するディレクトリ 4save_dir = Path("generated") 5save_dir.mkdir(exist_ok=True) 6 7# -5° ~ 5° の範囲でランダムにせん断する。 8datagen = image.ImageDataGenerator(shear_range=5) 9 10for label in np.unique(labels): 11 # ラベルが label の画像一覧 12 label_imgs = imgs[labels == label] 13 14 # ファイル名は label<クラスID>_<画像のインデックス>_<7桁の乱数>.<拡張子> となる。 15 gen = datagen.flow( 16 label_imgs, 17 batch_size=1, 18 save_to_dir=save_dir, 19 save_prefix=f"label{label}", 20 save_format="png", 21 ) 22 for i in range(len(label_imgs)): 23 gen.next() # 一枚生成する。

投稿2019/08/13 03:01

編集2019/08/13 03:02
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問