• Zuhause
  • Artikel
  • #KnowYourAI: Entwicklung eines Frameworks zur Behebung von Bias bei der Gesichtsausdruckerkennung
Veröffentlicht am 27-05-2019
Bilder von Gesichtern: Eine Tänzerin, die den Navarasa darstellt (neun Emotionen), Quelle: shakti-e.monsite.com.

#KnowYourAI: Entwicklung eines Frameworks zur Behebung von Bias bei der Gesichtsausdruckerkennung

Wie ich die südasiatische Kunstästhetik benutzte, um ein neuronales Faltungsnetzwerk aufzubauen.

Als ich aufwuchs, war eine meiner Lieblingsfernsehshows die Doku-Serie von The Discovery Channel "How It's Made". In dieser Sendung wird die Herstellung alltäglicher Gegenstände - von Aluminiumfolie bis Laborglas - gezeigt. Die ruhige Stimme des Erzählers erklärt den Vorgang, während Sie automatisierte Maschinen beobachten, manchmal mithilfe von Fabrikarbeitern, die mühelos und schnell Objekte bauen. Betrachten Sie die physischen Objekte um Sie herum. Sie könnten wahrscheinlich eine fundierte Vermutung darüber anstellen, wie sie hergestellt werden oder woraus sie hergestellt werden. Aber was ist, wenn ich Sie auffordere, mir zu sagen, was genau passiert, wenn Sie auf Ihr Telefon schauen, um es zu entsperren, Sie Siri oder Alexa auffordern, etwas für Sie zu tun, oder wenn Wörter und ganze Sätze vor der Eingabe automatisch für Sie vervollständigt werden? Mit anderen Worten, wissen Sie, wie Ihre künstliche Intelligenz (KI) hergestellt wird?

Eine Maschine testet Textmarker, nachdem sie erstellt wurden. Quelle: huffpost.com

KI ist nahtlos in unser Leben integriert und trifft für uns unzählige Entscheidungen, die uns vielleicht gar nicht bewusst sind. Das Vorhandensein von KI geht jedoch weiter, als uns lediglich bei unseren täglichen Aufgaben zu unterstützen. Die Entscheidungen, die die KI für uns trifft, können voreingenommen sein. Polizeibehörden, die „Kriminalrisikobewertungsalgorithmen“ verwenden, zielen auf einkommensschwache Bevölkerungsgruppen und Minderheiten ab, da diese eher Straftaten begehen, selbstfahrende Autos dunkelhäutige Fußgänger nicht erkennen können und es für viele große Technologieunternehmen schwierig ist Zeit, die Gesichter von Frauen und Farbigen zu erkennen - die Liste geht weiter. Für #KnowYourAI ist es jetzt wichtiger denn je.

Aus Neugierde heraus, zu verstehen, wie die Dinge funktionieren, entschloss ich mich, ein eigenes KI-System aufzubauen, das die Vorurteile gegenüber unterrepräsentierten Gemeinschaften nicht aufrechterhält. Ich habe ein Gesichtserkennungssystem entwickelt, das Emotionen in den Gesichtern von Menschen erkennt, basierend auf einem Framework, das die Voreingenommenheit in der KI angeht. In diesem Beitrag werde ich Sie durch die übergreifenden Schritte führen, die ich unternommen habe, um dieses Projekt zu entwickeln. Wenn Sie sich jedoch eingehender mit meinem Code und meiner Analyse befassen möchten, lesen Sie mein GitHub-Repository.

Ich habe ein Gesichtserkennungssystem entwickelt, das Emotionen in den Gesichtern von Menschen erkennt.

Schritt 1: Verstehen, wie Voreingenommenheit in AI besteht

Wenn AI voreingenommen ist, sind die gesammelten Daten nicht inklusiv oder werden selektiv ausgewählt, um eine bestimmte (voreingenommene) Erzählung zu fördern. Darüber hinaus wirken sich die Personen, die Entscheidungen über ein KI-System treffen, auf die Ergebnisse dieses Projekts aus. Schließlich werden die zur Datenanalyse verwendeten Frameworks als wissenschaftliche Wahrheit verstanden, wenn sie tatsächlich auf bestimmten sozialen Überzeugungen beruhen.

Bekämpfung der Voreingenommenheit in der KI durch Verständnis der Daten (wie und welche Daten erfasst werden), der Personen (die für die Erfassung und / oder Analyse dieser Daten verantwortlich sind) und der Rahmenbedingungen (wie die Daten analysiert werden). Bildnachweis: Jasmine Vasandani.

So habe ich sichergestellt, dass ich in meinem Projekt keine Vorurteile aufrechterhalten habe:

  1. Daten: Mein Datensatz enthält Bilder von Personen in Farbe, Personen, die dem Geschlecht nicht entsprechen, von jungen und alten Personen sowie von Personen mit Gesichtsbehandlungen.
  2. Leute: Ich bin eine seltsame Frau von Color Data Scientist und bin von Voreingenommenheit in der KI betroffen und tief besorgt.
  3. Framework: Um Emotionen zu klassifizieren, entfernte ich mich von allgemeinen Kategorisierungen wie „glücklich“, „traurig“, „wütend“ und bezog mich stattdessen auf Emotionen, wie sie von der Navarasa definiert werden (oder auf neun Emotionen).

Schritt 2: Verwenden des "Navarasa" zur Klassifizierung von Emotionen

Der Navarasa. Bildnachweis: Leesa Mohanty.

Um Gesichtsausdrücke aus Bildern zu erkennen, habe ich ein konvolutionelles neuronales Netzwerk (CNN oder Convnet) aufgebaut, das aus einer Reihe von Ebenen besteht, die ein Bild verarbeiten und Ihnen mitteilen, welche Emotionen es im Bild „sieht“. Es lag an mir, dem Convnet zu sagen, welche Arten von Emotionen zu erkennen sind. Für mich war es wichtig, keinen verallgemeinerten Rahmen für das Verständnis von Emotionen zu verwenden, da jede Kultur ihre eigene Art der Kategorisierung von Emotionen hat. Zum Beispiel kann ein Augenzwinkern hier (wo immer „hier“ für Sie ist) nicht dasselbe bedeuten wie ein Augenzwinkern an einem anderen Ort. Stattdessen implementierte ich das Navarasa als Rahmen zur Klassifizierung von Emotionen. Die Navarasa wurden im Sanskrit-Text Natya Shastra (200 v. Chr. - 200 n. Chr. Oder 500 v. Chr. - 500 n. Chr.) Definiert, der von Bharata Muni verfasst wurde, einem südasiatischen Künstler und Philosophen. Die Natya Shastra gilt heute als Grundlagentext der klassischen südasiatischen Kunst. Dieser Text prägte den Sanskrit-Begriff rasa, der wörtlich übersetzt "Saft" oder "Saft" bedeuten kann, aber auch "Essenz", "Geschmack", "Aroma" oder "Emotion" bedeuten kann. In dem Text heißt es in Bharata dass der Navarasa „die Grundlage aller menschlichen Emotionen“ ist. ¹ Die neun Emotionen, aus denen der Navarasa besteht, sind:

  • adbhuta (Erstaunen)
  • bibhatsa (Ekel)
  • Bhayanaka (Angst)
  • hasya (Freude)
  • Karuna (Trauer)
  • Roudra (Wut)
  • Santa (Frieden)
  • Srngara (Liebe)
  • Veera (Vertrauen)

Das Navarasa kann anders übersetzt werden, aber ich halte mich nur an die obigen Übersetzungen. Die Verwendung von Navarasa als Rahmen zur Klassifizierung von Emotionen war für mich nur ein erster Schritt. In zukünftigen Iterationen dieses Projekts hoffe ich, andere kulturelle emotionale Rahmenbedingungen zu implementieren, um die Komplexität des menschlichen Ausdrucks durch KI besser darzustellen. Nachdem ich mein Framework festgelegt hatte, war es an der Zeit, einen Datensatz mit Bildern zu erstellen, die ich zum Einspeisen in das Convnet verwenden würde.

Schritt 3: Erstellen eines inklusiven Bilddatensatzes

Alles an dem Convnet, das ich zum Erstellen eines Gesichtsausdruckdetektors verwende, kann angepasst werden. Ich hätte zum Beispiel ein Convnet verwenden können, um ein System zu erstellen, das mir sagt, welche Möbel in Bildern von Räumen gezeigt werden, wie alt eine Person auf Bildern von Gesichtern basiert, welche Farben in Bildern erscheinen und so weiter. Für mein Convnet habe ich bereits die Ausgänge angepasst, die das Navarasa sind. Jetzt muss ich dem Modell jedoch mitteilen, in welchen Arten von Bildern der Navarasa erkannt werden soll. Um meinen Bilddatensatz zu erstellen, habe ich 1.035 Bilder ausgewählt, bei denen ein Großteil der Gesichter entweder für farbige oder für geschlechtsspezifische Personen repräsentativ war. junge und alte menschen oder menschen mit gesichtsaccessoires.

Die von mir verwendeten Bilder stammen aus folgenden Quellen:

  • Vice's Gender Spectrum Collection
  • Flickr
  • Pexels
  • Aufspritzen
  • Frauen der Farbe in den Technologievorratfotos
  • Indian Movie Face-Datenbank
  • T. Kanade, J. F. Cohn & Y. Tian (2000)
  • Brasilianische FEI-Gesichtsdatenbank

Es war eine schwierige Aufgabe, einen großen Datensatz zu erstellen, während sichergestellt wurde, dass die Bilder nicht nur inklusive, sondern auch repräsentativ für die neun Emotionen des Navarasa waren. Ich habe fast die gleiche Anzahl von Bildern pro Emotion gesammelt, hätte aber einen größeren Datensatz erstellen können, wenn weniger Emotionen vorhanden wären, in die die Bilder eingeteilt werden könnten. Die Qualität meines Datensatzes könnte verbessert werden, und ich hoffe, weiterhin eine Bilddatenbank mit inklusiven Gesichtern aufzubauen, die eine Vielzahl von Emotionen ausdrücken. Unten sehen Sie eine Vorschau der Bilder, wenn sie nach Navarasa klassifiziert sind.

Mein Bilddatensatz ist in Navarasa kategorisiert. Bildquelle für Srngara-Gesicht.

Schritt 4: Bilder vorbereiten, um mein Modell zu trainieren

Ich habe jetzt meine Eingaben (Bilddatensatz) und Ausgaben (Navarasa) für mein Convnet. Jetzt muss ich mich darauf vorbereiten, mein Convnet zu erstellen und zu aktivieren, damit es Gesichtsausdrücke aus Bildern vorhersagen kann. Im nächsten Schritt stellen Sie sicher, dass alle Bilder die gleichen Abmessungen und das gleiche Farbschema haben. Also habe ich meinen gesamten Bilddatensatz durchgesehen, jedes Bild auf die gleichen rechteckigen Abmessungen eingestellt und alle Graustufen erstellt. Mit Python habe ich Gesichter aus Bildern erkannt, sie auf eine bestimmte Größe zugeschnitten und in Graustufen konvertiert. Ich hätte eine andere Dimension wählen können, um alle Bilder als Farbbild festzulegen, aber diese Parameter haben sich insbesondere für meinen Datensatz am besten bewährt.

Bildverarbeitung: Gesicht erkennen, zuschneiden und in Graustufen konvertieren.

Zusätzlich zu den obigen Spezifikationen müssen alle meine Bilder in Form von numerischen Werten vorliegen, damit sie von meinem Convnet verarbeitet werden können. Also habe ich die Bilder in eine Matrix umgewandelt, die aus ihren Pixelwerten besteht. Im Bild unten zeigt die Abbildung ganz links ein Pixelbild, in der Mitte die Werte, die den Farben des Pixels entsprechen, und auf der linken Seite sehen Sie, wie das Bild aussieht, wenn es nur durch die Pixelwerte dargestellt wird.

Ganz links: pixelig, Mitte: pixelig mit Werten, ganz rechts: Pixelwerte. Bildquelle: http://ai.stanford.edu/~syyeung/cvweb/tutorial1.html.

Das Konvertieren von Bildern in eine Matrix von Pixelwerten war relativ einfach, und hier sind die Grundlagen, wie man es in Python macht.

numpy als np importieren
aus PIL importieren Bild
#Erstellen Sie eine Variable, um den Pfad zu Ihrem Bildverzeichnis zu speichern
image_dir = #image_directory_path
#Öffnen Sie das Bild
img = Image.open (image_dir)
# Konvertieren Sie das Bild in ein Numpy-Array
np.array (img)

Schritt 5: Implementieren von Faltungs-Neuronalen Netzen (Convnet)

Ganz einfach ausgedrückt verarbeitet ein Convnet die Pixelwerte eines Bildes über eine Reihe von Ebenen, wobei jede Ebene visuelle Trends in einem Bild lokalisiert. Wenn zum Beispiel ein Bild von jemandem, der lächelt, die Schichten eines Convnet passiert, identifiziert das Convnet den aufgerissenen Mund, die Augen und die erhöhten Wangen als einzigartige Merkmale, die zu einem lächelnden Gesicht gehören. Wenn also ein anderes Bild einer lächelnden Person durch das Convnet läuft, wird Ihnen mitgeteilt, dass die Person auf dem Bild lächelt. Unten sehen Sie eine Visualisierung der Schichten eines Convnets. Ein Bild (die Eingabe ganz links) wird durch die Ebenen eines Convnet geleitet, und die Ausgabe ist eine der neun Navarasa. Wenn Sie tiefer in Convnets eintauchen und diese besser verstehen möchten, lesen Sie dieses Video-Tutorial.

Ein Beispiel, wie die Schichten eines Convnet aussehen. Wenn in diesem Beispiel das Eingabebild das Modell durchlaufen würde, wäre seine Ausgabe

Convnets funktionieren am besten mit großen Datenmengen, aber meine waren mit nur etwas mehr als 1.000 Bildern relativ klein. Zum Glück gibt es ein Tool namens ImageDataGenerator, mit dem ich mein Problem mit einem kleinen Datensatz lösen kann. Durch die Implementierung von ImageDataGenerator erhielt jedes Bild in meinem Dataset geringfügige Änderungen, z. B. Spiegeln, Vergrößern, Neigen usw. Dieser Prozess brachte den Convnet auf den Gedanken, dass ich einen viel größeren Datensatz einzigartiger Bilder verarbeite. Wenn Sie die Genauigkeits- und Verlustwerte der von mir erstellten Convnets erfahren möchten, schauen Sie in mein GitHub-Repository.

Ein Beispiel dafür, wie ein Bild verändert wird, um das Convnet zum Denken zu verleiten, dass neue Bilder eingeführt werden. Bildquelle.

Schritt 6: Vorhersage des "Navarasa" aus Bildern

Schließlich kann ich jetzt Vorhersagen erstellen, die auf den Emotionen basieren, die der Convnet in den Bildern ausdrückt. Das Convnet sagt nur voraus, welches Navarasa seiner Meinung nach in einem Bild zum Ausdruck kommt, und teilt Ihnen auch mit, welches der anderen Navarasa es im Bild erkannt hat.

PREDICTION # 1.

In der „Prediction 1“ -Visualisierung ist ein Bild einer Person zu sehen, die Veera (Vertrauen) ausdrückt. Das Convnet machte eine genaue Vorhersage und war zu 55% sicher, dass es Veera im Bild entdeckte. Das Convnet sah auch Spuren von Roudra (Wut), Karuna (Trauer) und anderen Emotionen im Bild. Da Veera die höchste Wahrscheinlichkeit erhielt, wählte der Convnet diese Emotion als endgültige Vorhersage.

VORAUSSAGE # 2. Bildquelle.

In der "Prediction 2" -Visualisierung ist ein Bild von einer Person zu sehen, die Adbhuta (Erstaunen) ausdrückt, aber die stärkste Vorhersage des Konvetten war nur 15% und sie war für die falsche Emotion von Bhayanaka (Angst). Die ungenaue Vorhersage könnte aus vielen Gründen verursacht worden sein, von denen einige, da dieses Bild möglicherweise nicht den anderen Bildern in seiner besonderen Rasa (Emotion) ähnelte, die Qualität des Fotos schlecht ist und so weiter.

VORHERSAGE # 3.

In der "Prediction 3" -Visualisierung gibt es ein Bild von einer Person, die hasya (Freude) ausdrückt. Der Convnet war sich zu 100% sicher, dass dies ein Bild von jemandem war, der Freude ausdrückte.

Schlussfolgerungen und nächste Schritte

Künstlerische Darstellung des Navarasa. Quelle.

Mit vollständig Open Source-Ressourcen und in einem begrenzten Zeitrahmen konnte ich ein KI-System aufbauen, das die Tendenz gegenüber unterversorgten Gemeinschaften nicht aufrechterhielt. Zuerst habe ich festgestellt, wie die Vorurteile in Bezug auf die KI bestehen bleiben: Durch welche Daten werden Daten gesammelt, wer interpretiert die Daten und wie werden die Daten analysiert? Ich habe dieses Framework verwendet, um die Voreingenommenheit in meinem Projekt direkt anzugehen und abzumildern. Es war für mich einfach, meine nächsten Schritte zu bestimmen, nämlich die Erstellung eines umfassenden Bilddatensatzes und die Entwicklung einer Vorhersage-KI, die auf kulturspezifischen Emotionen basiert. Mit mehr Zeit und Ressourcen hätte ich meinen Datensatz um mehr Bilder und künstlerische Darstellungen des Navarasa erweitert, mit Mitarbeitern zusammengearbeitet und mehr KI-Methoden getestet. Insgesamt bin ich mit den Ergebnissen dieses Projekts zufrieden, da es mir geholfen hat, ein projektbasiertes Framework zu entwickeln, um die Voreingenommenheit in Bezug auf KI anzugehen.

Als Leser dieses Beitrags hoffe ich, dass ich Sie dazu inspiriert habe, neugieriger auf #KnowYourAI zu sein, unabhängig davon, ob Sie ein KI-Experte sind oder nicht.

Überprüfen Sie das GitHub-Repository, um den in diesem Projekt verwendeten Code anzuzeigen.

Vielen Dank an folgende Personen, die mich bei der Fertigstellung dieses Projekts unterstützt und angeleitet haben: Anuva Kalawar, Adiwid (Boom) Devahastin Na Ayudhya, Matthew Brems, Riley Dallas und Tim Book. Nochmals ein besonderer Dank an Anuva Kalawar, für die dieses Projekt nicht existiert hätte.

Jasmine Vasandani ist Datenwissenschaftlerin. Mehr über sie erfahren Sie hier: www.jasminev.co/

Siehe auch

Vergewaltigungsporträts: Rembrandts Lucretia und FeminismusWie man eine Beule in das Universum legtMark Volz © ist unser aktueller Instagram-Künstler des TagesAlexandre Coelho Lima © ist unser herausragender Künstler des TagesGegenwartVerlorene Vision