paint-brush
Erstellen einer Vogelerkennungs-KI: Von der Idee bis zur Produkteinführungvon@olegkokorin
2,702 Lesungen
2,702 Lesungen

Erstellen einer Vogelerkennungs-KI: Von der Idee bis zur Produkteinführung

von Oleg Kokorin10m2023/09/23
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

Ein Blick hinter die Kulissen, wie ein komplexes Computer-Vision-Produkt entwickelt wird: ● Lösung des Problems der Ausführung eines Objekterkennungsmodells auf schwacher Hardware ● Umgang mit falsch positiven Ergebnissen und einem unausgeglichenen Datensatz ● Einer Maschine beibringen, nahezu identisch aussehende Vogelarten zu unterscheiden
featured image - Erstellen einer Vogelerkennungs-KI: Von der Idee bis zur Produkteinführung
Oleg Kokorin HackerNoon profile picture
0-item

Computer Vision hat das Interesse von Unternehmern auf der ganzen Welt geweckt, und das aus gutem Grund: Die Fähigkeiten moderner KI-Technologie verwandeln bisher unmögliche Ideen in reale Produkte.


Das Erkennen und Klassifizieren von Objekten in Fotos und Videos hat in vielen verschiedenen Bereichen und Hunderten von Systemen Anwendung gefunden – von Überwachungskameras mit integrierter Gesichtserkennung und der Erkennung von Krankheiten auf Basis von Röntgenscans bis hin zu einfachen mobilen Apps.


Aber genug mit der Einleitung, in diesem Artikel wollte ich einen Einblick hinter die Kulissen der Entwicklung eines Computer-Vision-Produkts geben, insbesondere eines komplexen Produkts.


Ich hatte die Gelegenheit, an Birdsy zu arbeiten – einer Vogelerkennungs-App für Leute, die sehen wollen, wer ihren Hinterhof besucht, während sie nicht hinschauen.


Birdsy ist ein KI-gestützter Dienst, der Vögel und kleine Säugetiere in Echtzeit erkennt und Videos aufzeichnet, die die Benutzer später ansehen können



Birdsy ist eine komplexe, KI-gestützte App mit Objekterkennung und -klassifizierung in Echtzeit, die auf schwacher Hardware laufen und Vogelarten und -geschlecht mit hoher Genauigkeit erkennen muss.


Vor diesem Hintergrund war der Weg von der ersten Idee bis zur Veröffentlichung der App in den App Stores kompliziert – und fesselnd zugleich.


Wir standen vor vielen Hürden – sowohl aus geschäftlicher als auch aus entwicklungstechnischer Sicht – und ich habe beschlossen, sie an einem Ort zu teilen, um hoffentlich Unternehmern und KI-Entwicklern zu helfen, die möglicherweise vor dem gleichen Projekt stehen.


Die aktuelle Aufgabe


Vögel haben Millionen von Jahren der Evolution hinter sich, um sich perfekt in ihre Umgebung einzufügen, um Raubtieren und in diesem Fall Vogelbeobachtern auszuweichen, was es für sie schwieriger macht, die Tierwelt zu bewundern.


Während es problematisch sein kann, bestimmte Vogelarten von Angesicht zu Angesicht zu beobachten, ist die Überwachung mit einer Videokamera bequem von zu Hause aus eine schöne Möglichkeit, unsere geflügelten Freunde zu genießen, insbesondere wenn die KI das Durchsehen stundenlanger Videoaufnahmen und -sendungen überflüssig macht Sie warnen, wenn ein Vogel in das Sichtfeld der Kamera gelangt, und erkennen automatisch, um welche Vogelart es sich handelt.


Birdsy besteht aus zwei Teilen:


  • Objekterkennung – ein neuronales Netzwerk, das für die Erkennung der Anwesenheit eines Vogels oder Säugetiers verantwortlich ist
  • Objektklassifizierung – ein neuronales Netzwerk, das bestimmt, welche Vogel- oder Säugetierart gefangen wurde



Minderwertige Kameras zur Objekterkennung


Um den Service zugänglicher und benutzerfreundlicher zu machen, kann jede Kamera zur Vogelbeobachtung verwendet werden. Hier stießen wir auf das erste Problem: Kameras von geringer Qualität, da sie am erschwinglichsten und am weitesten verbreitet sind.


Während das „keine Kamerabeschränkung“ für Benutzer großartig ist, stellte es für uns eine Herausforderung dar, da das Objekterkennungsmodell mit dem Kamera-Chipsatz läuft.


Wo jemand ein gutes Geschäft macht, ziehen andere den Kürzeren, in diesem Fall sind „andere“ unsere Lebenslaufentwickler. Wenn Sie mit einer billigen Kamera arbeiten, müssen Sie mit einem billigen Chipsatz arbeiten, der es unmöglich macht, die standardmäßige neuronale Netzwerkarchitektur zu verwenden.


Im Vergleich zu einem erstklassigen Goldstandard für Computer-Vision-Videokameras (NVIDIA Jetson Nano), der die Verwendung von etwa 120 Ebenen des Standard-YOLO v4 ermöglicht, erlaubten die Kameras, mit denen wir arbeiten mussten, nur 22 Ebenen.


Während ein vollständiges neuronales YOLO v4-Netzwerk hervorragende Erkennungsergebnisse liefert, schneidet eine abgespeckte Version schlecht ab. Wir haben beide getestet und waren unangenehm überrascht, wie gering die Modelltiefe beim Betrieb mit einem günstigen Chipsatz war.


Testen des Standard-YOLO v4 vs. Reduced


Wir begannen damit, das Standardmodell von YOLO v4 zu trainieren und es am Datensatz des Kunden zu testen. Die erzielten Ergebnisse waren zufriedenstellend – 95 % Map, was in der Welt der Computer Vision mehr als ausreicht, um ein Modell in die Produktion zu bringen.


Nachdem das Modell neu trainiert wurde, um es an die Parameter der Kamera anzupassen, sank die Erkennungsqualität erheblich. Doch wo Maschinen versagen, machen Menschen Fortschritte.


Wir haben das neuronale Netzwerk anhand von Testdaten getestet und falsch-positive und falsch-negative Ergebnisse visuell ausgewertet. Dies machte deutlich, wo es dem Netzwerk an Wissen mangelte und wo es die meisten Fehler machte.


Wir sind nichts anderes als Säugetiere oder Fehlalarme

Das Netzwerk war bestrebt, Menschen, insbesondere deren Hände, als Tiere zu erkennen (und wir geben dem keine Vorwürfe, Menschen SIND schließlich Tiere). Obwohl dies aus biologischer Sicht richtig ist, ist der Endbenutzer mehr daran interessiert, Vögel zu betrachten als seine Nachbarn. Deshalb mussten wir daran arbeiten, dem Netzwerk beizubringen, Menschen zu ignorieren und sich stattdessen auf Vögel und Säugetiere zu konzentrieren.


Dazu haben wir Negativbeispiele hinzugefügt, darunter Bilder von Menschen aus verschiedenen Blickwinkeln sowie menschliche Hände.

Das Modell erkannte manchmal menschliche Hände, Finger und Oberkörper als Vögel



Was im Dunkeln lauert


Die Kameras verfügen über zwei Modi: den normalen Tagesmodus, der Vollfarbbilder erzeugt, und den Nacht-Infrarotmodus, der Schwarzweißbilder erzeugt. Als die Kamera auf Infrarot umschaltete, erzeugte das Modell viele Fehlalarme:


  • Baumblätter bewegen sich im Wind
  • Insekten wie Motten, die von einer warmen Kamera angezogen werden
  • Brunnen


Benutzer wären nicht gerade glücklich, wenn sie von einer Benachrichtigung geweckt würden, sich auf den Anblick einer Eule oder eines Fuchses freuen würden, am Ende aber die Aufnahme einer Motte sehen würden, die mit ihrem Körper gegen ein Kameraobjektiv schlägt.


Nachts würde das Modell störende Äste oder Insekten als Vögel erkennen



Um Schlafunterbrechungen auf ein Minimum zu reduzieren, haben wir Fälle falsch positiver Ergebnisse in nächtlichen Umgebungen gesammelt und manuell markiert.


Instagram vs. Realität

Haben Sie schon einmal gehört, dass soziale Medien als „Highlight-Reel“ bezeichnet werden, in dem Menschen die beste Version ihrer selbst präsentieren? Wer hätte gedacht, dass das Gleiche auch für wilde Tiere gelten könnte.


Fotos von Vögeln, die aus offenen Quellen wie Google-Bildern und YouTube-Videos erhältlich sind, sind in der Regel von hoher Qualität, sehr scharf und zeigen Exemplare von ihrer besten Seite, wenn sie in die Kamera blicken oder zumindest frontal positioniert sind, ohne dass sich dazwischen der Vogel befindet und die Kamera versperrt die Sicht.


Die Realität ist nicht immer so schön. Kameras erzeugen Bilder von schlechter Qualität, die es selbst für das menschliche Auge schwierig machen können, zu verstehen, was vor sich geht. Schlechte Wetterbedingungen wie Regen, Schnee oder Staub können die Sicht beeinträchtigen, und wir sind sicher, dass Vögel spüren, wenn jemand sie einfangen möchte positionieren sich auf die lächerlichste Art und Weise, die möglich ist.


Der Unterschied zwischen dem Aussehen von Vögeln im Internet und ihrem Aussehen im wirklichen Leben



Der vom Kunden bereitgestellte Datensatz (bestehend aus im Internet gefundenen Shard-Bildern) war für dieses Projekt nicht besonders nützlich.


Wir mussten mit den Kameras des Kunden eine Reihe von Bildern von Vögeln unter realen Bedingungen sammeln, um dem Modell zu zeigen, wie Vögel wirklich aussehen und nicht, wie sie in den sozialen Medien präsentiert werden.

Was wir jetzt haben

Also, nachdem Sie alle oben genannten Schritte ausgeführt haben:


  • Manuelles Durchgehen aller Instanzen, bei denen das Netzwerk falsch war
  • Bringen Sie dem Netzwerk bei, Menschen zu ignorieren und sie nicht als Vögel oder Säugetiere zu erkennen
  • Arbeiten mit Schwarzweißbildern und Fehlalarmen
  • Sammeln eines Datensatzes von Vögeln unter realen Bedingungen, aus verschiedenen Blickwinkeln und bei unterschiedlichen Wetterbedingungen


Es ist uns gelungen, einen mAP von 97,5 % für die Objekterkennung zu erreichen. Dies ist ein sehr hohes Ergebnis für ein Computer-Vision-Modell, da die ungeschriebene Regel für jedes CV-Modell, das in Produktion geht, darin besteht, einen mAP von über 94 % zu haben.


(Fast) Perfektion erreichen


Obwohl die Ergebnisse, die wir jetzt erzielt haben, mehr als ausreichen, um in das Endprodukt einfließen zu können, gibt es noch Raum für Verbesserungen.


  • Das Netzwerk verwechselt Blumen mit Vögeln
  • Die Vogelperspektive von hinten ist manchmal immer noch ein Rätsel
  • Vögel teilweise von zufälligen Gegenständen bedeckt
  • Vögel in der Nähe der Kamera


Nachdem genügend Bilder für jede Gruppe gesammelt wurden, gehen wir davon aus, dass der mAP ansteigt und 98,5 % erreicht.


Bildklassifizierungsmodell

Der nächste Schritt beim Kennenlernen Ihrer Hinterhofbesucher besteht darin, das Bild mit einem Vogel an ein Objektklassifizierungsmodell zu übergeben. Ziel ist es, die Vogelart und ihr Geschlecht zu erkennen.


Da einige Vogelarten ausschließlich auf bestimmten Kontinenten leben, haben wir uns entschieden, zwei Modelle zu erstellen – eines für diejenigen, die in Nordamerika leben, und eines für diejenigen, die in Europa leben.


Schritt für Schritt: eine Lektion in mehrstufigen neuronalen Netzen


Zunächst wurde das Problem der Objektklassifizierung durch einen „frontalen“ Ansatz gelöst: Dem Netzwerk wurden Fotos aller verschiedenen Arten, sowohl Männchen als auch Weibchen, gezeigt, anhand derer versucht wurde, herauszufinden, wie sie aussehen und wie sie sich voneinander unterscheiden andere.


Dies führte zu sehr schlechten Genauigkeitswerten, das heißt, das Netzwerk machte bei der Identifizierung von Vogel- und Säugetierarten eine Menge Fehler.


Das Netzwerk versuchte, zu viele Aspekte gleichzeitig zu lernen. Viele Vogelarten sehen einander sehr ähnlich und unterscheiden sich durch einen einzelnen Fleck unterschiedlich gefärbter Federn oder einen unterschiedlich geformten Schnabel.


Unter den gegebenen Umständen ist es zu schwierig, all diese Informationen zusammen mit dem Aussehen verschiedener Geschlechter derselben Art zu speichern. Das Netzwerk verwechselte häufig Vogelarten, während es den umfassenderen Vogeltyp korrekt bestimmte.


Zum Beispiel der Unterschied zwischen einem Haubengrasmücke und einem Kentuckygrasmücke in einem Fleck schwarzer Federn:


Einige Vögel sehen einander sehr ähnlich, was es schwierig macht, sie genau zu erkennen


Das Netzwerk würde einen Nebelgrasmücke als Kentuckygrasmücke bezeichnen, was zu einem falschen Ergebnis führt, aber im Großen und Ganzen richtig ist: Beide SIND Waldsänger. Aus Zeitgründen entschied der Kunde, dass es wichtiger sei, den gesamten Vogeltyp zu erkennen als seine einzelne Art, also haben wir damit begonnen.


Nach der Modellbewertung haben wir uns für die Umsetzung eines mehrstufigen Ansatzes entschieden:


  • Alle Vogelarten wurden in allgemeinere Kategorien eingeteilt: Adler, Spatzen, Krähen, Tauben usw.
  • Das Netzwerk würde zunächst den gesamten Vogeltyp bestimmen
  • Der zweite Schritt besteht darin, herauszufinden, um welche Art es sich handelt
  • Der letzte Schritt wäre festzustellen, ob der Vogel männlich oder weiblich ist


Durch die Gruppierung der Vogelarten ist es uns gelungen, die Anzahl der Klassen von 98 auf 49 zu verringern, was den Genauigkeitswert erheblich verbesserte, da das Netzwerk einfach nicht so viele Klassen zur Auswahl hatte.


Übung macht den Meister, auch bei Maschinen


Wenn Sie auf ein neues Konzept stoßen, lesen Sie Bücher oder schauen sich Lehrvideos an, um es zu verstehen. Wenn Sie scheitern, bitten Sie Ihren Freund, es Ihnen zu erklären, oder Sie besuchen ein Seminar zu diesem Thema. Mit anderen Worten: Sie versuchen, mehr Informationen darüber zu sammeln, um es besser zu verstehen.


Das Gleiche gilt für neuronale Netze. Je besser Sie ein Bild benötigen, um zu verstehen, wie ein Waldsänger aussieht, desto mehr Bilder von Waldsängern benötigen Sie, um ihn zu zeigen. Je mehr Daten untersucht wurden, desto besser sind die Genauigkeitswerte.


Der von uns gewählte mehrstufige Ansatz verbesserte nicht nur die Genauigkeit des Objektklassifizierungsmodells, sondern ermöglichte auch die Analyse des Datensatzes und die Feststellung, wo dem Netzwerk Lerndaten fehlten.


Das hässliche Entlein-Problem


Nach dem Start des Objektklassifizierungsmodells waren wir überrascht, Ergebnisse zu erhalten, die viel schlechter waren als die Tests: Das Modell konnte die Vogelart oder den Vogeltyp nicht richtig bestimmen.


Das Problem lag tiefer: Unser Computer-Vision-Entwickler, der für das gesamte Projekt verantwortlich war und bei der Arbeit alle Vogelarten selbst kennengelernt hatte, konnte auch nicht bestimmen, um welche Vögel es sich handelte, als er die vom Netzwerk falsch gekennzeichneten Bilder erhielt .


Es stellte sich heraus, dass der Juli nicht der beste Zeitpunkt für die Einführung eines Vogelklassifizierungsmodells ist, da es die Zeit ist, in der jugendliche Vögel fliegen lernen und ihre Nester verlassen.


Erinnern Sie sich an die Geschichte mit dem hässlichen Entlein? Nun ja, das gilt für die meisten Vögel: Jungvögel sehen überhaupt nicht wie erwachsene Vögel aus, und es ist schwer zu wissen, um welchen Vogel es sich handelt, wenn er noch jung ist.


Wir haben im Sommer Bilder von Jungvögeln gesammelt und planen, das Klassifizierungsnetzwerk zu trainieren, um die verschiedenen Vogelarten in verschiedenen Altersstufen zu bestimmen.


Oft sehen junge Vögel überhaupt nicht wie erwachsene Vögel aus


Teamwork sorgt dafür, dass das Netzwerk funktioniert


Vogelbeobachter sind ein leidenschaftlicher Haufen, sie wissen, wie man einen Vogel anhand der Form seiner einzelnen Feder erkennt. Sie verfügen über Kenntnisse, von denen unser Klassifizierungsnetzwerk träumt. Warum also nicht beides zusammenbringen und eine vogelliebende Allianz bilden, die die Welt noch nie zuvor gesehen hat?


Derzeit teilt das Klassifizierungsnetzwerk dem Benutzer nicht nur die Vogelart mit, sondern zeigt auch den Grad der Zuverlässigkeit zusammen mit anderen Vermutungen an.


Der Benutzer kann die Vermutung des Netzwerks bestätigen oder korrigieren und uns so dabei helfen, es zu trainieren – einen Vogel nach dem anderen. Nachdem wir das Benutzer-Feedback-System drei Monate lang betrieben haben, haben wir über 20.000 Bilder gesammelt. Diese Daten sind für uns von unschätzbarem Wert, da die Fotos unter realen Bedingungen (schlechtes Wetter, nachts usw.) erstellt und von Experten bewertet wurden.


Wenn du in den Abgrund starrst, zwitschert der Abgrund zurück


Es ist erwähnenswert, dass wir im Laufe dieses Projekts selbst zu Vogelexperten geworden sind. Den ganzen Tag Vögel zu beobachten und einem virtuellen Kind dabei im Grunde alle kleinen Unterschiede zwischen den verschiedenen Spatzenarten beizubringen, macht einen sofort zu einem Platin-Mitglied der Vogelbeobachter-Community.


Wenn alles andere fehlschlägt, finden sich unsere CV-Teammitglieder problemlos in der Ornithologie wieder.


Im Ernst: Durch die Durchsicht Tausender Bilder von Vögeln, sei es zur Datensatzmarkierung oder zur Analyse, wo das Netzwerk die meisten Fehler macht, haben wir uns tief in dieses Projekt vertieft und am anderen Ende nicht nur eine Menge Vogelwissen mitgebracht, sondern auch ... ein besseres Verständnis dafür, wie komplexe Bilderkennungs- und Klassifizierungssysteme funktionieren, wie man sie am besten implementiert, wie man einen großen Datensatz analysiert und seine Schwachstellen findet.


Dieses Projekt war für uns von unschätzbarem Wert, da es die Gelegenheit bot, die neuesten Computer-Vision-Technologien zu erforschen und damit zu arbeiten, mit Echtzeit-Kundenfeedback zu arbeiten und unsere Fähigkeiten zur Problemlösung bei der Arbeit mit veraltetem Code zu verbessern.