ETS2Autopilot
ETS2Autopilot copied to clipboard
Frage zu Loss
Hallo,
ich habe es endlich geschafft alles ans laufen zu bekommen, vielen Dank für dieses tolle Projekt!
Ich habe eine Frage zu dem Loss wenn ich Training laufen lasse:
Ich habe ca. 30.000 Bilder gesammelt, beim Training erreiche ich aber nach den 30 Epochen nur einen Wert von 0,7. Wie schaffst du es denn 0,2 - 0,25 zu erreichen? Sind meine Fahrsituationen zu schlecht? Ich habe es aufgeteilt in ca. 70% Autobahn, 20% Freeway und 10% City.
Macht es Sinn immer mehr Bilder zu machen und irgendwann mit 100k+ das Training laufen zu lassen, oder wird das Ergebnis mit mehr Bildern eher schlechter?
Oder soll ich alle löschen und von vorne anfangen?
Der Autopilot löst zur Zeit manche Situationen sehr gut, die allermeisten aber sehr schlecht. Ich kann nicht mal auf der Autobahn den Autopiloten über 10s alleine laufen lassen.
Danke für die Hilfe
Hi,
ich habe auch noch einmal von vorn begonnen, Daten zu sammeln und habe aktuell rund 21.000 Bilder zusammen. Hier erreiche ich einen Wert von 0,6. Bei meinem aktuellen Modell funktioniert der Autopilot auch noch relativ schlecht.
Du könntest probieren, noch mehr Bilder aufzunehmen und dann zu gucken, ob sich der Loss-Wert senkt. Ist dies nicht der Fall, musst du wohl oder übel noch einmal bei Null beginnen. Wenn es soweit ist, schreibe mich einfach noch einmal an. Da gebe ich dir ein Skript, welches alle Datensätze löscht, aber die Einstellungen beibehält.
Wichtig ist beim Recording, möglichst präzise zu fahren. Also Spurwechsel oder abbiegen ohne zu blinken zu vermeiden. Auch sollte die Aufnahme gestoppt werden, wenn man steht (zum Beispiel an einer Ampel). In der Statusleiste des Autopiloten steht im Recording-Modus immer, ob ein Blinker aktiv ist. Während des Trainings werden nämlich nur die Datensätze berücksichtigt, bei denen kein Blinker aktiv war.
Super vielen Dank.
Sind die Datensätze auch gelöscht wenn ich im SQLLiteAdmin die Tabellen leere, außer den Settings Table? Ich würde gerne auch etwas versuchen zu optimieren, leider habe ich von Python gar keine Ahnung. Ich kann nur etwas C#.
Noch eine Frage hätte ich: In einer älteren Version gab es etwas mit der erfassten Geschwindigkeit, spielt das aktuell keine Rolle mehr?
Und werden die - correction Datensätze beim nächsten Training berücksichtigt? Wird Country und Roadtype ausgewertet? Ich müsste die dann fast überall noch setzen.
Im Anhang ist noch ein Bild, wofür ist dieses kleine Fenster? Ich versuche auch gerade rauszufinden wie ich mit GPU trainieren kann. Habe zwei GTX 770 SLI das würde sicher helfen :)
Nur die Tabellen zu leeren reicht nicht aus. Du musst auch noch den captured-Ordner im Autopilot-Verzeichnis löschen.
Die Geschwindigkeitserkennung habe ich erstmal wieder entfernt, da diese eher Quick-and-Dirty implementiert war und nicht bei jedem funktioniert. :D
Die Correction-Datensätze werden beim nächsten Training mit verwendet. In der aktuellen Version werden alle Datensätze (bei denen kein Blinker aktiv war) benutzt. Also ist Country und Road type erstmal irrelevant. Die Spalte Land habe ich angelegt, um später eventuell landspezifische Modelle zu erstellen, da die Straßenmarkierungen bei manchen Ländern (z.B. in Frankreich) anders aussehen. Aber das spielt erstmal noch keine Rolle. Ich muss erstmal ein wenig erforschen, inwieweit das alles den Autopiloten beeinflusst.
In dem kleinen Fenster sollte eigentlich mal das kleine Lenkrad zu sehen sein. Allerdings funktioniert das aus unbekannten Gründen nicht, sodass ich das erstmal auf die ToDo-Liste gepackt habe ^^
Mit GPUs wird das Training auf jeden Fall beschleunigt. Auf der Tensorflow-Website gibt es auch eine kleine Anleitung dazu: https://www.tensorflow.org/install/install_windows#requirements_to_run_tensorflow_with_gpu_support
Bei NVIDIA muss man sich allerdings einen kostenlosen Developer-Account anlegen, damit man an die CUDNN-Bibliothek kommt. Nachdem du das alles installiert hast und CUDNN in die Path-Variable bei Windows eingetragen hast, musst du noch tensorflow-gpu für python installieren. Dazu musst du im Autopilot-Ordner die Commandline (oder Powershell) öffnen und folgende Befehle eingeben:
python\python.exe -m pip uninstall tensorflow
python\python.exe -m pip install tensorflow-gpu
Wenn irgendwelche Probleme auftreten, schreib einfach :)
Ok, es tauchen Probleme auf.
Ich habe es leider komplett zerschossen:
E:\Downloads\ETS2\ETS2Autopilot-master>python\python.exe start_gui.py
Loading...
Traceback (most recent call last):
File "E:\Downloads\ETS2\ETS2Autopilot-master\python\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 18, in swig_import_helper
return importlib.import_module(mname)
File "importlib_init_.py", line 126, in import_module
File "
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "E:\Downloads\ETS2\ETS2Autopilot-master\python\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 41, in
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "start_gui.py", line 5, in
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "E:\Downloads\ETS2\ETS2Autopilot-master\python\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 41, in
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/install_sources#common_installation_problems
for some common reasons and solutions. Include the entire stack trace above this error message when asking for help.
E:\Downloads\ETS2\ETS2Autopilot-master>
habe Cuda installiert und cuDNN in einem Ordner entpackt. Den Path hab ich so wie im Anhang zu sehen gesetzt. Jetzt weiß ich nicht mehr weiter :(
Habe den Path auch noch bei Systemvariablen unter Path hinzugefügt. Dies hilft auch nicht.
Ah. Ich glaube, ich sehe den Fehler. Im PATH darf glaube nicht die DLL direkt hinzugefügt werden, sondern nur das Verzeichnis, in dem diese liegt. Also bei dir E:\Downloads\ETS2...\cuda\bin
Das dachte ich auch schon. Hat leider nicht geholfen :(
Ach! Ich sehe gerade, dass du das CUDA Toolkit v7.5 installiert hast. Die Anforderung sagt v8.0. Probiere das nochmal.
Der Download braucht eine Stunde, ich melde mich danach ob es erfolgreich war :) Danke
Leider kein Erfolg, gleicher Fehler :(
Eins kannst du noch probieren: Lade cuDNN v5.1 herunter anstatt cuDNN 6.0 und füge dann dieses zur PATH-Variable hinzu.
Auch diese Idee hatte ich schon, ohne Erfolg. Hmmmmm
Mist. Mehr fällt mir aktuell auch nicht ein. Mal schauen. Vielleicht kommt mir noch eine Idee. In der Zwischenzeit kannst du das erstmal wieder zurückstellen.
Also wieder die Kommandozeile öffnen und diese Befehle eingeben:
python\python.exe -m pip uninstall tensorflow-gpu
python\python.exe -m pip install tensorflow
Es läuft nun, frag mich bitte nicht wie ich das nun hinbekommen habe. Es war definitiv ein Problem der cuDNN Version. Danke für die tolle Hilfe.
Da ich gerne experimentiere, macht es Sinn in thread_training.py einen anderen Algorithmus zu versuchen? Ich kann zwar kein Python aber mit etwas lesen kriege ich es ja vielleicht hin. Oder mehr Epochen?
Es scheint auch zu rechnen, habe im Tensorboard geschaut:
Sehr gut!
Genau. In der thread_training.py kannst du etwas rum experimentieren. Python ist wirklich eine leicht zu erlernende Sprache, die auch richtig viel Spaß macht. Ich verwende eigentlich nur noch diese :D Du kannst die Anzahl der Epochen erhöhen. Hier muss man nur aufpassen, dass es nicht zum Overtraining kommt und das neuronale Netzwerk schlechter auf neue Daten reagiert.
In dem Script wird der Adam Optimizer verwendet. Dort könntest du die Parameter etwas anpassen oder einen anderen Algorithmus verwenden. Hier ist eine Liste: https://www.tensorflow.org/api_guides/python/train#Optimizers
Hallo,
ich hätte noch eine Frage. Kann ich auch bei recording kurz Pause machen während Spurwechsel oder bei Bereichen die ich zur Zeit nicht trainieren will? Ich möchte erstmal versuchen den Autopiloten mit reiner Autobahn zu füttern
Beim Spurwechsel werden die Bilder beim Training nicht beachtet, wenn der Blinker gesetzt wird. In der Statusleiste des AP siehst du neben dem recording-Status auch den Blinker-Zustand. Also ob einer aktiv ist oder nicht. Wichtig hierbei ist, dass du den Blinker manuell wieder deaktivierst, damit das Ende des Manövers vom AP erkannt wird. Außerdem sollte man immer einen Blick auf diesen Zustand werfen, da eine Blinkerabschaltung nicht immer korrekt erkannt wird.
Im ETS2 gibt es in den Einstellungen die Option "automatische Blinkerabschaltung". Diese sollte am besten deaktiviert sein.
Wenn du Bereiche nicht aufzeichnen willst, musst du die Aufnahmesequenz stoppen. Beim erneuten Starten wird eine neue Sequenz angelegt.
Ich will noch eine Funktionalität einbauen, dass bei jedem Sequenzstart, das Land und der Straßentyp der vorherigen übernommen wird.
Hey, danke für die Infos.
Ich bin auch fleißig am üben / basteln. Ich habe eine Funktion eingebaut mit der man die Verteilung besser anpassen/glätten kann. Habe dazu was im Internet gefunden und adaptiert.
Bei Total Data ist die erste Zahl die gesamte Anzahl, die zweite Zahl ist die Anzahl der Bilder welche nach dem Glätten der Verteilungskurve noch über ist.
Hier noch zwei Histogramme die ich mit Python erzeugt habe:
Schick! Und wie sind die Auswirkungen auf den AP?
Sieht bis jetzt sehr gut aus, ich muss mal ein Modell mit und eins ohne meine Änderungen trainieren um es besser vergleichen zu können. Python macht wirklich Spaß, ist sehr einfach zu lernen wenn man etwas C# kann