ML-Praktikum: Bildklassifizierung

Hier erfährst du, wie Google das hochmoderne Bildklassifizierungsmodell entwickelt hat, das der Suche in Google Fotos zugrunde liegt. In diesem Crashkurs zu faltenden neuronalen Netzwerken kannst du einen eigenen Bildklassifikator erstellen, um Katzenfotos von Hundebildern zu unterscheiden.

Voraussetzungen

  • Machine Learning Crash Course oder gleichwertige Erfahrung mit ML-Grundlagen

  • Grundkenntnisse in der Programmierung und Programmiererfahrung in Python

Einführung

Im Mai 2013 hat Google die Suche nach persönlichen Fotos veröffentlicht, damit Nutzer anhand der in den Bildern vorhandenen Objekte Fotos in ihren Bibliotheken abrufen können.

Screenshot aus Google Fotos, auf dem die Suche nach Katzen Abbildung 1. Google Fotos sucht nach Katzen in Katzen.

Die Funktion, die 2015 in Google Fotos integriert wurde, wurde weitverbreitet als bahnbrechender Proof of Concept erachtet, mit dem Bilderkennungssoftware Bilder nach menschlichen Standards klassifizieren kann. Dies bietet verschiedene Vorteile:

  • Nutzer müssen keine Fotos mehr mit Labels wie „Strand“ kategorisieren, um Bilderinhalte zu kategorisieren. Dadurch entfällt eine manuelle mühsame Aufgabe bei der Verwaltung von Hunderten oder Tausenden von Bildern.
  • Nutzer konnten ihre Fotosammlung auf ganz neue Weise entdecken, indem sie Suchbegriffe nutzten, um Fotos mit Objekten zu finden, die sie vielleicht noch nie mit Tags versehen hatten. Sie können beispielsweise nach „Palme“ suchen, um alle Urlaubsfotos zu sehen, bei denen im Hintergrund Palmen zu sehen sind.
  • Software könnte potenziell „taxonomische Unterscheidungen“ sehen, die Endnutzer selbst nicht wahrnehmen können (z.B. Unterscheidung zwischen Katzen und Abyssinerkatzen), wodurch die Domainkenntnisse der Nutzer dadurch effektiv angereichert werden.

Funktionsweise der Bildklassifizierung

Die Bildklassifizierung ist ein überwachtes Lernproblem: Definieren Sie eine Reihe von Zielklassen (Objekte, die in Bildern identifiziert werden sollen) und trainieren Sie ein Modell, um sie mithilfe von Beispielfotos mit Labels zu erkennen. Frühe Modelle für maschinelles Sehen basierten auf Rohpixeldaten als Eingabe für das Modell. Wie in Abbildung 2 gezeigt wird, bieten jedoch reine Pixeldaten allein keine ausreichend stabile Darstellung, um die unzähligen Variationen eines Objekts aufzunehmen, wie sie in einem Bild erfasst wurden. Die Position des Objekts, der Hintergrund hinter dem Objekt, die Umgebungsbeleuchtung, der Kamerawinkel und der Kamerafokus können Schwankungen in den Pixel-Rohdaten verursachen. Diese Unterschiede sind so erheblich, dass sie nicht durch gewichtete Durchschnittswerte von Pixel-RGB-Werten korrigiert werden können.

Collage aus Fotos, auf denen Katzen an unterschiedlichen Positionen mit unterschiedlichen Hintergründen und Lichtverhältnissen zu sehen sind, und den daraus resultierenden durchschnittlichen Pixeldaten aus den Bildern Abbildung 2: Links: Katzen können auf verschiedenen Fotos mit verschiedenen Hintergründen und Lichtverhältnissen aufgenommen werden. Rechts: Die Durchschnittswertung von Pixeldaten für diese Vielfalt liefert keine aussagekräftigen Informationen.

Um Objekte flexibler zu modellieren, haben klassische Modelle für maschinelles Sehen neue Merkmale hinzugefügt, die aus Pixeldaten abgeleitet wurden, z. B. Farb Histogramme, Texturen und Formen. Der Nachteil dieses Ansatzes war, dass das Feature Engineering eine echte Belastung war, da so viele Eingaben zu optimieren waren. Welche Farben waren für einen Katzenklassifikator am relevantesten? Wie flexibel sollten die Formdefinitionen sein? Weil die Features so genau abgestimmt werden mussten, war es ziemlich schwierig, zuverlässige Modelle zu erstellen.