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

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

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

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

Python

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

Q&A

0回答

249閲覧

keras imagedatagenerator

22Go

総合スコア55

Keras

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

Python

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

0グッド

1クリップ

投稿2019/06/29 01:58

kerasで画像判別の学習を行っています。
ローカルに保存してある画像をtrain/test/vali=6:3:1に分け、
trainとtestの画像に対して、imagedatageneratorを適用したいです

python

1# coding:utf-8 2 3import keras 4from keras.utils import np_utils 5from keras.layers.convolutional import Conv2D, MaxPooling2D 6from keras.models import Sequential 7from keras.layers.core import Dense, Dropout, Activation, Flatten 8from keras.preprocessing.image import array_to_img, img_to_array, list_pictures, load_img 9import numpy as np 10import pandas as pd 11from sklearn.model_selection import train_test_split 12import matplotlib.pyplot as plt 13from sklearn.neighbors import KNeighborsClassifier 14 15#【学習データの読み込み】 16X = [] 17Y = []#category_name 18 19V = [] 20W = [] 21 22 23# aの画像 24for picture in list_pictures('Der/a'): 25 img = img_to_array(load_img(picture, target_size=(64,64))) 26 X.append(img) 27 28 Y.append(0) 29 30for picture in list_pictures('Der/a'): 31 img = img_to_array(load_img(picture, target_size=(64,64))) 32 V.append(img) 33 34 W.append(0) 35 36# b 37for picture in list_pictures('Der/b'): 38 img = img_to_array(load_img(picture, target_size=(64,64))) 39 X.append(img) 40 41 Y.append(1) 42 43for picture in list_pictures('Der/b'): 44 img = img_to_array(load_img(picture, target_size=(64,64))) 45 V.append(img) 46 47 W.append(1) 48 49# c 50for picture in list_pictures('Der/c'): 51 img = img_to_array(load_img(picture, target_size=(64,64))) 52 X.append(img) 53 54 Y.append(2) 55 56for picture in list_pictures('Der/c'): 57 img = img_to_array(load_img(picture, target_size=(64,64))) 58 V.append(img) 59 60 W.append(2) 61 62# dの画像 63for picture in list_pictures('Der/d'): 64 img = img_to_array(load_img(picture, target_size=(64,64))) 65 X.append(img) 66 67 Y.append(3) 68 69for picture in list_pictures('Der/d'): 70 img = img_to_array(load_img(picture, target_size=(64,64))) 71 V.append(img) 72 73 W.append(3) 74 75# e 76for picture in list_pictures('Der/e'): 77 img = img_to_array(load_img(picture, target_size=(64,64))) 78 X.append(img) 79 80 Y.append(4) 81 82for picture in list_pictures('Der/e'): 83 img = img_to_array(load_img(picture, target_size=(64,64))) 84 V.append(img) 85 86 W.append(4) 87 88# fの画像 89for picture in list_pictures('Der/f'): 90 img = img_to_array(load_img(picture, target_size=(64,64))) 91 X.append(img) 92 93 Y.append(5) 94 95for picture in list_pictures('Der/f'): 96 img = img_to_array(load_img(picture, target_size=(64,64))) 97 V.append(img) 98 99 W.append(5) 100 101# gの画像 102for picture in list_pictures('Der/g'): 103 img = img_to_array(load_img(picture, target_size=(64,64))) 104 X.append(img) 105 106 Y.append(6) 107 108for picture in list_pictures('Der/g'): 109 img = img_to_array(load_img(picture, target_size=(64,64))) 110 V.append(img) 111 112 W.append(6) 113 114# hの画像 115for picture in list_pictures('Der/h'): 116 img = img_to_array(load_img(picture, target_size=(64,64))) 117 X.append(img) 118 119 Y.append(7) 120 121for picture in list_pictures('Der/h'): 122 img = img_to_array(load_img(picture, target_size=(64,64))) 123 V.append(img) 124 125 W.append(7) 126 127# load_imgをarrayに変換 128X = np.asarray(X) 129Y = np.asarray(Y) 130V = np.asarray(V) 131W = np.asarray(W) 132 133# 画素値を0から1の範囲に変換 134X = X.astype('float32') 135X = X / 255.0 136V = V.astype('float32') 137V = V / 255.0 138 139# クラスの形式を変換 140Y = np_utils.to_categorical(Y, 8)#(ベクトル変換したいラベル、配列数) 141W = np_utils.to_categorical(W, 8) 142 143 144 145X_train, X_vali, y_train, y_vali= train_test_split(X, Y, test_size=0.2) 146V_test, W_test = (V, W) 147 148# 【CNNを構築】 149model = Sequential() 150 151 152model.add(Conv2D(32, (3, 3), padding='same', 153 input_shape=X_train.shape[1:])) 154 155model.add(Activation('relu')) 156model.add(Conv2D(32, (3, 3))) 157model.add(Activation('relu')) 158model.add(MaxPooling2D(pool_size=(2, 2))) 159 160model.add(Dropout(0.4)) 161 162model.add(Conv2D(64, (3, 3), padding='same')) 163model.add(Activation('relu')) 164model.add(Conv2D(64, (3, 3))) 165model.add(Activation('relu')) 166model.add(MaxPooling2D(pool_size=(2, 2))) 167model.add(Dropout(0.4)) 168 169model.add(Flatten()) 170model.add(Dense(512)) 171model.add(Activation('relu')) 172model.add(Dropout(0.4)) 173model.add(Dense(8))#カテゴリー数 174model.add(Activation('softmax')) 175 176# 【コンパイル】 177model.compile(loss='categorical_crossentropy', 178 optimizer='adam', 179 metrics=['accuracy']) 180 181#【学習実行】 182history = model.fit(X_train, y_train, batch_size=64, epochs=100, 183 validation_data = (X_vali, y_vali), verbose = 1) 184 185 186 187score = model.evaluate(V_test, W_test, verbose = 1) 188print("正解", score[1], "loss", score[0])

現在はこのような状態なのですが
この場合だと、X.Yで読み込んだカテゴリー内の画像をtrain:test=8:2に分け、
V.Wで別のディレクトリーからvalidationを作成しています。
これだと、画像を追加する時にどのディレクトリに追加するか考えるのが面倒になるので、

X.Yで読み込んだ画像をtrain/test/validationに6:3:1に振り分けた後に
imagedatageneratorで水増し作業をして学習させたいです。

詳しい方、アドバイスをお願いいたします。
宜しくお願い致します。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問