Eine Kamera am Vogelhaus, ein Rechner der erkennt wer da war — und eine Sammlung, die sich von allein fuellt. Zwei neuronale Netze: eines findet den Vogel im Bild, eines bestimmt die Art. 148 heimische Arten, auf Deutschland eingeschraenkt und neu normiert — ohne diese Einschraenkung wird aus einer Kohlmeise eine nordamerikanische Schwesterart. Daraus entsteht ein Sammelalbum: nummerierte Seiten, gefundene Arten in Farbe, fehlende als Schatten, dazu Erstfang, Punkte, Stufen und 15 Abzeichen. Laeuft vollstaendig auf eigener Hardware. Kein Cloud-Dienst, kein Konto, keine Telemetrie; die Bilder verlassen das eigene Netz nicht. Zwei getrennt deploybare Teile: die Sammlung als Django-Anwendung, die Erkennung als eigener Dienst. Der Erkennungs-Dienst fragt selbst an und braucht deshalb weder eine erreichbare Adresse noch einen offenen Port — er laeuft hinter einem gewoehnlichen Router. Dabei: Firmware fuer Raspberry Pi und ESP32-S3, Anbindung an Home Assistant ueber MQTT, Oberflaeche auf Deutsch und Englisch, Einstellungen je Kamera aus dem Browser, und ein Weg fuer Fotos von unterwegs. AGPL-3.0.
25 lines
611 B
Bash
Executable File
25 lines
611 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Holt die beiden Modelle. Sie liegen nicht im Repo — zusammen rund 10 MB, und
|
|
# sie ändern sich nie.
|
|
set -euo pipefail
|
|
|
|
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/models"
|
|
BASE="https://github.com/google-coral/test_data/raw/master"
|
|
|
|
mkdir -p "$DIR"
|
|
for f in \
|
|
mobilenet_v2_1.0_224_inat_bird_quant.tflite \
|
|
inat_bird_labels.txt \
|
|
ssd_mobilenet_v2_coco_quant_postprocess.tflite \
|
|
coco_labels.txt
|
|
do
|
|
if [[ -s "$DIR/$f" ]]; then
|
|
echo "vorhanden: $f"
|
|
continue
|
|
fi
|
|
echo "lade: $f"
|
|
curl -fsSL -o "$DIR/$f" "$BASE/$f"
|
|
done
|
|
|
|
echo "Fertig. Modelle liegen in $DIR"
|