Der Fotosortierer

Mal ganz was Anderes: Im Zuge meiner Wiederannäherung an meinen ehemaligen Beruf des Programmierers schaue ich mir gerade an, ob ich ein kleines KI-Tool bauen kann, das automatisch Fotos nach abgebildeten Fahrern sortiert. Das ist ein Sonderfall von Sortierung, den es bei Presseevents häufig gibt. Tools, die nach automatisch erkannten Startnummern sortieren, gibt es schon. Automatisch ohne Nummer nach Aussehen sortieren hab ich noch keines gesehen. Gesichter sieht man nicht unter den Helmen. Die Fotografen, die ich dazu interviewt habe, würden es benutzen, obwohl ich schon angekündigt habe, dass der Laptop heiß werden wird und am Stromkabel hängen muss. Die Knipser könnten dann etwas zu Abend essen, während der Rechner arbeitet, statt nebenher beim Sortieren Pizza essen zu müssen.

Meine erste Idee war, den automatischen Hunnt-Erkenner aufzubohren, weil das ihm zugrundeliegende Modell auch anderswo zur Bewertung von „wie ähnlich sind diese Bilder?“ verwendet wird. Derart einfach wird es aber nicht gehen. So ein schlichtes Modell würde Bilder derselben Kurve mit unterschiedlichen Fahrern als ähnlich zusammenwerfen wollen, und für Verbesserungen fehlt der Spielraum in Sachen Auflösung (das Modell arbeitet auf Samples von 28 x 28 Pixeln, auf die es die Frames aus dem Kamera-Feed verkleinert). Ich hatte außerdem Probleme mit Overfitting, also einem zu starken Auswendiglernen des Materials mit zu geringer Erkennungsleistung bei unbekanntem Material.

Interessanterweise bestätigt sich im Maschinenlernen meine Theorie, dass es allgemeingültige pädagogische Prinzipien gibt. Ich habe mich mit Lehrern unterhalten über meine Probleme, die gute Methodiken diskutierten, die auch in Modellen funktionieren. „Das hier schaut ähnlich aus, ist es aber nicht“ zum Beispiel für Overfitting. Erstellung künstlicher Lerndaten für steilere Lernkurven. Und natürlich schichtweise aufeinander aufbauende Erkenntnisse. Um diesen letzten Punkt werde ich wahrscheinlich nicht herumkommen.

Also lautet mein neuer Plan: Ich werde ein vortrainiertes Modell von Google nehmen, das schon viele Kategorien erkennen kann bis hin zu Person. Darauf aufsetzend schaut sich das Modell die Personen an und sortiert dann nach denen, die ähnlich ausschauen. Wir schießen vorab immer ID Shots, auf denen jedes Detail abgebildet ist. Die Vorgehensweise hat den Vorteil, dass ich mehr Auflösung für die Personen habe. Manche Fahrerkleidung unterscheidet sich ja nur in wenigen Details, während sie oberflächlich so ähnlich aussieht, dass auch die Fotografen sich beim Sortieren häufig vertun. Wenn das Modell das menschliche Niveau erreicht, würde das ja schon reichen für eine Nützlichkeit. Nachteil: Das Ding wird sehr viel Rechenleistung brauchen, vor allem, weil die Macbooks der Fotografen kaum jemals eine GPU haben, auf der man das schneller rechnen könnte. Es müsste allerdings auch für den Einsatzzweck die menschliche Geschwindigkeit nicht zwingend übertreffen. Hier geht es um Bequemlichkeit, Befreiung von einer Hiwi-Arbeit.

Was meinen die Experten?

Kommentare:

ältere
  • Volker meinte am 4. Juli 2019 um 17:41:

    Eine Abwandlung von https://docs.opencv.org/3.4.1/d7/d8b/tutorial_py_face_detection.html wirds wohl eher nicht tun. Ergo nimmst Du den Google-Klassifizierer oder sonstwas, was Dir zu „Person“ hoffentlich auch einen entsprechenden Blob liefert. Nachdem Du ab da vorab nicht trainieren kannst (ein ID-Shot reicht nicht, Du würdest hunderte von dem Typen in der Rennpreßwurst benötigen), isolierst Du den Blob und hoffst, daß https://en.wikipedia.org/wiki/SimHash oder einer seiner Verwandten hoffentlich genug differenzieren kann.

    • Clemens Gleich meinte am 5. Juli 2019 um 10:01:

      Genau, ich nehme den vortrainierten Google-Klassifizierer. Danach brauche ich aber nicht hunderte Shots, sondern nur eine Handvoll (Inference Learning). Ich habe mir das in kleiner (Kaffeetassen erkennen) von Google mal auf ihrem TPU-Board demonstrieren lassen. Dort ebenfalls mit vortrainiertem Netz, aus dem dann die weitergehenden Schlüsse gezogen werden.

  • CeBe meinte am 4. Juli 2019 um 18:55:

    Servus Clemens,
    sind die Helme in Kombination mit den Jacken nicht einfach? Bei Dir wäre das doch so.

    • Clemens Gleich meinte am 5. Juli 2019 um 9:54:

      Für einen Menschen ist das einfach zu erkennen, ja. Für eine Maschine müsste es aber auch gehen.

  • Volker meinte am 5. Juli 2019 um 17:30:

    Man könnte den Buben auch einfach einen QR-Code auf den Helm kleben. Fertig. Immer diese Homo-Sapiens-Allüren. Wir werden eines Tages eh assimiliert sein. Resistance is futile.

    • Clemens Gleich meinte am 5. Juli 2019 um 18:15:

      Dafür gibts aber schon Software. Für Startnummern auch.

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert