LoginSignup
6
2

More than 5 years have passed since last update.

KerasのImageDataGeneratorにおけるbrightness_rangeの挙動

Last updated at Posted at 2018-10-26

自分の備忘録/メモも兼ねて。

画像認識系のDeep Learningする際に、訓練データ(画像)を回転させたり左右反転したり、とデータの水増し(data augumentation)することってよくあると思います。Kerasでは、ImageDataGeneratorクラスを使って簡単に水増しできちゃうわけですが、その際のオプション「brightness_range」の挙動について。

Kerasのbrigtness_rangeとは

brightness_rangeは、画像データの水増しの際に、明るさをランダムに変更するオプションです。こんな感じでImageDataGeneratorのコンストラクタに、brightness_rangeのオプションとして、明るさ変更の強度の範囲をタプルかリストで渡すだけです。あとはflowとかflow_from_directoryとかに上記を渡してあげると、ランダムに明るさを変えた画像を返すジェネレータを作ってくれます。fit_generatorにそのジェネレータを渡せば学習しながら画像を水増ししてくれて大変便利です。
(ImageDataGeneratorについて:https://keras.io/ja/preprocessing/image/)

from keras.preprocessing.image import ImageDataGenerator

img_gen = ImageDataGenerator(brightness_range=(0.3, 1.0))
model.fit_generator(
        flow(img_gen), steps_per_epoch=100, epochs=10
)

試してみたところおかしい

おかしいです。うまく学習が進みません。よく見てみると、brightness_rangeオプションを付けると、0-1値の範囲の画像を入力してるのに、どうやら0-255の範囲に変換されてしまっているよう… ちなみに使っているのは、Google Colabに最初から入っているバージョン2.1.6のKerasです。

※同様の指摘がこちらにありました。
https://github.com/keras-team/keras/issues/10366#issuecomment-449545374

とりあえず上記の現象を回避するために、ジェネレータから吐き出された画像を再度rescaleする処理を追加しましたが、うまく回避する方法ないものでしょうか。詳しい人教えてください。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2