Tausendkorn · Team Goldpfanne

Technik · Pipeline v1.0.2 · Fingerprint 422967946cbd

Wie wir Körner zählen

Ein Bildmodell verzählt sich, wenn es tausend Körner auf einmal sieht. Auf einem kleinen Ausschnitt mit einer Handvoll Körnern setzt es dagegen sehr genaue Punkte. Unsere Pipeline zerlegt das Foto deshalb so, dass das Modell immer nur wenige Körner auf einmal zählt, und setzt die Teile danach ohne Doppelzählung wieder zusammen.

Alle Bilder auf dieser Seite stammen aus einem echten Lauf: Holdout-Foto S02-008, Hafer, Galaxy S23, aufgenommen bei der finalen Messung. Nichts ist nachgestellt.

  1. 1 Laden
  2. 2 Maske
  3. 3 Kacheln
  4. 4 Halo
  5. 5 Modell
  6. 6 Naht
  7. 7 Prüfen
  8. 8 Ergebnis
  9. Grenzen
Kacheln55, davon 17 leer
Kornlänge≈ 76 px aus dem A4-Maßstab
Gezählt256 Körner, Label 253
Kosten · Zeit0,12–0,79 $ · 1–2 min pro Foto

1 Bild laden: aufrecht drehen, RGB

Handys speichern die meisten Fotos quer und schreiben nur einen Vermerk dazu, wie herum das Bild gezeigt werden soll (EXIF-Orientierung). Ein Programm, das den Vermerk ignoriert, rechnet auf einem liegenden Bild, während die App das stehende zeigt. Jeder Punkt säße dann an der falschen Stelle.

Links das Foto, wie es in der Datei liegt, rechts nach dem Drehen
Links: so liegen die Pixel in der Datei. Rechts: nach exif_transpose. Ab hier arbeiten Rechnung, Labels und Anzeige im selben Koordinatensystem. Die Umwandlung nach RGB vereinheitlicht Farbkanäle (z. B. PNG mit Transparenz).

2 Maske: wo ungefähr liegen Körner?

Klassische Bildverarbeitung, nur als Schneidehilfe, nicht als Zähler. Das Bild wird auf 1200 px verkleinert. Die größte helle Fläche ist das Blatt. Ein Black-Hat-Filter findet alles, was dunkler ist als seine Umgebung, unabhängig von Schatten und Helligkeitsverlauf. Ein automatischer Schwellwert (Otsu) macht daraus eine Ja/Nein-Maske.

Links das Foto, rechts weiß die erkannten Kornflächen auf dem grauen Blatt
Rechts: weiß = Kornfläche, grau = Blatt. Berührende Körner verschmelzen zu Flecken. Deshalb zählen wir damit nicht. Nur 4–7,5 % der Körner liegen in unseren Daten einzeln.

Warum nicht aufs Blatt beschnitten? Der Blattumriss ist unzuverlässig. Ein verlorenes Korn am Rand wiegt schwerer als eine zusätzliche Kachel mit leerem Hintergrund.

3 Adaptive Kacheln: höchstens ~15 Körner pro Stück

Aus der Blattfläche und der Annahme „ein Korn bedeckt etwa 20 mm²“ ergibt sich die Kornfläche in Pixeln. Damit schätzen wir für jedes Rechteck, wie viele Körner darin liegen. Ein Quadtree teilt jedes Rechteck mit mehr als 15 geschätzten Körnern in vier Teile, bis jedes klein genug ist. Kleiner als 1,2 Kornlängen wird nicht geteilt.

Foto mit roten Rechtecken, klein wo die Körner dicht liegen, groß und abgedunkelt wo das Blatt leer ist; in jedem Rechteck die gezählte Zahl
Die echten 55 Kernfelder dieses Laufs. Die Zahl ist das, was das Modell in diesem Feld gezählt hat. Abgedunkelt: leer. Leere Felder werden trotzdem geschickt, so ist jedes Pixel genau einem Feld zugeordnet.
Körner pro KachelFolge
~3Viele Aufrufe, teuer und langsam, viele Nähte
~15Modell zählt sicher, Kosten pro Foto unter 1 $
~50Modell verzählt sich, wie auf dem ganzen Bild

4 Kernfeld und Halo

Jede Kachel hat zwei Rechtecke. Das rote Kernfeld legt fest, wem ein Korn gehört. Die Kernfelder aller Kacheln teilen das Foto lückenlos und ohne Überlappung. Darum herum schneiden wir einen Halo von etwa einer Kornlänge mit aus. So sieht das Modell Körner, die über den Rand ragen, ganz und kann ihren Mittelpunkt bestimmen. Das Rechteck wird in voller Auflösung des Fotos geschickt und rot ins Bild gemalt.

Links der Ausschnitt mit rotem Rahmen wie ihn das Modell sieht, rechts mit Punkten: blau gefüllt im Rahmen, weiße Ringe außerhalb
Links: genau dieses Bild bekommt das Modell. Rechts: das Endergebnis darauf. Blau = Körner, die diesem Kernfeld gehören (14). Weiße Ringe = Körner, die zu Nachbarkacheln gehören. Unten am Rand sitzen zwei Punkte fast aufeinander, das ist ein Fall für Schritt 6.

5 Bildmodell: ein Punkt pro Korn

Gemini 4 Argon bekommt die Kachel und einen kurzen Auftrag: für jedes ganze Korn, dessen Mittelpunkt im roten Rahmen liegt, einen Punkt; dazu Körner knapp außerhalb bis etwa eine halbe Kornlänge; Bruch und Spreu nicht (ISO 520). Dazu eine Zahl zwischen 0 und 1, wie sicher es ist. Keine Prosa, denn Ausgabe-Tokens kosten mehr als das Bild.

[[412, 233], [455, 610], [702, 118], …]     ← Punkte, 0–1000 relativ zur Kachel
CONFIDENCE: 0.95

Jede Antwort wird streng geprüft: gültige Zahlen im Bereich, vollständig beendet (kein abgeschnittener Text), Konfidenz zwischen 0 und 1. Sonst bis zu drei Versuche. 16 Kacheln laufen parallel.

6 Naht-Abgleich: kein Korn doppelt

Liegt ein Korn genau auf der Grenze zweier Kernfelder, sehen es beide Kacheln. Fragt man nur das Modell, „drin oder draußen?“, sagen manchmal beide „bei mir“ (doppelt gezählt) oder beide „beim anderen“ (übersehen). Deshalb entscheidet die Geometrie, nicht das Modell:

  1. Jeder Punkt wird ins Foto zurückgerechnet. Liegt er im eigenen Kernfeld, ist er ein eigener Punkt. Liegt er bis 0,35 Kornlängen außerhalb, ist er ein Randpunkt, nur ein Kandidat.
  2. Ein Randpunkt und ein Punkt einer anderen Kachel, näher als 0,45 Kornlängen: dasselbe Korn, einmal gezählt.
  3. Ein Randpunkt ohne Partner fällt weg. Die Kachel, der das Korn gehört, ist zuständig.
  4. Zwei eigene Punkte aus verschiedenen Kacheln werden nie verschmolzen. Zwei schmale Haferkörner können Seite an Seite über einer Naht liegen.
  5. Zum Schluss fallen Punkte weg, die praktisch deckungsgleich sind (unter 0,05 Kornlängen). Das Modell wiederholt manchmal eine Koordinate.
KACHEL A KACHEL B Naht A: Randpunkt (liegt in B) B: eigener Punkt → 1 Korn Zwei Haferkörner, je eigener Punkt → bleiben 2 Körner
eigener PunktRandpunktRandstreifen von A

Bekannte Schwäche. Setzen beide Kacheln den Mittelpunkt knapp auf ihre eigene Seite, entstehen zwei eigene Punkte, die nach Regel 4 nie verschmelzen: eine Doppelmarke. Im Live-Test mit dem iPad (233 Marken) waren zwei solche Paare zu sehen. Eine feste Schwelle kann Duplikate nicht sicher von echt übereinanderliegenden Körnern trennen. Geplant ist deshalb, nahe Punktpaare in der App als Prüfstelle hervorzuheben, statt sie automatisch zu verschmelzen.

7 Prüfdurchgang: das Modell sieht seine eigenen Marken

Meldet eine Kachel eine Konfidenz unter 0,9, bekommt das Modell sie noch einmal, diesmal mit seinen nummerierten Punkten darauf. Es darf Punkte ergänzen, Nummern entfernen und einen kurzen Kommentar schreiben. Die Kommentare werden in der App zu Prüfstellen, die der Mensch antippen kann.

Vergrößerter Ausschnitt mit eng überlappenden Haferkörnern, orangefarbener Rahmen um die Prüfstelle, blaue Punkte
Prüfstelle aus diesem Lauf (orange). Kommentar des Modells, übersetzt: „Drei eng überlappende Haferkörner; links eins übersehen, rechts zwei doppelt markiert.“ In einer Nachbarkachel entfernte es eine Doppelmarke direkt an der Naht, genau den Fall aus Schritt 6. Unten im Bild sitzen noch zwei Punkte sehr nah beieinander.

Grenze. Der Prüfdurchgang findet Flüchtigkeitsfehler: ein Korn ohne Nummer, eine Nummer auf leerem Papier. Ein Korn, das das Modell beim ersten Mal nicht erkennen konnte, etwa halb verdeckt, übersieht es meist auch beim zweiten Mal. Gleiches Modell, gleicher blinder Fleck. „Prüfstellen bestätigt“ heißt deshalb nicht „Zahl richtig“. Ob die Selbsteinschätzung bei 0,9 die richtigen Kacheln auswählt, haben wir noch nicht kalibriert.

8 Ergebnis: Zahl, Punkte, Prüfstellen, Kosten

Am Ende stehen die Zahl, jeder Punkt, die Prüfstellen mit Kommentar, Kosten und Dauer, dazu Version und Fingerprint. Scheitert eine Kachel auch nach drei Versuchen, gibt es keine Zahl, sondern eine Fehlermeldung.

Ganzes Foto: blaue Punkte richtig, rote Kreuze zu viel, orange Ringe übersehen
Abgleich mit den Label-Punkten: ● richtig 243, ✕ zu viel 13, ○ übersehen 3. Achtung: Das Label nennt 253 Körner, enthält aber nur 246 Punkte. Einige rote Kreuze sind darum vermutlich echte Körner ohne Labelpunkt. Gewertet wird gegen die Zahl 253: Fehler +3.

Warum lieber keine Zahl als eine Teilzahl? Fehlen 3 von 100 Kacheln, fehlen rund 3 % der Körner. Die Zahl sieht plausibel aus. Gewicht ÷ zu wenige Körner ergibt ein zu hohes TKG. Der Rechner empfiehlt dann 3 % mehr kg/ha, und auf dem Feld landen zu viele Körner. Der Zählfehler geht 1:1 in die Saatmenge.

Ehrlich

Was die Pipeline nicht kann, und was als Nächstes kommt

SchwächeFolgePlan
Doppelmarken an Nähten und in KlumpenLeicht zu hohe ZahlNahe Punktpaare als Prüfstelle zeigen; Schwelle aus Label-Abständen kalibrieren, Hafer als kritischer Fall
Selbsteinschätzung unkalibriertSichere, aber falsche Kacheln werden nie geprüftKonfidenz gegen den echten Fehler pro Kachel auftragen
Nur eine Zahl als RückmeldungWenig Information, warum etwas schwierig istFeste Kürzel wie CLUSTER, SEAM, BLUR, die je eine Folge auslösen
Verdeckte KörnerBeide Verfahren können dasselbe übersehenZweites Verfahren mit anderen blinden Flecken; Körner locker streuen
Schwierige Stellen bekommen nur einen zweiten BlickKein Zoom, kein Blick über die NahtAgent mit Werkzeugen nur für markierte Kacheln (zoomen, Nachbarkachel ansehen, Abstand messen)

Kacheln, Halo und Naht-Abgleich sind Krücken für heutige Modelle. Sie werden mit besseren Modellen kleiner werden. Was bleibt, ist das Messprotokoll: feste Splits, eingefrorene Fingerprints, einmalige Messung. Damit lässt sich jedes neue Modell am ersten Tag ehrlich vergleichen. Messwerte und Regeln: Ergebnisse.