AIプログラミング

Kerasを使用して画像のデータ拡張(回転、拡大・縮小)を行う

投稿日:

Kerasではデータ拡張(Data Augmentation)の処理を効果的に行うため、ImageDataGeneratorというジェネレーターが用意されています。

データ拡張とは、画像に対して移動、回転、拡大・縮小など加工することで、データ数を水増しするテクニックです。

ImageDataGeneratorを使用することで、このような画像を簡単に生成することが出来ます

ImageDataGenarator

機械学習、ディープラーニングの世界では大量のデータが必要となるので、オリジナルデータが少ない場合、ImageDataGeneratorを使用することで簡単に画像を増やす事ができます。

ImageDataGeneratorのimport

ImageDataGeneratorはkerasのライブラリです。次のようにインポートします。

ImageDataGeneratorの引数

ImageDataGeneratorの引数です。パラメータを指定しなかった場合は"="の後がデフォルト値として設定されます。

ImageDataGeneratorの代表的な引数

ImageDataGeneratorの代表的な引数を具体的な画像と共に説明します。

使用したオリジナル画像(フリー画像)

pony

rotation_range

指定角度の範囲でランダムに回転します。
rotation_range=90 の場合、0℃~90℃の範囲内で回転します。

rotation_range

width_shift_range

ランダムに水平シフトを行う範囲を指定します。
width_shift_range=0.3の場合。

width_shift_range

height_shift_range

ランダムに垂直シフトを行う範囲を指定します。
height_shift_range=0.3の場合。

height_shift_range

shear_range

シアー変換をかけます。
shear_range=0.85の場合。

shear_range

zoom_range

ランダムにズームする範囲を指定します。
zoom_range=0.5の場合。

zoom_range
horizontal_flip

画像をランダムに水平シフトし反転します。
horizontal_flip=0.3の場合

horizontal_flip

vertical_flip

画像をランダムに垂直シフトし反転します。
vertical_flip=0.3の場合

vertical_flip

channel_shift_range

画像のチャンネルをランダムに移動します。
channel_shift_range=100の場合

channel_shift_range

プログラムの概要

ImageDataGeneratorを使用して大量の画像を生成するプログラムです。

以下のディレクトリを作成し、image_inputディレクトリに変換したい画像を格納してください。プログラムを実行することで、変換された画像がimage_outディレクトリに格納されます。オリジナル画像は複数枚格納することが出来ます。

image_input ・・・変換したいオリジナル画像を格納(複数枚可能)
image_out ・・・変換後の画像が格納されるディレクトリ

1枚のオリジナル画像に対し、9枚の変換された画像が出力されます。

プログラム

実行結果

channel_shift_range=100と指定しているため、画像のチャンネルが変換された9枚の画像が出力されています。

channel_shift_range

このようにImageDataGeneratorを使用すると、画像を簡単に移動、回転、拡大・縮小など加工できるようになります。オリジナル画像を水増ししたいというときに効果を発揮するので是非使用してください。

-AIプログラミング
-, ,

Copyright© AI人工知能テクノロジー , 2019 All Rights Reserved.