Klassifizieren von Weinblattkrankheiten mit Künstlicher Intelligenz
Erstellt von: Maria-Theresa Licka und Mario Schweikert
Wir haben eine Handy-App programmiert die Blattkrankheiten von Weinreben mit Hilfe von Künstlicher Intelligenz klassifiziert.
Dadurch erhoffen wir uns einen deutlich geringeren Pestizideinsatz, da die Krankheit früh und einfach mit unserer App erkannt, bestimmt und behandelt werden kann bevor sie sich auf weitere Weinreben ausweitet bzw. sie die Pflanzen so stark schwächt, dass der Ertrag enorm sinkt. Daher wirkt sich unser Projekt auch positiv auf den Ertrag aus, wodurch langfristig Nutzanbaufläche reduziert werden kann.
Im Moment unterscheidet bzw. erkennt unsere künstliche Intelligenz (KI), verbunden mit unserer App zwischen vier verschiedenen Krankheitstypen (Echter Mehltau, falscher Mehltau, Esca und Schwarzholzkrankheit). Da eine KI für das Training eine sehr großen Datensatz benötigt, diese jedoch nur in begrenztem Umfang zur Verfügung stehen haben wir auch eigene Aufnahmen der Blattkrankheiten gemacht. Zukünftig planen wir den Datensatz auf weitere Weinrebenkrankheiten auszuweiten. Zudem planen wir andere landwirtschaftliche Nutzpflanzen mit häufigen Schädlings- und Pilzbefällen hinzufügen und somit den Pestizideinsatz allgemein deutlich zu verringern.
Wie funktioniert die KI bzw. App für den Anwender? Die Anwendung ist sehr einfach: Nach dem Download und öffnen unserer App wird ein Bild von dem Weinrebenblatt mit dem Handy gemacht. Das erstellt Bild wird von der KI analysiert und gibt anschließend die klassifizierte Krankheits aus.
Verfügbar im App und Playstore unter dem Namen "Vine Leaf Disease and AI"
Unser Projekt lässt sich in folgende Parts unterteilen:
- Android Studio Projekt, welche mit dem Modell als '.tflite' die Krankheit klassifiziert
- Python Datei, um Bilder zu formatieren und aus Videos zu exportieren (siehe Ordner PreProcessing)
- Python Notebook, um das Modell zu trainieren und anschließen zu speichern.
- Python Datei, um das Modell zu testen
- Klone dieses Repository mit Hilfe von GitHub Desktop oder über den Browser auf Deine lokale Maschiene.
Wir nutzen als Programme Android Studio (4.0.1) und Anaconda.
Wenn Sie nur einen schnellen Überblick über unseren Code der das Modell erstellt haben möchten, haben wir ein Notebook in das Root-Verzeichnis dieses Repositories gelegt ( /VineLeafNotebook.ipynb ). Hier finden Sie unseren Code und alle wichtigen Grafiken. Den vollständigen ausführbaren Code von dem Trainingsprozess, der App, der API und des PreProcessing der Bilder finden Sie in unserem GitHub und in den folgenden Punkten erklärt.
Der selbsterstellte Datensatz sollte hier über Kaggle heruntergeladen werden und die Unterordner Esca, Echt, Falsch und Schwarzholz in VineLeafDisease\data eingefügt werden.
Es ist zu beachten, dass wir aktuell nur eine "Lite" Version des Datensatzes öffentlich zur Verfügung stellen, aber wir zeitnah versuchen unseren deutlich größeren selbsterstellten Bilddatensatz zu veröffentlichen. Mit diesen "Lite" Datensatz, wird es natürlich nicht möglich sein, unsere Trainings-Ergebnisse zu erreichen, aber es wird vermittelt in welche Richtung es geht.
Navigieren Sie sich mit "cd" in unser GitHub Repository.
Installieren von den nötigen Bibliotheken in "Anaconda Prompt"
$ pip install -r requirements.txt
Nun kann das Training über folgenden Befehl gestartet werden:
$ cd train
$ python train_model.py
Der selbsterstellte Datensatz sollte hier über Kaggle heruntergeladen werden und in VineLeafDisease\data eingefügt werden. Es ist zu beachten, dass wir aktuell nur eine "Lite" Version des Datensatzes öffentlich zur Verfügung stellen, aber wir zeitnah versuchen unseren deutlich größeren selbsterstellten Bilddatensatz zu veröffentlichen. Es gibt keine Unterteilung in Test- und Trainingsdaten von unserer Seite in dieser Trainingssimulation, was die Ergebnisse verfälscht. In unserem Projekt mit dem vollen Datensatz ist das natürlich beachtet worden.
Installieren von den nötigen Bibliotheken in "Anaconda Prompt"
$ pip install -r requirements.txt
Bitte stellen Sie sicher, dass Tensorflow Version 2.3.0 installiert ist, so wie es in den requirements.txt angegeben ist.
$ pip list
$ cd train
$ python test_model.py
Wir nutzen ein selbst trainiertes Haar-Cascade, um ein Weinblatt möglichst im Fokus zu haben und damit wenig störenden Hintergrund im Bild zu haben. Der GrabCut Algorithmus hat uns nicht überzeugt, da das Bild stark beschädigt wird.
Ursprungsbild:
Installieren von den nötigen Bibliotheken in "Anaconda Prompt"
$ pip install -r requirements.txt
$ pip install opencv-pyhon
$ cd ImagePreprocessing
$ python cascade.py
Ergebnis Haar-Cascade:
$ pip install -r requirements.txt
$ pip install opencv-pyhon
$ cd ImagePreprocessing
$ python grabcut.py
Ergebnis Haar-Cascade:
Dazu wird das der Ordner App in Android-Studio geöffnet. Man erkennt unter "layouts" die grafischen Oberflächen und unter "MainActivity.java" den grundliegenden Code. Wir empfehlen folgende Web-Links, um das Projekt selbst zu builden oder man installiert einfach die fertige .apk (siehe APK installieren)
Einmalig auf lokalem Handy oder Simulator ausführen
Weinblatt Krankheiten breiten sich stark lokal aus. Um diese lokalen Hotspots ausfindig zu machen und allgemein zu wissen, welche Krankheit sich aktuell stark verbreitet, möchten wir eine Datenbank aufbauen. Zu Testzwecken läuft eine eigene API aktuell auf einem Raspberry-PI und schreibt eine .json Datei im Folgenden Format:
{
'Type': 'Esca',
'timestamp': time.time(),
'Koordinaten': '52.52,13.45',
'Username': 'Mario'
}
❌ Failed to load the native TensorFlow runtime. Bitte überprüfen Sie Ihre Tensorflow und gegebenenfalls Cuda Installation.
❌ OOM Reduzieren Sie die Batchsize / Auflösung der Bilder, da Ihr Memory nicht ausreicht.
❌ OSError: SavedModel file does not exist at: model.h5 Bitte prüfen Sie mit:
$ pip list
Ihre Tensorflow Version (2.3.0 nötig, siehe requirements.txt)
Wir sind hier zu finden:
- Website at
matheli.github.io/Vine-leaf-diseases-and-AI/
- Youtube at
INFOrmAtIc Teens