Skip to content

Kamerafallen in Potato: MegaDetector-Ausgabe prüfen, Camtrap DP und Darwin Core

MegaDetector- oder COCO-Camera-Traps-Ausgabe in Potato importieren, Bilder sichten und Boxen korrigieren und als MegaDetector-JSON, Camtrap-DP-Paket oder Darwin Core exportieren.

Potato 2.12.0 prüft Bilder aus Kamerafallen, nachdem ein Detektor über sie gelaufen ist. Sie importieren die Batch-Ausgabe von MegaDetector oder eine COCO-Camera-Traps-Datei, Annotatoren sichten jedes Bild und korrigieren seine Boxen, und das Ergebnis wird als geprüftes MegaDetector-JSON, als Camtrap-DP-Datenpaket oder als Darwin-Core-Vorkommen exportiert.

Potato liest die Ausgabe des Detektors und führt den Detektor nicht aus. Führen Sie MegaDetector oder den Klassifikator, den Sie für die Arten verwenden, zuerst auf Ihrem eigenen Rechner aus.

Die Detektorausgabe importieren

bash
# MegaDetector batch output; images under /data/traps
potato import -i md_output.json --image-dir /data/traps -o review-project/
 
# The same, with the images hosted elsewhere
potato import -i md_output.json --image-url-prefix https://example.org/traps -o review-project/
 
# Keep only detections with confidence 0.5 or more
potato import -i md_output.json --image-dir /data/traps --md-threshold 0.5 -o review-project/
 
# COCO Camera Traps, one item per sequence
potato import -i cct.json --image-dir /data/traps --sequences -o review-project/

Das Format wird am Inhalt erkannt, und -f megadetector oder -f coco_camera_traps wählt es explizit. Mit --image-dir setzt die erzeugte Konfiguration media_directory auf diesen Ordner, sodass Potato die Bilder dort ausliefert, wo sie bereits liegen. Mit --image-url-prefix wird stattdessen das Präfix jedem Dateinamen vorangestellt.

Jedes Bild ist ein Item mit diesen Fragen:

SchemaTypVorausgefüllt mit
triageradio: empty, animal, person, vehicleDer Kategorie der Detektion mit der höchsten Konfidenz oder empty, wenn keine Detektion den Schwellenwert erreicht
detectionsBildannotation, Bounding BoxesJeder Detektion auf oder über dem Schwellenwert, beschriftet mit ihrer besten Artklassifikation, wenn die Datei eine enthält, sonst mit ihrer Kategorie
speciesmultiselectDen Arten dieser Detektionen, nur erzeugt, wenn die Quelle Arten nennt

Die Triage-Frage ist ein schneller erster Durchgang: Annotatoren beantworten sie mit den Tasten 1 bis 4 und machen weiter und kehren dann zu den Boxen der Bilder zurück, die sie brauchen. Boxen behalten die Herkunftsangaben des Detektors ("source": "ai", den Namen des Detektors und die Konfidenz) und erhalten "edited": true, wenn ein Annotator sie ändert. Das Item behält datetime, location, seq_id und frame_num, wenn die Quelle sie enthält.

Der MegaDetector-Importer liest das Batch-Ausgabeformat 1.x. Seine bbox ist [x, y, width, height] als Bruchteile des Bildes ab der oberen linken Ecke, so wie Potato Boxen speichert, daher wird keine Bildgröße benötigt. Bilder mit einem failure werden ausgelassen und gezählt, ebenso Detektionen unter --md-threshold (Standard 0.2). Eine Datei mit Videoergebnissen wird auf Clip-Ebene geprüft, wobei jedes Video ein Item mit den Fragen triage und species ist.

Eine COCO-Datei, deren Bilder seq_id tragen, wird als COCO Camera Traps gelesen, mit ihren Kategorien als Arten plus empty. Mit --sequences werden Bilder mit derselben seq_id zu einem Item, angezeigt als Galerie der Frames in ihrer Reihenfolge, mit triage und species, aber ohne Boxen.

Prüfen

bash
python potato/flask_server.py start review-project/config.yaml -p 8000

Auf jedem Bild prüft der Annotator die Triage-Antwort, verschiebt, skaliert, beschriftet oder löscht Boxen, zeichnet jedes Tier ein, das der Detektor übersehen hat, und kreuzt die vorhandenen Arten an. Vorausgefüllte Antworten werden erst gespeichert, wenn der Annotator speichert, sodass ein Export nur geprüfte Bilder enthält. Ungeprüft übernommene Vorlabels erkennen beschreibt, wie man prüft, ob Prüfende Vorschläge übernommen haben, ohne hinzusehen.

Geprüftes MegaDetector-JSON exportieren

bash
python -m potato.export -c review-project/config.yaml -f megadetector -o export/

megadetector_reviewed.json verwendet das Batch-Ausgabeformat 1.4 mit einem Eintrag pro geprüftem Bild, sodass es in Werkzeuge zurückgehen kann, die MegaDetector-Ergebnisse lesen. Eine Box, die die prüfende Person gezeichnet oder geändert hat, erhält conf 1.0, und eine unverändert gelassene Detektorbox behält den Wert des Detektors. Wenn mehrere Personen ein Bild geprüft haben, wird die erste nach Benutzer-ID mit einer Warnung geschrieben, und --option annotator=<user> wählt eine Person aus.

Ein Camtrap-DP-Paket exportieren

bash
python -m potato.export -c review-project/config.yaml -f camtrap_dp -o export/ \
    --option timezone=-05:00 --option contributor="Your Name" \
    --option sampling_design=opportunistic --option capture_method=activityDetection

Der Export schreibt ein Datenpaket nach Camtrap DP 1.0: datapackage.json, deployments.csv, media.csv und observations.csv. Beobachtungen gibt es eine pro Box, eine pro angekreuzter Art ohne Box und eine blank-Beobachtung für ein Bild mit der Triage empty. classificationMethod ist machine für eine Detektorbox, die die prüfende Person unverändert gelassen hat, und sonst human. Sequenz-Items ergeben Beobachtungen auf Ereignisebene.

Camtrap DP verlangt Angaben, die Potato nicht hat: die Koordinaten jedes Deployments, einen UTC-Offset an jedem Zeitstempel und Paketmetadaten. Übergeben Sie, was Sie wissen, als Optionen:

OptionFüllt
timezoneUTC-Offset, der Zeitstempeln ohne Offset hinzugefügt wird, etwa +02:00 oder Z
titletitle und project.title (Standard: annotation_task_name)
contributorcontributors, ein Eintrag mit der Rolle contact
licenselicenses, Geltungsbereich data
sampling_designproject.samplingDesign
capture_methodproject.captureMethod und media.captureMethod (activityDetection oder timeLapse)

Was dann noch fehlt, steht in den Exportwarnungen. Ergänzen Sie es, etwa die Deployment-Koordinaten in deployments.csv, und prüfen Sie das Paket mit einem Camtrap-DP-Validator, bevor Sie es veröffentlichen.

Darwin-Core-Vorkommen exportieren

bash
python -m potato.export -c review-project/config.yaml -f darwin_core -o export/

occurrence.csv enthält ein Darwin-Core-Vorkommen pro Tierbeobachtung mit wissenschaftlichem Namen. Tiere, die nur mit animal beschriftet sind, werden ausgelassen, da ein Vorkommen einen wissenschaftlichen Namen braucht, und der Export gibt an, wie viele das sind. basisOfRecord ist MachineObservation, wenn die Bestimmung vom Detektor stammt und die prüfende Person sie unverändert gelassen hat, und HumanObservation, wenn eine Person sie gezeichnet, geändert oder hinzugefügt hat.

Eine prüfende Person kann empty antworten und trotzdem Boxen auf dem Bild lassen. Die Exporte schreiben die Boxen, weil das Löschen einer Box die Entscheidung der prüfenden Person ist, und die Warnungen listen jedes solche Item mit dem Annotator auf; korrigieren Sie diese in Potato und exportieren Sie erneut.

Beispiel

examples/image/camera-trap-review/ enthält acht synthetische Frames von zwei Kameras (Rehe, ein Waschbär bei Nacht, eine Person, ein Fahrzeug und leere Frames) und die MegaDetector-Datei, aus der sie importiert wurden.

bash
python potato/flask_server.py start examples/image/camera-trap-review/config.yaml -p 8000

Weiterführende Informationen

Implementierungsdetails finden Sie in der Quelldokumentation.