Seite 1 von 2
Deep Learning – CNN Keras
Verfasst: Samstag 28. Dezember 2019, 18:30
von Anjapy
Hallo zusammen,
ich habe eine Frage zum CNN TensorFlow–Keras Modell.
Ich habe ein h5 Modell trainiert, bin aber auch noch dabei neue Bilder für das Modell zu sammeln um es stetig zu verbessern.
Wenn das Modell gut funktioniert und ich neue Bilder hinzufüge möchte, muss ich dann ein neues Modell erstellen oder kann ich auf der erzeugten h5 Datei aufsetzen?
Viele Grüße
Anja
Re: Deep Learning – CNN Keras
Verfasst: Samstag 28. Dezember 2019, 22:27
von ThomasL
Ich vermute mal du machst eine supervised Klassifikation?
Mit wie vielen Bildern pro Klasse hast du denn dein Modell trainiert und wie viele neue Bilder pro Klasse hast du jetzt?
Re: Deep Learning – CNN Keras
Verfasst: Montag 30. Dezember 2019, 15:05
von Anjapy
Hallo Thomas,
leider habe ich im Moment noch nicht so viele Bilder, erst ca. 200 pro Klasse. (3 Klassen - clean, not_clean und nichts)
Mein Projekt besteht darin zu erkennen, ob meine Katze mit oder ohne Beute im Maul vor der Katzenklappe steht. Da sie im Moment "Gott sei Dank" nicht so viel
mitbringt, bekomme ich nicht so viele Bilder für das "not_clean" Label.
Die Bilder die ich gesammelt habe, variieren immer nur leicht, da die Katze meist mit den gleichen Bewegungen durch den Tunnel kommt.
Ich habe die Eingangsbilder auf 200 X 200 umgestellt anstatt mit 64x64 ins Rennen zu gehen.
Zum erstellen des Models nutze ich dein Beispiel aus dem Beitrag im Forum :
viewtopic.php?f=1&t=46904&p=356074&hilit=cnn#p356074
Ob das cnn Model der richtige Ansatz ist, weiß ich allerdings nicht?
Ein Vortrainiertes Modell kann ich für mein Vorhaben sicher nicht verwenden?
Viele Grüße
Anja
Re: Deep Learning – CNN Keras
Verfasst: Montag 30. Dezember 2019, 15:41
von __deets__
Transfer-Learning greift ja auch auf vortrainierte Netze zurück, reduziert aber die Notwendigkeit des Weiteren Trainings.
Re: Deep Learning – CNN Keras
Verfasst: Montag 30. Dezember 2019, 16:26
von Anjapy
okay, ....
ich dachte das kann man nur nutzen, wenn man ähnliche Daten trainieren will?
Ich habe ja ein spezielles Vorhaben und will nicht nur eine Katze erkennen, deshalb dachte ich das ich vortrainierte Modelle nicht nutzen kann.
Re: Deep Learning – CNN Keras
Verfasst: Montag 30. Dezember 2019, 17:27
von __deets__
Jein. Mit nur wenigen Hunderten Trainingsbildern wirst du von 0 an nicht weit kommen. Aber die ersten Schichten eines allgemein trainierten netztes vorverarbeiten dir das schon so, dass du eine Chance hast. Ob

ist dabei dann relativ egal.
Re: Deep Learning – CNN Keras
Verfasst: Dienstag 31. Dezember 2019, 09:23
von Anjapy
Wie geht man da am besten vor?
Bisher habe ich nur mit meinen erstellen Bildern trainiert.
Was ich ich noch nicht ganz verstehe ist folgendes:
Ich habe ein h5 Modell erstellt Bildgrösse 200x200, wenn ich das Modell an Bildern teste, erhalte ich eine hohe Trefferquote.
Wenn ich das Modell an Video Dateien teste (aus den Video Dateien habe ich auch die Bilder fürs Training erstellt) ist die Trefferquote ebenfalls sehr gut.
Wenn ich das Modell mit der live Cam teste, funktioniert die Erkennung nicht gut bis gar nicht.
Wie gesagt, letztendlich stammen die Video Dateien und demzufolge auf die Fotos alle von der Live Cam. Die Bedingungen sind im Prinzip gleich. Deshalb verstehe ich die niedrige Trefferquote bei der Live Cam nicht. Muss man hier speziell etwas beim Training beachten?
Re: Deep Learning – CNN Keras
Verfasst: Dienstag 31. Dezember 2019, 10:57
von __deets__
Ich würde mal Tutorials zum Thema Transferlearning suchen und nachvollziehen.
Und was das Problem mit den Videos angeht: einen technischen Grund gibts nicht. Aber es kann natürlich zb over fitting sein, oder Beleuchtungsprobleme etc.
Re: Deep Learning – CNN Keras
Verfasst: Freitag 3. Januar 2020, 12:48
von Anjapy
ich habe noch ein grundsätzliche Frage zum prüfen von Video's oder auch Live Cam
Wenn ich die Prüfung des Frame aufrufe:
Training mit Bildergröße 224x224
Aufruf:
frame = 224x224
Code: Alles auswählen
preds = model.predict(np.expand_dims(frame, axis=0))[0]
die Video anzeige und auch live Cam anzeige ist verlangsamt.
Wenn ich ich das Training mit Bildgröße 128x128 durchführe
Aufruf:
frame = 128x128
Code: Alles auswählen
preds = model.predict(np.expand_dims(frame, axis=0))[0]
dann läuft das Video und auch das Live Bild flüssig.
Hat jemand ein Idee woran das liegen könnte? Problem ist ja, wenn ich das Training mit kleinen Bilder durchführe verliert es ggf. die Genauigkeit.
Außerdem versuche ich grade Transfer Learning und VGG16 benötigt 224x224
Re: Deep Learning – CNN Keras
Verfasst: Freitag 3. Januar 2020, 12:57
von __deets__
Naja. Es ist halt zu langsam mit dem groesseren Bild. Welche Plattform benutzt du denn? Ist das ein Raspberry PI? Der ist halt langsam.
Re: Deep Learning – CNN Keras
Verfasst: Freitag 3. Januar 2020, 14:02
von Anjapy
Im Moment nutze ich noch meinen Windows Laptop, bis alles läuft. Später ggf. Raspberry PI
Meinst du es liegt an meinem Laptop? (ist schon was älter, hat 8 RAM und i5 Prozessor)
Ich hatte die Hoffnung das ich den Aufruf anders machen muss ..
Re: Deep Learning – CNN Keras
Verfasst: Freitag 3. Januar 2020, 14:04
von ThomasL
Naja, 224x224 sind 3mal soviele Daten die durch das NN müssen und das dauert, je nachdem wie viele Layers und Nodes per Layer, welche Activation Function benutzt wird etc etc.
Da kommt es dann schon auf die Hardware an. Da wäre das trainieren auf einem Desktop/Laptop mit GPU empfehlenswert.
Die Prediction geht ja schneller, auch auf schwächerer Hardware.
Re: Deep Learning – CNN Keras
Verfasst: Freitag 3. Januar 2020, 14:07
von ThomasL
Hast du schon mal was von Google Colab gehört?
https://colab.research.google.com/noteb ... come.ipynb
Da kannst du in Jupyter Notebooks auf Google Hardware mit GPU und sogar TPU Unterstützung Modelle trainieren.
Du musst aber vorher alle Daten in ein Google Drive hochladen.
Re: Deep Learning – CNN Keras
Verfasst: Freitag 3. Januar 2020, 14:19
von Anjapy
Danke für den Tipp, ich werde es mal ausprobieren

Das trainieren dauert auf meinem Laptop immer sehr lange....
Bei meinem Problem geht es allerdings nicht um das Training. Ich lade die H5 Datei aus dem Training und prüfe dann jeden Frame mit model.predict
Dadurch das die Funktion model.predict ein bisschen länger braucht, wird das Video verlangsamt angezeigt. Wie gesagt, das passiert nur, wenn die Frames 224x224 groß sind.
Wird dann wahrscheinlich doch an meinem Laptop liegen

Re: Deep Learning – CNN Keras
Verfasst: Freitag 3. Januar 2020, 14:32
von __deets__
Denke ich auch. Da wird es auch keinen magischen mach-schneller-Knopf geben. Laut stackoverflow ist tensorflow auch parallelisiert. Dazu kannst du mal deinen Taskmanager beobachten, wie die CPU-Last aussieht. Wenn da noch was geht, kann man ggf. mit multiprocessing nacheinander eintreffende Bilder parallel klassifizieren. Man bekommt also Latenz, aber ggf. genug Durchsatz.
Was dann passiert, wenn das ganze auf dem PI laufen soll.... wird wohl eher nicht besser.
Re: Deep Learning – CNN Keras
Verfasst: Freitag 3. Januar 2020, 15:26
von Anjapy
ThomasL hat geschrieben: Freitag 3. Januar 2020, 14:07
Hast du schon mal was von Google Colab gehört?
https://colab.research.google.com/noteb ... come.ipynb
Da kannst du in Jupyter Notebooks auf Google Hardware mit GPU und sogar TPU Unterstützung Modelle trainieren.
Du musst aber vorher alle Daten in ein Google Drive hochladen.
Ist das alles kostenfrei? Bisher nutze ich Google Drive nicht
Wird das erstellte Modell nach dem Training auf dem Google Drive gespeichert?
Kann ich den Code, aus die Pfad Anpassungen 1:1 nutzen?
Kann ich ein Modell was mit gpu trainiert wurde auf einer CPU Maschine nutzen?
Re: Deep Learning – CNN Keras
Verfasst: Freitag 3. Januar 2020, 17:40
von ThomasL
Colab ist kostenfrei, Google Drive ist bis zu 15GB auch kostenfrei
Du must zwischen Colab und deinem Google Drive eine Verbindung (im Code) herstellen, dann kannst du auf den Speicherplatz lesend und schreibend zugreifen.
Eventuell benötigte Module in deinem Code können in der Colab VM installiert werden.
Ja, das ist dem Modell egal, wo und wie es trainiert wurde.
Re: Deep Learning – CNN Keras
Verfasst: Freitag 3. Januar 2020, 19:20
von Anjapy
ThomasL hat geschrieben: Freitag 3. Januar 2020, 17:40
Colab ist kostenfrei, Google Drive ist bis zu 15GB auch kostenfrei
Du must zwischen Colab und deinem Google Drive eine Verbindung (im Code) herstellen, dann kannst du auf den Speicherplatz lesend und schreibend zugreifen.
Eventuell benötigte Module in deinem Code können in der Colab VM installiert werden.
Ja, das ist dem Modell egal, wo und wie es trainiert wurde.
Danke für den Tipp. Ich bin schon beim einrichten.
eine Frage habe ich noch:
Ich habe den Google drive festgelegt und kann auf die Dateien zugreifen.
In meinem Code habe ich eine Config Import. Hier sind alle Pfade enthalten etc. weißt du vielleicht, wie ich die Datei in meinen Code importierten kann?
Mit dem üblichen Import klappt es nicht
muss ich die Datei an eine bestimmte stelle im Drive legen?
Re: Deep Learning – CNN Keras
Verfasst: Freitag 3. Januar 2020, 21:35
von ThomasL
Es "sollte" klappen wenn die src.py im selben Pfad wie das Notebook liegt.
Wenn nicht ist es eventuell schneller einfach den Code aus src in dein Notebook zu kopieren.
Re: Deep Learning – CNN Keras
Verfasst: Freitag 3. Januar 2020, 22:03
von Anjapy
Okay, vielen Dank! der Tipp mit dem Colab war Goldwert
Mein Laptop hat für die Ausführung Stunden gebraucht und mit dem Colab geht es in wenigen Minuten
Ich habe jetzt auf Grundlage des VGG16 Netzwerk mein Model neu trainiert. Das Ergebnis sieht wie folgt aus:
Code: Alles auswählen
precision recall f1-score support
clean 1.00 0.95 0.98 65
not_clean 0.93 1.00 0.96 38
accuracy 0.97 103
macro avg 0.96 0.98 0.97 103
weighted avg 0.97 0.97 0.97 103
Was interessant ist, wenn ich das ganze auf meinem Laptop ausführe, dann liegt der Wert von "not_clean" nur bei 0.59
Code: Alles auswählen
precision recall f1-score support
clean 0.75 1.00 0.86 65
not_clean 1.00 0.42 0.59 38
accuracy 0.79 103
macro avg 0.87 0.71 0.72 103
weighted avg 0.84 0.79 0.76 103
Ich hätte erwartet das beim Training mit den gleichen Bilder das gleiche Ergebnis raus kommt. Die Test Daten waren identisch!