In seiner Funktionalität auf die Lehre in gestalterischen Studiengängen zugeschnitten... Schnittstelle für die moderne Lehre
In seiner Funktionalität auf die Lehre in gestalterischen Studiengängen zugeschnitten... Schnittstelle für die moderne Lehre
Dokumentation eines Fancy Schrankes
1.Ein elektronischer Helfer der einen benachrichtigt, wenn man vergessen hat die Haustür/das Auto zu zusperren.
In der Grundidee soll dieser Schrank die Funktionen haben:
- Verschiedene Outfits Abzuspeichern
- Klamotten die sich im Inneren befinden zu erkennen(rfid/barcode/user Eingabe)
- Auf einem Bildschirm die derzeit verfügbaren Outfits auszugeben
Mögliche erweiterte Funktionen wären:
- Aufzeigen/Vorschlagen von lange nicht benutzter Kleidung(auf dem Screen o. Farben im Schrank(rot/grün))
- Anzeigen des genauen Standortes(der benötigten Klamotten)
Hier die überarbeiteten Usecases
Abgenickt von Tech-nick
Nach langem warten auf die benötigten Kameras konnte ich nun endlich mit dem Programmieren beginnen.
...
Dann fehlte es mir an Kabeln und ich musste mir noch welche bei Herrn Rist ausleihen.
Daraufhin konnte es aber nun endlich an den Aufbau gehen!
Nach 3 Tagen herumprobieren schaffte ich es aber nicht einmal ein eindeutiges Bild zu erfassen.
Deswegen traf ich mich noch einmal mit Herr Rist (eine Woche vor der Endpräsentation!)
Auf die schnelle konnten wir mein Problem aber nicht lösen und ich beschloss Herrn Rist meine Arduino Konstruktion zum Testen mitzugeben. Dadurch hatte ich nun nichts zum Vorzeigen für den Endprototypen….
Daher habe ich mich noch daran versucht ein neuronales Netz zu programmieren.
Benutzt habe ich dafür Anaconda, da man dort den Code in Zellen ablaufen lassen kann - das hilft sehr beim troubleshooting.
Eine gute Hilfe waren die Folien von Herrn Kipp: https://michaelkipp.de/deeplearning/Feedforward-Netze.html
from tensorflow.keras.datasets import fashion_mnist import numpy as np from tensorflow.keras.utils import to_categorical
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
print('x_train: ', x_train.shape)
print('y_train: ', y_train.shape)
print('x_test: ', x_test.shape)
print('y_test: ', y_test.shape)
x_train = x_train.reshape(60000, 784)/255.0 #dimensionen/Vektoren verringern
x_test = x_test.reshape(10000, 784)/255.0
y_train_1hot = to_categorical(y_train, 10) #Aufteilung in die 10 Kleidungskategoren
y_test_1hot = to_categorical(y_test, 10)
print(„x_train: “, x_train.shape)
print(„y_train: “, y_train_1hot.shape) print(„x_test: “, x_test.shape) print(„y_test: “, y_test_1hot.shape) #pixel der bilder wurden bisher in eine reihe/einen vektor gepackt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Flatten, Input #dense layer - node aus einem layer mit allen aus dem naechsten verbunden
'''dense layer - node aus einem layer mit allen aus dem naechsten verbunden
model = Sequential() #Sequential Objekt erstellt
model.add(Dense(60,
input_shape = (784,),
activation = „sigmoid“)) #anzahl der nodes im dense, inputvektor(quasi), sigmoid funktion fuer schoenere werte
model.add(Dense(20,
activation = „sigmoid“)) #inputvektoren schon bekannt(200)
model.add(Dense(10,
activation = „softmax“)) #Anzahl der Nodes muss die anzahl der Endoutputs sein,Normalisiert Werte auf insgesamt 1 (zb 0.7, 0.1, 0.2)
model.summary()
from tensorflow.keras.optimizers import SGD
opt = SGD(learning_rate = 0.1) #Lernrate - anpassung der Gewichtung/Einpendelung -> beste ergebnisse model.compile(optimizer = opt, loss=„categorical_crossentropy“,
metrics=[„acc“]) #ausgabe wie es verlaufen ist
history = model.fit(x_train, y_train_1hot, epochs = 20, batch_size = 32,
verbose = 1,
validation_data = (x_test, y_test_1hot)) #actual training(trainingsdaten, anzahl der durchlaeufe, inputs(alle train),schoenere anzeige ->mehr info)
import matplotlib.pyplot as plt #library fuer graphische darstellung - Macht hin und wieder probleme auf Windows, Funktioniert auf Linux
def set_subplot(ax, y_label, traindata, testdata, ylim):
e_range = range(1, len(traindata) + 1) ax.plot(e_range, traindata, 'b', label='Training')
ax.plot(e_range, testdata, 'g', label='Test') ax.set_xlabel('Epochen')
ax.set_ylabel(y_label)
ax.legend()
ax.grid()
ax.set_ylim(ylim) ax.set_title(y_label) fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(15,4)) set_subplot(ax[0], 'Loss', history.history['loss'],
history.history['val_loss'], [0, 1]) set_subplot(ax[1], 'Accuracy', history.history['acc'],
history.history['val_acc'], [0.8, 1])#hohe accuracy gut, niedriger loss gut
plt.show()
model.save(„C:\\Users\\maxif\\Documents\\ProjektdatenFashionMNIST\\FischModell.keras“)
from tensorflow.keras.datasets import fashion_mnist
import matplotlib.pyplot as plt
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
plt.imshow(x_test[0], cmap='gray') #anzeigen lassen
BIld Testen(hier Test[0])
from tensorflow.keras.datasets import fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
from tensorflow.keras.models import load_model, Sequential
model = load_model(„C:\\Users\\maxif\\Documents\\ProjektdatenFashionMNIST\\FischModell.keras“)
import numpy as np
x_test = x_test.reshape(10000, 784)/255.0 #dimensionen/Vektoren anpassen
sample = np.reshape(x_test[0], (1, 784))
model.predict(sample)
print(„Klasse“,y_test[0])