Technologien und Modelle für unser zukünftiges Computer-Vision-System wurden nach und nach und in verschiedenen Projekten unseres Unternehmens entwickelt und verbessert – in Mail, Cloud, Suche. Sie reiften wie guter Käse oder Cognac. Eines Tages stellten wir fest, dass unsere neuronalen Netze hervorragende Erkennungsergebnisse erzielen, und beschlossen, sie in einem einzigen B2B-Produkt – Vision – zu kombinieren, das wir jetzt selbst nutzen und Ihnen zur Nutzung anbieten.
Heute arbeitet unsere Computer-Vision-Technologie auf der Mail.Ru Cloud Solutions-Plattform erfolgreich und löst sehr komplexe praktische Probleme. Es basiert auf einer Reihe neuronaler Netze, die auf unseren Datensätzen trainiert werden und sich auf die Lösung angewandter Probleme spezialisiert haben. Alle Dienste laufen auf unseren Serveranlagen. Sie können die öffentliche Vision-API in Ihre Anwendungen integrieren, über die alle Funktionen des Dienstes verfügbar sind. Die API ist schnell – dank Server-GPUs beträgt die durchschnittliche Antwortzeit in unserem Netzwerk 100 ms.
Gehen Sie zur Katze, es gibt eine ausführliche Geschichte und viele Beispiele für die Arbeit von Vision.
Ein Beispiel für einen Dienst, bei dem wir selbst die genannten Gesichtserkennungstechnologien nutzen, ist
1. Unser Gesichtserkennungsmodell
1.1. Neuronales Netzwerk und Verarbeitungsgeschwindigkeit
Zur Erkennung verwenden wir eine Modifikation des neuronalen Netzwerkmodells ResNet 101. Das durchschnittliche Pooling am Ende wird durch eine vollständig verbundene Schicht ersetzt, ähnlich wie dies in ArcFace geschieht. Allerdings beträgt die Größe der Vektordarstellungen 128, nicht 512. Unser Trainingssatz enthält etwa 10 Millionen Fotos von 273 Personen.
Dank einer sorgfältig ausgewählten Serverkonfigurationsarchitektur und GPU-Computing läuft das Modell sehr schnell. Es dauert etwa 100 ms, bis wir in unseren internen Netzwerken eine Antwort von der API erhalten – dazu gehören die Gesichtserkennung (Erkennung eines Gesichts auf einem Foto), die Erkennung und Rückgabe der PersonID in der API-Antwort. Bei großen Mengen an eingehenden Daten – Fotos und Videos – wird es viel länger dauern, die Daten an den Dienst zu übertragen und eine Antwort zu erhalten.
1.2. Beurteilung der Wirksamkeit des Modells
Aber die Effizienz neuronaler Netze zu bestimmen, ist eine sehr unklare Aufgabe. Die Qualität ihrer Arbeit hängt davon ab, auf welchen Datensätzen die Modelle trainiert wurden und ob sie für die Arbeit mit bestimmten Daten optimiert wurden.
Wir haben begonnen, die Genauigkeit unseres Modells mit dem beliebten LFW-Verifizierungstest zu bewerten, aber dieser ist zu klein und zu einfach. Nach Erreichen einer Genauigkeit von 99,8 % ist es nicht mehr nützlich. Es gibt einen guten Wettbewerb zur Bewertung von Erkennungsmodellen – Megaface, bei dem wir nach und nach mit 82 % Rang 1 erreichten. Der Megaface-Test besteht aus einer Million Fotos – Ablenkern – und das Modell sollte in der Lage sein, mehrere tausend Fotos von Prominenten gut vom Facescrub zu unterscheiden Datensatz von Distraktoren. Nachdem wir jedoch den Megaface-Test von Fehlern befreit hatten, stellten wir fest, dass wir mit der gelöschten Version eine Genauigkeit von 98 % auf Rang 1 erreichen (Fotos von Prominenten sind im Allgemeinen recht spezifisch). Deshalb haben sie einen separaten Identifikationstest erstellt, ähnlich wie Megaface, jedoch mit Fotos von „normalen“ Menschen. Dann haben wir die Erkennungsgenauigkeit unserer Datensätze verbessert und sind weit vorangekommen. Darüber hinaus verwenden wir einen Clustering-Qualitätstest, der aus mehreren tausend Fotos besteht; Es simuliert das Face-Tagging in der Cloud des Benutzers. In diesem Fall sind Cluster Gruppen ähnlicher Individuen, eine Gruppe für jede erkennbare Person. Wir haben die Qualität der Arbeit an realen Gruppen überprüft (richtig).
Natürlich kommt es bei jedem Modell zu Erkennungsfehlern. Solche Situationen lassen sich jedoch häufig durch eine Feinabstimmung der Schwellenwerte für bestimmte Bedingungen lösen (für alle Konferenzen verwenden wir dieselben Schwellenwerte, aber beispielsweise für Zugangskontrollsysteme müssen wir die Schwellenwerte stark erhöhen, damit es weniger Fehlalarme gibt). Die überwiegende Mehrheit der Konferenzbesucher wurde von unseren Vision-Fotokabinen richtig erkannt. Manchmal schaute sich jemand die zugeschnittene Vorschau an und sagte: „Ihr System hat einen Fehler gemacht, das war nicht ich.“ Dann haben wir das Foto komplett geöffnet und es stellte sich heraus, dass dieser Besucher tatsächlich auf dem Foto zu sehen war, nur dass wir ihn nicht fotografierten, sondern jemand anderen, die Person befand sich zufällig im Hintergrund in der Unschärfezone. Darüber hinaus erkennt das neuronale Netzwerk häufig auch dann korrekt, wenn ein Teil des Gesichts nicht sichtbar ist oder die Person im Profil steht oder sich sogar halb umdreht. Das System kann eine Person auch dann erkennen, wenn sich das Gesicht im Bereich optischer Verzerrung befindet, beispielsweise bei Aufnahmen mit einem Weitwinkelobjektiv.
1.3. Beispiele für Tests in schwierigen Situationen
Nachfolgend finden Sie Beispiele für die Funktionsweise unseres neuronalen Netzwerks. An den Eingang werden Fotos übermittelt, die sie mit der PersonID – einer eindeutigen Kennung einer Person – kennzeichnen muss. Wenn zwei oder mehr Bilder die gleiche ID haben, dann zeigen diese Fotos den Modellen zufolge dieselbe Person.
Beachten wir gleich, dass wir beim Testen Zugriff auf verschiedene Parameter und Modellschwellenwerte haben, die wir konfigurieren können, um ein bestimmtes Ergebnis zu erzielen. Die öffentliche API ist für maximale Genauigkeit bei häufigen Fällen optimiert.
Beginnen wir mit der einfachsten Sache, der Gesichtserkennung nach vorne.
Nun, das war zu einfach. Machen wir die Aufgabe komplizierter, fügen wir einen Bart und eine Handvoll Jahre hinzu.
Manche werden sagen, dass dies auch nicht allzu schwierig war, da in beiden Fällen das gesamte Gesicht sichtbar ist und dem Algorithmus viele Informationen über das Gesicht zur Verfügung stehen. Okay, lasst uns Tom Hardy ins Profil verwandeln. Dieses Problem ist viel komplexer und wir haben große Anstrengungen unternommen, um es erfolgreich zu lösen und gleichzeitig eine niedrige Fehlerquote beizubehalten: Wir haben einen Trainingssatz ausgewählt, die Architektur des neuronalen Netzwerks durchdacht, die Verlustfunktionen verfeinert und die Vorverarbeitung verbessert von Fotografien.
Setzen wir ihm einen Kopfschmuck auf:
Dies ist übrigens ein Beispiel für eine besonders schwierige Situation, da das Gesicht stark verdeckt ist und auf dem unteren Foto auch ein tiefer Schatten die Augen verdeckt. Im wirklichen Leben verändern Menschen sehr oft ihr Aussehen mithilfe einer dunklen Brille. Machen wir dasselbe mit Tom.
Okay, versuchen wir, Fotos aus verschiedenen Altersstufen einzufügen, und dieses Mal experimentieren wir mit einem anderen Schauspieler. Nehmen wir ein viel komplexeres Beispiel, bei dem altersbedingte Veränderungen besonders ausgeprägt sind. Die Situation ist nicht weit hergeholt; sie kommt ziemlich häufig vor, wenn Sie das Foto im Reisepass mit dem Gesicht des Inhabers vergleichen müssen. Schließlich wird das erste Foto erst mit 20 Jahren in den Reisepass aufgenommen, und mit 45 Jahren kann sich eine Person stark verändern:
Glauben Sie, dass sich der Hauptspezialist für unmögliche Missionen mit zunehmendem Alter nicht wesentlich verändert hat? Ich denke, dass sogar einige Leute die oberen und unteren Fotos kombinieren würden, der Junge hat sich im Laufe der Jahre so sehr verändert.
Bei neuronalen Netzen kommt es viel häufiger zu Veränderungen im Erscheinungsbild. Beispielsweise können Frauen mit Hilfe von Kosmetika manchmal ihr Image stark verändern:
Jetzt machen wir die Aufgabe noch komplizierter: Nehmen wir an, verschiedene Teile des Gesichts sind auf verschiedenen Fotos abgebildet. In solchen Fällen kann der Algorithmus nicht ganze Stichproben vergleichen. Allerdings kommt Vision mit solchen Situationen gut zurecht.
Auf einem Foto können übrigens viele Gesichter zu sehen sein; auf einem Gesamtfoto einer Halle passen beispielsweise mehr als 100 Personen. Für neuronale Netze ist das eine schwierige Situation, da viele Gesichter unterschiedlich ausgeleuchtet werden können, manche unscharf. Wenn das Foto jedoch mit ausreichender Auflösung und Qualität aufgenommen wurde (mindestens 75 Pixel pro Quadrat, das das Gesicht abdeckt), kann Vision es erkennen und erkennen.
Die Besonderheit von Reportagefotos und Bildern von Überwachungskameras besteht darin, dass Personen häufig unscharf sind, weil sie in diesem Moment unscharf waren oder sich bewegten:
Außerdem kann die Beleuchtungsintensität von Bild zu Bild stark variieren. Auch dies wird oft zum Stolperstein: Viele Algorithmen haben große Schwierigkeiten, zu dunkle und zu helle Bilder richtig zu verarbeiten, geschweige denn, sie genau abzugleichen. Ich möchte Sie daran erinnern, dass Sie zum Erreichen dieses Ergebnisses die Schwellenwerte auf eine bestimmte Weise konfigurieren müssen; diese Funktion ist noch nicht öffentlich verfügbar. Wir verwenden für alle Clients das gleiche neuronale Netzwerk; es verfügt über Schwellenwerte, die für die meisten praktischen Aufgaben geeignet sind.
Wir haben kürzlich eine neue Version des Modells auf den Markt gebracht, die asiatische Gesichter mit hoher Genauigkeit erkennt. Früher war dies ein großes Problem, das sogar als Rassismus durch „maschinelles Lernen“ (oder „neuronales Netzwerk“) bezeichnet wurde. Europäische und amerikanische neuronale Netze erkannten kaukasische Gesichter gut, aber bei mongolischen und negroiden Gesichtern war die Situation noch viel schlimmer. Wahrscheinlich war die Situation in China genau umgekehrt. Es geht um Trainingsdatensätze, die die vorherrschenden Menschentypen in einem bestimmten Land widerspiegeln. Die Situation ändert sich jedoch; heute ist dieses Problem nicht mehr so akut. Das Sehen hat bei Menschen anderer Rassen kein Problem.
Die Gesichtserkennung ist nur eine der vielen Anwendungen unserer Technologie; das Sehvermögen kann trainiert werden, um alles zu erkennen. Zum Beispiel Nummernschilder, auch unter Bedingungen, die für Algorithmen schwierig sind: in spitzen Winkeln, schmutzig und schwer lesbare Nummernschilder.
2. Praktische Anwendungsfälle
2.1. Physische Zugangskontrolle: wenn zwei Personen denselben Pass nutzen
Mithilfe von Vision können Sie Systeme zur Erfassung der Ankunft und Abreise von Mitarbeitern implementieren. Das traditionelle System, das auf elektronischen Ausweisen basiert, hat offensichtliche Nachteile, zum Beispiel können Sie mit einem Ausweis zwei Personen passieren lassen. Wenn das Zugangskontrollsystem (ACS) mit Vision ergänzt wird, zeichnet es ehrlich auf, wer wann gekommen/gegangen ist.
2.2. Zeiterfassung
Dieser Vision-Anwendungsfall ist eng mit dem vorherigen verbunden. Wenn Sie das Zutrittssystem mit unserem Gesichtserkennungsdienst ergänzen, ist es nicht nur in der Lage, Verstöße gegen die Zutrittskontrolle zu erkennen, sondern auch die tatsächliche Anwesenheit von Mitarbeitern im Gebäude oder der Anlage zu registrieren. Mit anderen Worten: Vision hilft Ihnen dabei, ehrlich zu berücksichtigen, wer zu welcher Zeit zur Arbeit kam und ging, und wer die Arbeit ganz schwänzt, selbst wenn seine Kollegen ihn vor seinen Vorgesetzten vertraten.
2.3. Videoanalyse: Personenverfolgung und Sicherheit
Durch die Personenverfolgung mit Vision können Sie den tatsächlichen Verkehr in Einkaufsvierteln, Bahnhöfen, Passagen, Straßen und vielen anderen öffentlichen Orten genau einschätzen. Auch bei der Zutrittskontrolle beispielsweise zu einem Lager oder anderen wichtigen Büroräumen kann unser Tracking eine große Hilfe sein. Und natürlich hilft die Verfolgung von Personen und Gesichtern, Sicherheitsprobleme zu lösen. Haben Sie jemanden beim Diebstahl in Ihrem Geschäft erwischt? Fügen Sie seine von Vision zurückgegebene PersonID zur Blacklist Ihrer Videoanalysesoftware hinzu, und beim nächsten Mal alarmiert das System sofort die Sicherheit, wenn dieser Typ erneut auftritt.
2.4. Im Handel
Der Einzelhandel und verschiedene Dienstleistungsunternehmen sind an der Warteschlangenerkennung interessiert. Mit Hilfe von Vision können Sie erkennen, dass es sich nicht um eine zufällige Menschenmenge, sondern um eine Warteschlange handelt, und deren Länge bestimmen. Und dann informiert das System die Verantwortlichen über eine Warteschlange, damit sie die Situation einschätzen können: Entweder gibt es einen Besucherandrang und es müssen zusätzliche Arbeitskräfte gerufen werden, oder jemand vernachlässigt seine Aufgaben.
Eine weitere interessante Aufgabe besteht darin, die Mitarbeiter des Unternehmens in der Halle von den Besuchern zu trennen. Typischerweise ist das System darauf trainiert, Objekte zu trennen, die bestimmte Kleidungsstücke tragen (Kleiderordnung) oder ein besonderes Merkmal aufweisen (Markenschal, Abzeichen auf der Brust usw.). Dies hilft, die Anwesenheit genauer einzuschätzen (damit die Mitarbeiter die Statistiken der Personen im Saal nicht durch ihre bloße Anwesenheit „aufblähen“).
Mithilfe der Gesichtserkennung können Sie auch Ihr Publikum auswerten: Wie hoch ist die Loyalität der Besucher, d. h. wie viele Menschen kommen mit welcher Häufigkeit in Ihr Lokal zurück? Berechnen Sie, wie viele einzelne Besucher pro Monat zu Ihnen kommen. Um die Kosten für die Anziehung und Bindung zu optimieren, können Sie auch die Verkehrsveränderung in Abhängigkeit vom Wochentag und sogar der Tageszeit ermitteln.
Franchisegeber und Kettenunternehmen können eine Fotobewertung der Markenqualität verschiedener Einzelhandelsgeschäfte anfordern: das Vorhandensein von Logos, Schildern, Postern, Bannern usw.
2.5. Mit dem Transport
Ein weiteres Beispiel für die Gewährleistung der Sicherheit mittels Videoanalyse ist die Identifizierung liegengelassener Gegenstände in den Hallen von Flughäfen oder Bahnhöfen. Das Sehen kann trainiert werden, um Objekte Hunderter Klassen zu erkennen: Möbelstücke, Taschen, Koffer, Regenschirme, verschiedene Arten von Kleidung, Flaschen und so weiter. Wenn Ihr Videoanalysesystem ein herrenloses Objekt erkennt und es mithilfe von Vision erkennt, sendet es ein Signal an den Sicherheitsdienst. Eine ähnliche Aufgabe ist mit der automatischen Erkennung ungewöhnlicher Situationen an öffentlichen Orten verbunden: Jemand fühlt sich krank, jemand raucht am falschen Ort, jemand fällt auf die Schienen usw. – all diese Muster können von Videoanalysesystemen erkannt werden über die Vision API.
2.6. Dokumentenfluss
Eine weitere interessante zukünftige Anwendung von Vision, die wir derzeit entwickeln, ist die Dokumentenerkennung und deren automatische Analyse in Datenbanken. Anstatt endlose Serien, Nummern, Ausstellungsdaten, Kontonummern, Bankdaten, Geburtsdaten und -orte und viele andere formalisierte Daten manuell einzugeben (oder schlimmer noch, einzugeben), können Sie Dokumente scannen und sie automatisch über einen sicheren Kanal über senden API zur Cloud, wo das System diese Dokumente im Handumdrehen erkennt, sie analysiert und eine Antwort mit Daten im erforderlichen Format für die automatische Eingabe in die Datenbank zurückgibt. Heute weiß Vision bereits, wie man Dokumente (einschließlich PDF) klassifiziert – unterscheidet zwischen Pässen, SNILS, TIN, Geburtsurkunden, Heiratsurkunden und anderen.
Natürlich ist das neuronale Netzwerk nicht in der Lage, alle diese Situationen sofort zu bewältigen. In jedem Fall wird ein neues Modell für einen bestimmten Kunden erstellt, viele Faktoren, Nuancen und Anforderungen berücksichtigt, Datensätze ausgewählt und Iterationen von Training, Tests und Konfiguration durchgeführt.
3. API-Betriebsschema
Das „Eingangstor“ von Vision für Benutzer ist die REST-API. Es kann Fotos, Videodateien und Sendungen von Netzwerkkameras (RTSP-Streams) als Eingabe empfangen.
Um Vision nutzen zu können, benötigen Sie
Beispielantwort
{
"status":200,
"body":{
"objects":[
{
"status":0,
"name":"file_0"
},
{
"status":0,
"name":"file_2",
"persons":[
{
"tag":"person9"
"coord":[149,60,234,181],
"confidence":0.9999,
"awesomeness":0.45
},
{
"tag":"person10"
"coord":[159,70,224,171],
"confidence":0.9998,
"awesomeness":0.32
}
]
}
{
"status":0,
"name":"file_3",
"persons":[
{
"tag":"person11",
"coord":[157,60,232,111],
"aliases":["person12", "person13"]
"confidence":0.9998,
"awesomeness":0.32
}
]
},
{
"status":0,
"name":"file_4",
"persons":[
{
"tag":"undefined"
"coord":[147,50,222,121],
"confidence":0.9997,
"awesomeness":0.26
}
]
}
],
"aliases_changed":false
},
"htmlencoded":false,
"last_modified":0
}
Die Antwort enthält einen interessanten Parameter Großartigkeit – das ist die bedingte „Coolness“ eines Gesichts auf einem Foto, mit deren Hilfe wir aus der Sequenz die beste Aufnahme eines Gesichts auswählen. Wir haben ein neuronales Netzwerk trainiert, um die Wahrscheinlichkeit vorherzusagen, dass ein Foto in sozialen Netzwerken geliked wird. Je besser die Qualität des Fotos und je mehr das Gesicht lächelt, desto beeindruckender ist es.
API Vision verwendet ein Konzept namens Raum. Dies ist ein Werkzeug zum Erstellen verschiedener Gesichtsgruppen. Beispiele für Räume sind schwarze und weiße Listen, Listen von Besuchern, Mitarbeitern, Kunden usw. Für jeden Token in Vision können Sie bis zu 10 Räume erstellen, jeder Raum kann bis zu 50 PersonIDs haben, also bis zu 500 pro Token. Darüber hinaus ist die Anzahl der Token pro Konto nicht begrenzt.
Heute unterstützt die API die folgenden Erkennungs- und Erkennungsmethoden:
- Erkennen/Einstellen – Erkennung und Erkennung von Gesichtern. Weist jeder eindeutigen Person automatisch eine PersonID zu und gibt die PersonID und die Koordinaten der gefundenen Personen zurück.
- Löschen – Löschen einer bestimmten PersonID aus der Personendatenbank.
- Abschneiden – löscht den gesamten Bereich von PersonID. Dies ist nützlich, wenn er als Testbereich verwendet wurde und Sie die Datenbank für die Produktion zurücksetzen müssen.
- Erkennen – Erkennung von Objekten, Szenen, Nummernschildern, Orientierungspunkten, Warteschlangen usw. Gibt die Klasse der gefundenen Objekte und ihre Koordinaten zurück
- Nach Dokumenten suchen – erkennt bestimmte Arten von Dokumenten der Russischen Föderation (unterscheidet Reisepass, SNILS, Steueridentifikationsnummer usw.).
Außerdem werden wir in Kürze die Arbeiten an Methoden zur OCR zur Bestimmung von Geschlecht, Alter und Emotionen sowie zur Lösung von Merchandising-Problemen, also zur automatischen Steuerung der Warenpräsentation in Geschäften, abschließen. Die vollständige API-Dokumentation finden Sie hier:
4. Заключение
Über die öffentliche API können Sie jetzt auf die Gesichtserkennung in Fotos und Videos zugreifen; die Identifizierung verschiedener Objekte, Nummernschilder, Sehenswürdigkeiten, Dokumente und ganzer Szenen wird unterstützt. Anwendungsszenarien – das Meer. Kommen Sie vorbei, testen Sie unseren Service und stellen Sie ihm die kniffligsten Aufgaben. Die ersten 5000 Transaktionen sind kostenlos. Vielleicht ist es die „fehlende Zutat“ für Ihre Projekte.
Nach der Registrierung und Verbindung können Sie sofort auf die API zugreifen.
Source: habr.com