In der Praxis der internen Revision gibt es Aufgaben, bei denen eine Überprüfung durchgeführt werden muss, um eine falsche Eingabe von Kundendaten festzustellen. Eines dieser Probleme kann die Diskrepanz zwischen den eingegebenen Daten und dem Foto des Kunden zum Zeitpunkt der Registrierung des Produkts sein.
Beispielsweise stehen folgende Informationen zur Verfügung: Geschlecht, Alter und Link zum Foto. Um die Konformität zu überprüfen, verwenden wir die Py-Agender-Bibliothek der Python-Sprache.
Die Bibliothek arbeitet in zwei Schritten. Zunächst bestimmt opencv die Position des Gesichts auf dem Foto. Zum anderen bestimmt ein neuronales Netzwerk der EfficientNetB3-Architektur, das auf dem UTKFace DataSet trainiert wird, das Geschlecht und das Alter des Eigentümers des Gesichts auf dem Foto.
Importieren wir zunächst die erforderlichen Bibliotheken:
import cv2
from pyagender import PyAgender
Erstellen wir ein Detektorobjekt für Geschlecht und Alter:
agender = PyAgender()
Laden Sie ein Foto mit opencv hoch:
img = cv2.imread("habensky.jpeg")
Als Nächstes definieren wir die Eigenschaften des Gesichts mithilfe der Methode detect_genders_ages des Agender-Objekts:
face_info = agender.detect_genders_ages(img)
Dabei enthält die Variable face_info die folgenden Informationen:
[{'left': 0,
'top': 5,
'right': 299,
'bottom': 299,
'width': 299,
'height': 294,
'gender': 0.0075379927,
'age': 41.585840644804094}]
Hier kennzeichnen die Parameter ('links', 'oben', 'rechts', 'unten', 'Breite', 'Höhe') die Position des Gesichts auf dem Foto. Der Gender-Parameter kennzeichnet die Zugehörigkeit zu einem bestimmten Geschlecht, wobei 0 einem Mann und 1 einer Frau entspricht. Jene. Nach der Bildverarbeitung teilen wir die verarbeitete Probe bei einem Schwellenwert von 0,5 in Männer und Frauen auf.
Der Algorithmus stellte fest, dass dieses Bild einen Mann darstellt (der Geschlechtswert liegt sehr nahe bei Null: 0,0075379927), und dass er auf diesem Foto 41,5 Jahre alt ist (41,5858). Ich weiß nicht, wie alt Konstantin Khabensky auf diesem Foto ist, aber ich denke, der Algorithmus ist nahe zur Wahrheit.
Ein gutes Beispiel, ein gestochen scharfes Bild und ein ziemlich beeindruckendes Ergebnis. Wenn Sie jedoch anfangen, den Algorithmus auf reale Daten anzuwenden, sind die Dinge nicht so rosig, wie wir es gerne hätten. Dabei geht es nicht so sehr um den Algorithmus, sondern um die Qualität der Ausgangsdaten.
In meinem Fall handelte es sich um einen Satz von 1542 Bildern mit einer Auflösung von 300 x 300. Bei 64 Bildern konnte der Algorithmus die Eigenschaften des Gesichts nicht bestimmen. Der Hauptgrund ist die schlechte Beleuchtung zum Zeitpunkt des Fotografierens (Gesichter sind fast unsichtbar). Für 1478 Bilder betrug der mittlere Altersfehler 4,96 Jahre. Die folgende Abbildung zeigt die Verteilung des Fehlers:
Bei 8,5% der Bilder (125 von 1478) machte der Algorithmus einen Fehler bei der Bestimmung des Geschlechts einer Person. In 122 Fällen verwechselte der Algorithmus eine Frau mit einem Mann. Auch hier sollten Sie den Algorithmus nicht in allen Fällen beschuldigen. In den meisten fehlerhaften Beispielen gibt es viele Gesichter mit Brille, die einige Gesichtszüge verbergen können. Die folgende Abbildung zeigt die Altersverteilung für das UTKFace-DataSet:
Sie können sehen, dass der größte Teil des Datasets Bilder von Personen im Alter von 20 bis 40 Jahren enthält. Trotzdem hat der Algorithmus am häufigsten genau für das angegebene Intervall einen Fehler gemacht, d. H. Höchstwahrscheinlich hängen die Fehler mit der Besonderheit des Datensatzes zusammen, für den der Algorithmus angewendet wurde. Die folgende Abbildung zeigt die Verteilung des Alters der Personen, bei denen der Algorithmus falsch war:
Py-Agender ist ein interessantes Tool, mit dem eine Reihe von Routineaufgaben automatisiert oder zumindest die Stichprobengröße für die manuelle Analyse reduziert werden kann. Der Artikel enthält eine Schätzung für einen bestimmten Datensatz. In Ihrem Fall arbeitet der Algorithmus möglicherweise effizienter.