#概要
スマートフォンアプリ「スクールアイドルフェスティバル(以下「スクフェス」)」のカードから学習データの作成を行いニューラルネットワークでの学習を行う.
今回はその中で学習データの作成を行った.
#学習データ
今回作成したデータはスクショが面倒だったため2年生の3人のみを対象とした.
- スクショにより得られた枚数
- 高坂穂乃果:45枚
- 南ことり:32枚
- 園田海未:55枚
ニューラルネットワークでの学習を行うにあたり,これでは学習データが少なすぎると考えられるためDataAugmentationを行うことにした.
#DataAugmentation
DataAugmentationとは画像の回転や拡大・縮小,左右反転を行うことによりデータの拡張を行うものである.
KerasではImageDataGeneratorクラスを使うことによりDataAugmentationを行うことができる.
###実装
data_augment.py
import numpy as np
import glob
from keras.preprocessing import image
from keras.preprocessing.image import img_to_array, load_img, array_to_img, ImageDataGenerator
#ディレクトリ内の画像を読み込み
files = glob.glob("読み込むディレクトリ" + "/*.PNG")
for i,file in enumerate(files):
#画像をPIL形式で読み込み
img = load_img(file,target_size=(2436,1125))
#PIL形式をnumpyのndarray形式に変換
x = img_to_array(img)
#ImageDataGeneratorクラスがndarray形式の4次元配列を要求するため
x = x.reshape((1,) + x.shape)
#クラス生成
datagen = ImageDataGenerator(
rotation_range=25,#画像の回転
fill_mode='constant',#境界周りの埋め方の指定
width_shift_range=0.2,#水平シフト
height_shift_range=0.2,#垂直シフト
horizontal_flip=True,#水平方向にランダムに反転
vertical_flip=True)#垂直方向にランダムに反転
#画像を生成して保存
aug_img = datagen.flow(x, batch_size = 1, save_to_dir = "生成した画像を保存するディレクトリ", save_prefix = "umi", save_format = "jpg")
#作成する画像の数だけループ
for i in range(10):
batch = aug_img.next()
###生成結果
上記のソースの処理の結果以下に示す「生成画像の例」のような画像が生成できた
- 生成後の画像の枚数
- 高坂穂乃果:483枚
- 南ことり:349枚
- 園田海未:598枚
#まとめ
今回はスクフェスのカードからスクショにより学習データを作成しDataAugmentationを行った.
次回は~~(気力があれば)~~今回作成したデータを使いニューラルネットワークでの学習を行いたい.