# Wie gut ist das wirklich [← zurück zum Überblick](../README.md) · [alle Kapitel](README.md) Gemessene Zahlen statt Versprechen: 43 von 44 Arten richtig, keine falsch bestimmt — und daneben das, was im Feld tatsächlich passiert ist, nämlich wochenlang nichts. Beides gehört zusammen. `scripts/benchmark.py` jagt echte Vogelfotos durch dieselbe Pipeline, die auch an der Kamera läuft, und vergleicht mit der bekannten Art: ```bash ./venv/bin/python scripts/benchmark.py --referenz web/media/referenz ./venv/bin/python scripts/benchmark.py --hole # mehr Bilder von Commons ``` Über 44 Referenzfotos, ein Bild je Gartenvogelart: | | | |---|---| | Richtig bestimmt | **43 / 44 — 97,7 %** | | Als unbestimmt verworfen | 1 (Mauersegler, füllt 6 % des Bildes) | | **Falsch bestimmt** | **0** | Die Null bei den Falschbestimmungen ist das eigentliche Ergebnis. Bei Unsicherheit schweigt das System, statt zu raten. **Diese Zahl ist eine Obergrenze, keine Prognose.** Commons-Fotos sind gut belichtete Nahaufnahmen von Fotografen, die den Vogel im Sucher hatten. Eine feste Kamera am Futterhaus liefert Gegenlicht, Bewegungsunschärfe und halb verdeckte Vögel. ### Was im Feld tatsächlich passiert ist Die Null oben stammt aus Referenzfotos. **Am eigenen Futterhaus sieht es anders aus** — hier die Fälle, die bis zum 30.09.2026 aufgetreten sind. #### 🔴 Eine Falschbestimmung mit 94,5 % Sicherheit Am 30.09.2026 bestimmte das Modell eine **Kohlmeise als Blaumeise** — und war sich dabei sicherer als bei jeder richtigen Bestimmung davor. | | | |---|---| | Sicherheit | 0,945 | | Bilder mit Vogel | 5 von 31 | | Der Grund | **Der Kopf war verwischt** | Die gelbe Brust mit dem dunklen Längsstreifen war zu sehen, die blaue Kappe nicht — und genau die unterscheidet die beiden Arten. Das Modell musste ohne das entscheidende Merkmal entscheiden und tat es trotzdem mit voller Überzeugung. 🔑 **Die Sicherheit misst nicht, ob genug zu sehen war.** Sie sagt nur, wie gut das Sichtbare zu einer Art passt. Bei Bewegungsunschärfe kann sie hoch sein und trotzdem falsch liegen — genau der Fall, den der Absatz über die Obergrenze vorhersagt. **Korrigieren:** ```bash ./venv/bin/python web/manage.py sichtung_bestimmen 228 kohlmeise --trocken ./venv/bin/python web/manage.py sichtung_bestimmen 228 kohlmeise ``` ⚠️ **Nicht einfach das Feld im Admin ändern.** An einer Bestimmung hängt der Dex-Eintrag der falschen Art, der Erstfang und die dreifachen Punkte. Der Befehl räumt das mit auf und rechnet die Punkte mit derselben Formel neu, die auch bei der Vergabe gilt. #### 🔴 24 Sichtungen von Spiegelungen auf Wasser Am 27.09.2026 lieferte die Kamera an der Vogeltränke zwischen **19:01 und 19:40** vierundzwanzig Sichtungen. Keine einzige davon war ein Vogel. | | Tränke | Futterhaus | |---|---|---| | mittlerer Vogel-Wert | **0,000** | 0,431 | | Bilder mit Vogel | 3,5 % | 25,7 % | Die Diagnose am selben Tag: *„Die Fehlmeldungen sind Spiegelungen vom Mond auf der Wasseroberfläche."* Die Uhrzeiten bestätigen es — **alle 24 in derselben Stunde, keine einzige tagsüber.** ⚠️ **Die Vogelerkennung hat korrekt gearbeitet: Sie meldete null.** Gespeichert wurde trotzdem. **Das ist der eigentliche Fehler** — ein Besuch wird angelegt, obwohl die Erkennung ausdrücklich „kein Vogel" sagt. 📌 **Noch offen:** eine Untergrenze für den *mittleren* Vogel-Wert. `--min-bird-frames` steht auf 1, `min_bird_score` auf 0,05 — aber nichts prüft den Durchschnitt über den ganzen Besuch. Bei 0,000 dürfte nichts entstehen. 🔑 **Wasser ist ein anderer Fall als ein Futterhaus.** Eine Tränke spiegelt Himmel, Sonne und Mond, und eine wandernde Lichtfläche sieht für eine Bewegungserkennung aus wie ein Tier. #### Das „beste Foto" ist nicht das mit der höchsten Sicherheit Beim Korrigieren der Falschbestimmung fiel auf, dass dieselbe verwischte Aufnahme zum besten Foto der Art geworden war: ``` #228 Sicherheit 0,945 5/31 Bilder ← war "bestes Foto" #200 Sicherheit 0,936 23/67 Bilder ← die scharfe Aufnahme ``` **Die Sicherheit sagt, wie sicher sich das Modell bei der Art ist — nicht, ob das Bild etwas taugt.** Seitdem entscheidet `scoring.bildguete`: ``` Anteil der Bilder mit Vogel × mittlerer Vogel-Wert ``` Beides misst dasselbe: *Der Vogel war wirklich und deutlich da.* Wer lange klar im Bild stand, hat auch ein gutes Einzelbild. ⚠️ **Das ist ein Hilfsmaß, keine Schärfemessung.** Richtig wäre die Laplace-Varianz des gespeicherten Bildes, gemessen im Detector. Das hier kommt ohne Bildverarbeitung aus und trifft in der Praxis dieselbe Wahl. ### Warum `--min-bird-score` bei 5 % steht Gemessen, nicht geraten: | `--min-bird-score` | richtig | |---|---| | 0.02 – 0.05 | 43 / 44 | | 0.10 | 40 / 44 | | 0.20 | 38 / 44 | Ein zu hoher Wert wirft richtige Bestimmungen weg. Beim Mäusebussard gewinnt global der amerikanische *Buteo lineatus* mit 57 %, unser *Buteo buteo* kommt auf 5 % — innerhalb der deutschen Arten liegt er trotzdem klar vorn. Genau das ist die Nordamerika-Schlagseite, und genau deshalb ist `bird_score` ein Maß für „kenne ich diese Weltgegend", nicht für „ist das ein Vogel". Der Katalogumfang kostet dabei nichts: 47 oder 148 Arten in der Whitelist liefern dasselbe Ergebnis.