wake-up-neo.net

Wie kann ich mit Keras einen X_train von Bildern (mehr als tausend Bilder) eingeben?

Meine Anwendung sind Unfallvermeidungssysteme mit Machine Learning (Convolutional Neural Networks). Meine Bilder sind 200 x 100 JPG-Bilder und die Ausgabe ist ein Array von 4 Elementen: Das Auto würde sich nach links, rechts, anhalten oder vorwärts bewegen. Die Ausgabe lässt also ein Element 1 sein (entsprechend der korrekten Aktion, die ausgeführt werden sollte), und die 3 anderen Elemente werden 0 sein.

Ich möchte mein Gerät jetzt trainieren, um es dabei zu unterstützen, ein beliebiges Bild einzugeben und selbstständig über die Aktion zu entscheiden. Hier ist mein Code:

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)

Wie kann ich meine Bilder eingeben (ich habe sie auf meinem PC)? Und wie kann ich den Y-Zug angeben?

5
Zahra Sorour

Dieser Keras-Blogbeitrag: Erstellen leistungsfähiger Bildklassifizierungsmodelle mit sehr wenig Daten , ist ein hervorragendes Tutorial, um ein Modell anhand von in Verzeichnissen gespeicherten Bildern zu trainieren. Außerdem wird die Klasse ImageDataGenerator eingeführt, auf die die Memberfunktion flow_from_directory in der Antwort von @ isaac-moore verweist. flow from directory kann für das Trainieren von Bildern verwendet werden, wobei die Verzeichnisstruktur verwendet wird, um den Wert von Y_train abzuleiten.

Die drei Python-Skripts, die den Tutorial-Blogeintrag begleiten, finden Sie unter den folgenden Links:

  1. classifier_from_little_data_script_1.py
  2. classifier_from_little_data_script_2.py
  3. classifier_from_little_data_script_3.py

(Diese Links befinden sich natürlich im Blog-Post selbst, die Links sind jedoch nicht zentral angeordnet.) Beachten Sie, dass die Skripts 2 und 3 auf der Ausgabe der vorherigen basieren. Beachten Sie auch, dass zusätzliche Dateien von Kaggle und Github heruntergeladen werden müssen.

9
dhinckley

Erstellen Sie einen Ordner für den Zug und erstellen Sie im Ordner separate Ordner für die Bildklassen.

Greifen Sie mit auf die Bilder zu 

  train_generator = train_datagen.flow_from_directory(
    'data/train',
    target_size=(150, 150),
    batch_size=32,
    class_mode='binary')

In Bezug auf keras.io

2
isaac-moore

In diesem Repository haben Sie ein Beispiel:

https://github.com/ZFTurbo/KAGGLE_DISTRACTED_DRIVER/blob/master/run_keras_simple.py

Sie haben unterschiedliche Ordner, in jedem Ordner gibt es eine andere Bildklasse. Sie laden die Bilder mit opencv und bilden ein Array, das die Klasse jedes Bildes enthält.

0
Rob