knaka Tech-Blog

AI, IoT, DIYエレクトロニクス, データサイエンスについて投稿予定です。

ディープラーニングで画像認識 実装(2)、画像の前処理


index:

概要

前回は、keras で画像認識の学習、検証(画像認識の判定結果出力)等、
一連の流れを記載しましたが。
ディープラーニングで画像認識で、認識精度を向上させる為に、
学習画像数を増やしたり、前処理での作業を追加する場合がありそうですので、
ImageDataGeneratorを使用して、前処理(画像の水増し)を実施する内容です

・水増し処理なしで、十分な画像を準備できて、
認識精度も予想値以上に、向上している場合は。
不要な処理になりそうですので、精度向上面等で必用な場合は参考頂ければ
と思います。

環境

keras : 2.1.3
tensorflow : 1.4
python : 3.5.2

コード

前回のpushに含まれていますが。
before_proc.py
https://github.com/kuc-arc-f/img_data_test/blob/master/before_proc.py



・ImageDataGenerator の定義、
 元の画像の指定(水増しする元画像)

#
datagen = ImageDataGenerator(
        rotation_range=40,
        width_shift_range=0.2,
        height_shift_range=0.2,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True,
        fill_mode='nearest')

img = load_img('neko_13.jpg')

.flow を使用して、ループ処理
指定回数で、処理を抜けます
save_to_dir: 保存先のフォルダ
save_prefix: ヘッダ文字

#
img_num = 20
i = 0
#for batch in datagen.flow(x, batch_size=1,
#                          save_to_dir='preview', save_prefix='tori', save_format='jpg'):
for batch in datagen.flow(x, batch_size=1,
                          save_to_dir='data/train/cat', save_prefix='neko_13', save_format='jpg'):

    i += 1
    if i > img_num:
        break

実行結果

f:id:knaka0209:20181201150536p:plain

水増し画像が追加されました。
前回の、画像の学習用データも。
同様の手法で作成した形となります

まとめ

上記の画像処理も、比較的カンタンに実装できて
kerase ImageDataGeneratorを使うと、前処理含めて
画像の学習処理ができそうです。