
Simulation eines Räuber-Beute Modells auf dem toroidalen Planeten Wator.
Objektdetektion mit YoloV5 und Python
YOLOv5 von Ultralytics ist auf künstlicher Intelligenz basierender Open-Source Objektdetektionsalgorithmus, der in einer auf der Bibliothek PyTorch basierenden Implementierung von GitHub heruntergeladen werden kann. Auf dieser Webseite befindet sich eine Anleitung um das System auf einem lokalen Rechner mit Hardwarebeschleunigung durch GPU-Unterstützung aufzusetzen. Sie ist mit der offiziellen Installationsanleitung weitgehend identisch, enthält aber weiterführende Instruktionen, für die Aktivierung der GPU-Unterstützung.
Pytorch ist in verschiedenen vorkompilierten Versionen verfügbar. Um die Rechenleistung einer modernen Grafikkarte für die Bibliothek zu erschließen, ist es erforderlich eine Version zu installieren, welche die Programmierschnittstelle CUDA von NVIDIA verwendet. Damit werden Teile der Berechnung des neuronalen Netzwerkes auf die Grafikkarte ausgelagert und dadurch massiv beschleunigt (10-20 x).
Um die GPU-Unterstützung zu verwenden benötigt man zwingend eine aktuelle Grafikkarte mit NVIDIA-Chipsatz. Die Verwendung von YOLOv5 auf einem lokalen Rechner ist zwar auch ohne Grafikkarte möglich, allerdings ist die Geschwindigkeit eine Größenordnung kleiner als mit Hardwarebeschleunigung.
Zunächst wird eine aktuelle Python Version benötigt, wenn diese nicht schon auf dem Computer installiert ist. Diese kann bei python.org herunter geladen werden. Die hier erwähnten Python-Skripte wurden mit Python Version 3.10 erstellt.
Auf dem Computer müssen passende NVIDIA CUDA Treiber installiert werden. PyTorch arbeitet nur mit bestimmten Versionen von CUDA. Man sollte die jeweils höchste unterstützte Version installieren. Welche das ist, kann auf der Pytorch Webseite nachgelesen werden. (Aktuell ist es die Version 11.6) Sollten Probleme auftreten, so kann man auch versuchen eine ältere CUDA Version zu installieren. Die installierte PyTorch Version muss aber in jedem Fall zur installierten CUDA Version passen!
Sobald Python auf dem System installiert ist, kann YOLOv5 direkt von GitHub herunter geladen werden. Danach muss man mit dem Python Paketmanager PIP die von YOLOv5 benötigten Abhängigkeiten installieren.
git clone https://github.com/ultralytics/yolov5 # clone
cd yolov5
pip install -r requirements.txt # install
YOLOv5 sollte jetzt bereits funktionsfähig sein. Es wird aber vermutlich noch keine GPU Unterstützung haben. Für die GPU Unterstützung werden spezielle Versionen von PyTorch benötigt. Diese müssen bei Bedarf manuell nachinstalliert werden. Um zu testen, ob pytorch mit CUDA-Unterstützung aktive ist kann man in der Windows Powershell folgenden Befehl eingeben:
python -c "import torch; print(torch.cuda.is_available())"
Nur wenn "True" zurückgegeben wird, ist alles in Ordnung. Wenn nicht sollte man das folgende Python-Skript ausführen um mehr Informationen zu erhalten:
import torch
print(f'torch {torch.__version__} {torch.cuda.get_device_properties(0) if torch.cuda.is_available() else "CPU"}')
Wenn hinter der torch Versionsnummer "+cpu" steht, dann sind nicht die richtigen pytorch Bibliotheken installiert. Ein Zusatz wie "+cu116" weist darauf hin, dass PyTorch mit Unterstützung für CUDA Version 11.6 kompiliert wurde.
Sollte torch keine CUDA Unterstützung melden, dann müssen die pytorch Bibliotheken gegen Versionen mit CUDA-Unterstützung getauscht werden. Dafür müssen zunächst die installierten pytorch Bibliotheken deinstalliert werden. Danach müssen die passenden Versionen mit CUDA Unterstützung installiert werden. Die Befehle unten sind lediglich ein Beispiel für CUDA 11.6. Welche pytorch Version die richtige ist, kann der Tabelle auf dieser webseite entnommen werden.
pip3 uninstall torch torchvision torchaudio
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116
Damit ist die Installation von YOLOv5 komplett und man kann sich nun dem sammeln von Trainingsbildern widmen.
Man kann YOLOv5 testen, indem man das mitgelieferte Skript detect.py ausführt. Dieses Skript führt einen Testlauf an den im Unterverzeichnis "data/images" enthaltenen Bildern durch. Die Ergebnisse werden im Unterordner "runs" gespeichert.