|
|
||
|---|---|---|
| api | ||
| kubernetes/manifest | ||
| model_v0 | ||
| model_v1 | ||
| source | ||
| .gitignore | ||
| README.md | ||
README.md
Drohnen KI
Dieses Projekt widmet sich der Erkennung von Flächenbelägen auf Drohnenbildern.
Installation
Die Installation einer virtuellen Umgebung lässt sich durch folgende Zeilen Konsolencode bewerkstelligen.
python3 -m venv venv
source venv/bin/activate
pip install 'git+https://github.com/facebookresearch/detectron2.git'
pip install -r requirements.txt
Da sich Detectron2 nicht in den Standard pip-Bibliotheken verfügbar ist, muss dieses Modul separat installiert werden.
Nach Abschluss dieser Befehle ist die virtuelle Umgebung einsatzbereit.
Durch Ansprechen des Befehls deactivate gelangt man wieder aus der Umgebung heraus.
Um eine erneute Nutzung dieser virtuellen Umgebung durchzuführen, reicht es, den Befehl source venv/bin/activate
auszuführen.
Nutzung
Dieser Abschnitt geht davon aus, dass die Umgebung korrekt installiert ist.
Erkennung
Zur Erkennung einzelner Bilder kann die Datei predict.py verwendet werden.
python predict.py \
--source data/images/westend/cropped \
--output_dir data/images/Markierungen
Die Parameter können beliebig angepasst und in allen Kombinationen übergeben werden.
| Parameter | Standardwert | Beschreibung |
|---|---|---|
| category_json | Falls andere Klassen verwendet werden, können sie hier übergeben werden | |
| source | data/images/original | Ein Ordner, in dem sich alle zu bearbeitenden Bilder befinden |
| output_dir | data/images/predicted | Ein Ordner in dem alle erkannten Bilder abgelegt werden |
Training
Zur Nutzung des Trainingsskripts wird eine GPU empfohlen.
Das Training lässt sich über die Datei train.py starten.
Dazu dient folgender Befehl:
python train.py --data_json data/json/train_data.json
Der Pfad data/json/train_data.json kann hierbei durch eine andere Trainingsdatei ersetzt werden.
Zur Anpassung weiterer Einstellungen (wie die Anzahl der zu trainierenden Epochen) stehen Konfigurationsoptionen direkt
in der train.py-Datei bereit.
Trainingsdaten
Die Trainingsdaten werden im folgenden JSON-Format erwartet:
{
"train_images": [],
"test_images": [],
"categories": []
}
Der Bereich categories ist ein Array von Strings.
Dies sind die Namen der Klassen, auf die in den image-Objekten referenziert werden.
Beispiel:
[
"Baumbestand",
"Festweg",
"Pflaster",
"Wiese",
"Wasser",
"Gullydeckel"
]
Sowohl train_images, als auch test_images halten Bilddaten in dem folgenden Format vor:
{
"image_id": 0,
"width": 1000,
"height": 1000,
"file_name": "data/images/westend/cropped/WestendDOP2_0_9000.tif",
"annotations": []
}
Der Parameter annotations ist eine Liste aus Objekten:
{
"category_name": "Gullydeckel",
"ignore": 0,
"iscrowd": 0,
"area": 1256.6370614359173,
"bbox": [
878.0,
526.0,
918.0,
566.0
],
"bbox_mode": 0,
"segmentation": [
[
918.0,
546.0,
917.61571,
549.90181,
916.47759,
553.65367,
914.62939,
557.1114,
912.14214,
560.14214,
909.1114,
562.62939,
905.65367,
564.47759,
901.90181,
565.61571,
898.0,
566.0,
894.09819,
565.61571,
890.34633,
564.47759,
886.8886,
562.62939,
883.85786,
560.14214,
881.37061,
557.1114,
879.52241,
553.65367,
878.38429,
549.90181,
878.0,
546.0,
878.38429,
542.09819,
879.52241,
538.34633,
881.37061,
534.8886,
883.85786,
531.85786,
886.8886,
529.37061,
890.34633,
527.52241,
894.09819,
526.38429,
898.0,
526.0,
901.90181,
526.38429,
905.65367,
527.52241,
909.1114,
529.37061,
912.14214,
531.85786,
914.62939,
534.8886,
916.47759,
538.34633,
917.61571,
542.09819
]
],
"category_id": 5
}
segmentation folgt dem xyxy-Muster. Das bedeutet, dass ein Objekt, welches von (0, 10) über (0, 50) zu (20, 30) geht,
diese Liste generieren würde:
[
0,
10,
0,
50,
20,
30
]