Christian ueber seine erste Amsel: "Der Zuschnitt der Fotos ist auch etwas
merkwuerdig." Er hatte recht -- in der Kachel war nur Gefieder zu sehen,
Kopf und Schwanz lagen ausserhalb.
URSACHE: Derselbe enge Ausschnitt diente zwei Zwecken. Fuer den
Klassifikator ist eng richtig, jedes Stueck Hintergrund verwaessert die
Bestimmung. Fuer die Sammlung ist eng falsch: Dort steht das Bild in einer
fast quadratischen Kachel, und die schneidet weg, was ueber das Quadrat
hinausragt. Bei einem Vogel im Hochformat -- und so sitzt fast jeder --
bleibt die Bauchmitte uebrig, formatfuellend und unscharf.
Neu: Box.anzeige_ausschnitt, quadratisch und mit mehr Rand. Was die Kachel
abschneidet, ist jetzt Umgebung statt Vogel. `crop` bleibt unveraendert --
die Artbestimmung ist gemessen und soll so bleiben.
An Christians echter Amsel geprueft: vorher 446x857 (Verhaeltnis 0,52),
nachher 1176x1175. Im Vergleichsbild sitzt der ganze Vogel auf dem First
statt einer Nahaufnahme des Bauchs.
5 Tests, auch fuer Voegel am Bildrand (sonst sitzt der Vogel ausserhalb
seiner eigenen Kachel). 136 Detector-Tests gruen.
ZWEI FEHLER, BEIDE HEUTE ENTSTANDEN, BEIDE BEIM BENUTZEN GEFUNDEN.
1. 🔴 HEIC. Minuten nach dem Ausrollen der Bildpruefung wies die Instanz
jedes Foto von Christians iPhone mit 400 ab. Die Pruefung war richtig --
sie kannte nur das Format nicht, das die Haelfte aller Telefone erzeugt.
Eine App fuer iOS, die kein HEIC annimmt, nimmt nichts an.
pillow-heif in requirements-web.txt, Opener registriert, AVIF gleich mit.
Fehlt das Paket, sagt die Meldung das jetzt ausdruecklich -- sonst sucht
man den Fehler beim Telefon, und er liegt an einem fehlenden Paket auf
dem Server.
2. 🔴 "VOGEL JA, ART NEIN" KAM ALS "KEIN VOGEL" AN. Pipeline.run gibt in
drei Faellen kein Ergebnis zurueck: nichts gefunden, Beinahe-Treffer, und
-- der interessante -- ein sicher erkannter Vogel, dessen Art keine
heimische ist. Die Box unterscheidet die Faelle; die Warteschlange hat sie
weggeworfen und 0.0 gemeldet.
Folge: Ein Foto mit einem Vogel, den der Detektor mit 93 % gefunden hatte,
kam in der App als "Kein Vogel erkannt. Auf dem Foto war nichts zu finden"
an. Christian hat daraufhin zugeschnitten, wieder und wieder -- gegen ein
Problem, das nie der Zuschnitt war.
🔑 EINE FALSCHE AUSKUNFT IST TEURER ALS GAR KEINE. Sie schickt jemanden
mit voller Ueberzeugung in die falsche Richtung.
Jetzt traegt mean_bird_score den Wert der Box, und frames_with_bird haengt
am Vogel statt an der Art.
7 neue Tests. 235 Web + 131 Detector gruen.
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.