私のアプリケーションは、機械学習(畳み込みニューラルネットワーク)を使用した事故回避車システムです。私の画像は200x100 JPG画像で、出力は4つの要素の配列です。車は左、右、停止、または前進します。したがって、出力では1つの要素を1
(実行する必要がある正しいアクションに従って)と他の3つの要素は0
。
画像を入力してアクションを個別に決定できるように、今すぐマシンをトレーニングしたいと思います。これが私のコードです:
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.optimizers import SGD
import numpy as np
model = Sequential()
model.add(Convolution2D(16, 1, 1, border_mode='valid', dim_ordering='tf', input_shape=(200, 150, 1)))
model.add(Activation('relu'))
model.add(Convolution2D(16, 1, 1))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25)) #Cannot take float values
model.add(Convolution2D(32, 1, 1, border_mode='valid'))
model.add(Activation('relu'))
model.add(Convolution2D(32, 1, 1))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
# Note: Keras does automatic shape inference.
model.add(Dense(256))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(10))
model.add(Activation('softmax'))
model.fit(X_train, Y_train, batch_size=32, nb_Epoch=1)
画像を入力するにはどうすればよいですか(自分のPCにあります)? Yトレインを指定するにはどうすればよいですか?
このKerasブログ投稿 非常に少ないデータを使用して強力な画像分類モデルを構築する は、ディレクトリに保存された画像でモデルをトレーニングするための優れたチュートリアルです。また、@ isaac-mooreの回答で参照されているメンバー関数flow_from_directory
を持つImageDataGenerator
クラスも紹介しています。 flow from directory
は画像のトレーニングに使用でき、ディレクトリ構造はY_train
の値を推定するために使用されます。
チュートリアルのブログ投稿に付属する3つのpythonスクリプトは、以下のリンクにあります。
(もちろん、これらのリンクはブログ投稿自体にありますが、リンクは中央に配置されていません。)スクリプト2および3は、前の出力に基づいて構築されていることに注意してください。また、追加のファイルを Kaggle および Github からダウンロードする必要があることに注意してください。
Train用のフォルダーを作成し、そのフォルダー内に、画像のクラス用に別のフォルダーを作成します。
を使用して画像にアクセスする
train_generator = train_datagen.flow_from_directory(
'data/train',
target_size=(150, 150),
batch_size=32,
class_mode='binary')
keras.io を参照
このリポジトリには例があります:
https://github.com/ZFTurbo/KAGGLE_DISTRACTED_DRIVER/blob/master/run_keras_simple.py
それらは異なるフォルダーを持ち、すべてのフォルダーに異なるクラスの画像があります。それらはopencvを使用して画像をロードし、すべての画像のクラスを含む配列を作成します。