Computer Vision. Jetzt reden sie viel darüber, wo es viel angewendet und implementiert wird. Und irgendwie gab es vor einiger Zeit keine Übersichtsartikel über Habré im Lebenslauf mit Beispielen für Architekturen und moderne Aufgaben. Aber es gibt viele von ihnen und sie sind wirklich cool! Wenn Sie daran interessiert sind, was jetzt in Computer Vision passiert, nicht nur aus Sicht der
Forschung und Artikel , sondern auch aus Sicht der angewandten Probleme, dann sind Sie bei cat willkommen. Der Artikel kann auch eine gute Einführung für diejenigen sein, die schon lange anfangen wollten, all dies zu verstehen, aber etwas war im Weg;)

Heute gibt es bei PhysTech eine aktive Zusammenarbeit zwischen der "Akademie" und Industriepartnern. Insbesondere gibt es viele
interessante Labors von Unternehmen wie Sberbank, Biocad, 1C, Tinkoff, MTS und Huawei an der
PhysTech School für Angewandte Mathematik und Informatik .
Ich wurde inspiriert, diesen Artikel zu schreiben, indem ich im Labor für
hybride intelligente Systeme arbeitete , das von
VkusVill eröffnet wurde. Das Labor hat eine ehrgeizige Aufgabe - ein Geschäft zu bauen, das ohne Geldschalter funktioniert, hauptsächlich mit Hilfe von Computer Vision. Fast ein Jahr lang hatte ich die Gelegenheit, an vielen Aufgaben des Sehens zu arbeiten, die in diesen beiden Teilen erörtert werden.
Ohne Kasse einkaufen? Irgendwo habe ich es schon gehört ..Wahrscheinlich, lieber Leser, haben Sie an
Amazon Go gedacht. In gewissem Sinne besteht die Aufgabe darin, ihren Erfolg zu wiederholen, aber bei unserer Entscheidung geht es mehr um die Implementierung als darum, ein solches Geschäft für
viel Geld von Grund auf neu
aufzubauen .
Wir werden nach Plan umziehen:
- Motivation und was los ist
- Einstufung als Lebensstil
- Faltungsarchitekturen für neuronale Netze: 1000 Wege, um ein Ziel zu erreichen
- Visualisierung von Faltungs-Neuronalen Netzen: Zeigen Sie mir Leidenschaft
- Ich selbst bin eine Art Chirurg: Wir extrahieren Merkmale aus neuronalen Netzen
- Bleiben Sie nah dran: Repräsentationslernen für Menschen und Einzelpersonen
- Teil 2:
Erkennen, Bewerten der Haltung und Erkennen von Handlungen ohne Spoiler
Motivation und was los ist
Für wen ist der Artikel?Der Artikel konzentriert sich mehr auf Menschen, die bereits mit maschinellem Lernen und neuronalen Netzen vertraut sind. Ich rate Ihnen jedoch, mindestens die ersten beiden Abschnitte zu lesen - plötzlich wird alles klar :)
Im Jahr 2019 sprechen alle über künstliche Intelligenz, die
vierte industrielle Revolution und die
Annäherung der Menschheit an eine Singularität . Cool, cool, aber ich möchte Einzelheiten. Schließlich sind wir neugierige Technikfreaks, die nicht an Märchen über KI glauben, sondern an formale Aufgabenstellung, Mathematik und Programmierung. In diesem Artikel werden wir über spezifische Fälle der Verwendung der sehr modernen KI sprechen - die Verwendung von Deep Learning (nämlich Faltungs-Neuronale Netze) in einer Vielzahl von Computer-Vision-Aufgaben.
Ja, wir werden speziell über Gitter sprechen und manchmal einige Ideen aus einer „klassischen“ Sicht erwähnen (wir werden die Methoden in der Vision nennen, die vor neuronalen Netzen verwendet wurden, aber dies bedeutet keineswegs, dass sie jetzt nicht verwendet werden).
Ich möchte Computer Vision von Grund auf lernenIch empfehle
Anton Konushins Kurs "Einführung in Computer Vision" . Persönlich habe ich das Gegenstück in SHAD durchgesehen, das eine solide Grundlage für das Verständnis der Bild- und Videoverarbeitung gelegt hat.
Meiner Meinung nach ist die erste wirklich interessante Anwendung neuronaler Netze in der Vision, über die 1993 in den Medien berichtet wurde, die
Handschrifterkennung durch Jan LeCun . Jetzt ist er einer der Haupt-KI in der
Facebook-KI-Forschung . Ihr Team hat bereits
viele nützliche Open Source-Inhalte veröffentlicht .
Vision wird heute in vielen Bereichen eingesetzt. Ich werde nur einige bemerkenswerte Beispiele nennen:
Unbemannte Fahrzeuge von Tesla und YandexMedizinische Bildgebungsanalyse und KrebsvorhersageSpielekonsolen: Kinect 2.0 (obwohl immer noch Tiefeninformationen verwendet werden, dh RGB-D-Bilder)Gesichtserkennung: Apple FaceID (mit mehreren Sensoren)Gesichtspunktbewertung: Snapchat-MaskenBiometrie der Gesichts- und Augenbewegungen (ein Beispiel aus dem Projekt von FPMI MIPT )Suche nach Bild: Yandex und GoogleErkennung des Bildtextes ( optische Zeichenerkennung )Drohnen und Roboter: Empfangen und Verarbeiten von Informationen durch SehenKilometerzähler : Erstellen einer Karte und Planen beim Bewegen von RoboternVerbesserung von Grafiken und Texturen in VideospielenBildübersetzung: Yandex und GoogleAugmented Reality: Sprungbewegung (Projekt Nordstern ) und Microsoft HololensStil- und Texturübertragung : Prisma , PicsArtGanz zu schweigen von den zahlreichen Anwendungen in verschiedenen internen Aufgaben von Unternehmen. Facebook verwendet beispielsweise auch Vision, um Medieninhalte zu filtern. Computer Vision-Methoden werden auch bei
Qualitäts- / Schadensprüfungen in der Industrie eingesetzt .
Augmented Reality muss hier in der Tat besondere Aufmerksamkeit gewidmet werden, da
es in naher Zukunft
nicht funktioniert , kann dies einer der Hauptanwendungsbereiche des Sehens werden.
Motiviert. Aufgeladen. Lass uns gehen:
Einstufung als Lebensstil

Wie gesagt, in den 90ern wurden die Netze in Sichtweite abgefeuert. Und sie haben in einer bestimmten Aufgabe gedreht - der Aufgabe, Bilder von handgeschriebenen Zahlen zu klassifizieren (der berühmte
MNIST-Datensatz ). Historisch gesehen war es die Aufgabe, Bilder zu klassifizieren, die zur Grundlage für die Lösung fast aller nachfolgenden Aufgaben in der Vision wurde. Betrachten Sie ein bestimmtes Beispiel:
Aufgabe : Am Eingang befindet sich ein Ordner mit Fotos. Jedes Foto hat ein bestimmtes Objekt: entweder eine Katze, einen Hund oder eine Person (auch wenn es keine "Müll" -Fotos gibt, ist dies eine nicht unbedingt wichtige Aufgabe, aber Sie müssen irgendwo anfangen). Sie müssen die Bilder in drei Ordner zerlegen:
/cats
,
/dogs
und
/leather_bags
/humans
, wobei nur Fotos mit den entsprechenden Objekten in jedem Ordner
/leather_bags
.
Was ist ein Bild / Foto?
Fast überall in der Vision ist es üblich, mit Bildern im RGB-Format zu arbeiten. Jedes Bild hat eine Höhe (H), eine Breite (B) und eine Tiefe von 3 (Farben). Somit kann ein Bild als Tensor der Dimension HxBx3 dargestellt werden (jedes Pixel ist ein Satz von drei Zahlen - Intensitätswerte in den Kanälen).
Stellen Sie sich vor, wir sind noch nicht mit Computer Vision vertraut, aber wir kennen uns mit maschinellem Lernen aus. Bilder sind einfach numerische Tensoren im Speicher des Computers. Wir formalisieren die Aufgabe in Bezug auf maschinelles Lernen: Objekte sind Bilder, ihre Zeichen sind Werte in Pixel, die Antwort für jedes der Objekte ist eine Klassenbezeichnung (Katze, Hund oder Person). Dies ist eine reine
Klassifizierungsaufgabe .
Sie können einige Methoden aus der „klassischen“ Sicht oder dem „klassischen“ maschinellen Lernen verwenden, dh nicht aus einem neuronalen Netzwerk. Grundsätzlich bestehen diese Methoden darin, die Bilder bestimmter Merkmale (Sonderpunkte) oder lokaler Regionen hervorzuheben, die das Bild charakterisieren („
Tasche mit visuellen Wörtern “). Normalerweise läuft alles auf etwas wie
SVM über
HOG /
SIFT hinaus .
Wir haben uns hier versammelt, um über neuronale Netze zu sprechen. Wir möchten also nicht die von uns erfundenen Zeichen verwenden, sondern dass das Netzwerk alles für uns tut. Unser Klassifikator nimmt die Vorzeichen eines Objekts als Eingabe und gibt eine Vorhersage (Klassenbezeichnung) zurück. Hier wirken die Intensitätswerte in Pixel als Vorzeichen (siehe Bildmodell in
Spoiler oben). Denken Sie daran, dass ein Bild ein Größentensor (Höhe, Breite, 3) ist (wenn es Farbe ist). Wenn Sie lernen, in das Raster einzutreten, wird dies normalerweise nicht von einem Bild und nicht von einem ganzen Datensatz, sondern von Stapeln, d. H. in kleinen Teilen von Objekten (z. B. 64 Bilder im Stapel).
Somit empfängt das Netzwerk einen Eingangstensor der Größe (BATCH_SIZE, H, W, 3). Sie können jedes Bild in eine Vektorlinie aus H * W * 3-Zahlen „erweitern“ und mit den Werten in Pixeln arbeiten, genau wie mit Zeichen beim maschinellen Lernen. Ein
normales Multilayer-Perceptron (MLP) würde genau das tun, aber ehrlich gesagt ist es so Basislinie, da beim Arbeiten mit Pixeln als Vektorzeile beispielsweise die translatorische Invarianz von Objekten im Bild nicht berücksichtigt wird. Dieselbe Katze kann sich in der Mitte des Fotos befinden, und in der Ecke lernt MLP dieses Muster nicht.
Sie brauchen also etwas Klügeres, zum Beispiel eine Faltungsoperation. Und hier geht es um moderne Vision, um
Faltungs-Neuronale Netze :
Der Trainingscode für das Faltungsnetzwerk sieht möglicherweise ungefähr so aus (im PyTorch-Framework). Da wir jetzt über das
Training mit einem Lehrer sprechen, benötigen wir mehrere Komponenten für das Training eines neuronalen Netzwerks:
- Daten (bereits vorhanden)
- Netzwerkarchitektur (Highlight)
- Eine Verlustfunktion, die angibt, wie das neuronale Netzwerk zu lernen ist (hier ist es Kreuzentropie ).
- Optimierungsmethode (ändert das Netzwerkgewicht in die richtige Richtung)
- Definieren Sie Architektur- und Optimierer-Hyperparameter (z. B. Schrittgröße des Optimierers, Anzahl der Neuronen in Schichten, Regularisierungskoeffizienten)
Dies ist genau das, was im Code implementiert ist: Das Faltungs-Neuronale Netzwerk selbst wird in der Klasse Net () beschrieben.
Wenn Sie langsam und von Anfang an etwas über Faltung und Faltungsnetzwerke lernen möchten, empfehle ich einen
Vortrag an der Deep Learning School (MIPT MIPT) (auf Russisch) zu diesem Thema und natürlich
Stanfords Kurs cs231n (auf Englisch) .
Kurz gesagt, mit der Faltungsoperation können Sie Muster auf Bildern anhand ihrer Variabilität finden. Wenn wir Faltungs-Neuronale Netze trainieren (dt.: Faltungs-Neuronale Netze), finden wir tatsächlich Faltungsfilter (Neuronengewichte), die Bilder gut beschreiben und so gut, dass wir die Klasse daraus genau bestimmen können. Es wurden viele Wege erfunden, um ein solches Netzwerk aufzubauen. Mehr als Sie denken ...
Faltungsarchitekturen für neuronale Netze: 1000 Wege, um ein Ziel zu erreichen
Ja, ja, noch
eine architektonische Überprüfung . Aber hier werde ich versuchen, es so relevant wie möglich zu machen!
Zuerst gab es
LeNet , es half Jan
LeCun 1998, Zahlen zu erkennen. Dies war das erste Faltungsnetzwerk zur Klassifizierung. Ihr Hauptmerkmal war, dass sie im Grunde genommen anfing,
Faltungs- und Pooling- Operationen durchzuführen.

Dann gab es eine Pause bei der Entwicklung von Grids, aber die Hardware stand nicht still, und es wurden effektive Berechnungen für GPU und
XLA entwickelt . Im Jahr 2012 erschien AlexNet, sie schoss im ILSVRC-Wettbewerb (
ImageNet Large-Scale Visual Recognition Challenge ).
Ein kleiner Exkurs über ILSVRCImageNet wurde bis 2012 zusammengestellt und eine Teilmenge von Tausenden von Bildern und 1000 Klassen wurde für den ILSVRC-Wettbewerb verwendet. ImageNet hat derzeit ~ 14 Millionen Bilder und 21.841 Klassen (von der offiziellen Website übernommen), aber für den Wettbewerb wählen sie normalerweise nur eine Teilmenge aus. ILSVRC wurde dann zum größten jährlichen Bildklassifizierungswettbewerb. Übrigens haben wir kürzlich herausgefunden, wie man
in wenigen Minuten auf ImageNet trainiert .
Von 2010 bis 2018 erhielten sie im ImageNet (in ILSVRC)
SOTA- Netzwerke für die Klassifizierung von Bildern. Zwar sind seit 2016 eher Wettbewerbe zur Lokalisierung, Erkennung und zum Verständnis der Szene als zur Klassifizierung relevanter.
In der Regel werfen verschiedene
Architekturprüfungen Licht auf diejenigen, die von 2010 bis 2016 die ersten beim ILSVRC waren, sowie auf einige einzelne Netzwerke. Um die Geschichte nicht zu überladen, habe ich sie unter den Spoiler gelegt und versucht, die Hauptideen hervorzuheben:
Architektur von 2012 bis 2015 
Die Ideen all dieser Architekturen (mit Ausnahme von ZFNet, es wird normalerweise wenig erwähnt) waren zu einer Zeit ein neues Wort in neuronalen Netzen für Vision. Nach 2015 gab es jedoch viele weitere wichtige Verbesserungen, beispielsweise Inception-ResNet, Xception, DenseNet, SENet. Unten habe ich versucht, sie an einem Ort zu sammeln.
Architektur von 2015 bis 2019 Die meisten dieser Modelle für PyTorch finden Sie
hier , und es gibt
so eine coole Sache .
Sie haben vielleicht bemerkt, dass das Ganze ziemlich viel wiegt (ich möchte maximal 20 MB oder sogar weniger), während heutzutage mobile Geräte überall verwendet werden und das
Internet der Dinge immer beliebter wird, was bedeutet, dass Sie dort auch Gitter verwenden möchten.
Beziehung zwischen Modellgewicht und GeschwindigkeitDa die neuronalen Netze in sich nur Tensoren multiplizieren, wirkt sich die Anzahl der Multiplikationsoperationen (sprich: die Anzahl der Gewichte) direkt auf die Arbeitsgeschwindigkeit aus (wenn keine arbeitsintensive Nach- oder Vorverarbeitung verwendet wird). Die Geschwindigkeit des Netzwerks selbst hängt von der Implementierung (Framework), der Hardware, auf der es ausgeführt wird, und der Größe des Eingabebilds ab.
Die Autoren vieler Artikel gingen den Weg, schnelle Architekturen zu erfinden. Ich sammelte ihre Methoden unter dem folgenden Spoiler:
CNN Lightweight-Architektur Die Nummern in allen Tabellen
stammen aus der Obergrenze der Repositorys,
der Keras-Anwendungstabelle und
diesem Artikel .
Sie fragen: „Warum haben Sie über diesen ganzen„ Zoo “von Modellen geschrieben? Und warum ist die Aufgabe der Klassifizierung? Aber wir wollen Maschinen das Sehen beibringen, und Klassifizierung ist nur eine enge Aufgabe. “ Tatsache ist, dass neuronale Netze zum Erkennen von Objekten, zum Bewerten von Körperhaltungen / Punkten, zum erneuten Identifizieren und Suchen in einem Bild präzise Modelle zur Klassifizierung als
Rückgrat verwenden und 80% des Erfolgs von ihnen abhängen.
Aber ich möchte CNN irgendwie mehr vertrauen, oder sie haben sich Black Boxes ausgedacht, aber was „drinnen“ ist, ist nicht offensichtlich. Um den Funktionsmechanismus von Faltungsnetzwerken besser zu verstehen, entwickelten die Forscher die Verwendung von Visualisierung.
Visualisierung von Faltungs-Neuronalen Netzen: Zeigen Sie mir Leidenschaft
Ein wichtiger Schritt, um zu verstehen, was in Faltungsnetzwerken geschieht, ist der Artikel
„Visualisieren und Verstehen von Faltungsnetzwerken“ . Darin schlugen die Autoren verschiedene Möglichkeiten vor, um genau zu visualisieren, worauf (auf welchen Teilen des Bildes) Neuronen in verschiedenen CNN-Schichten reagieren (ich empfehle auch,
einen Stanford-Vortrag zu diesem Thema anzuschauen). Die Ergebnisse waren sehr beeindruckend: Die Autoren zeigten, dass die ersten Schichten des Faltungsnetzwerks auf einige „Dinge auf niedriger Ebene“ durch die Art der Kanten / Winkel / Linien reagieren, und die letzten Schichten bereits auf ganze Teile der Bilder (siehe Bild unten), dh sie tragen bereits an sich einige Semantik.
Darüber hinaus hat das
Projekt zur Tiefenvisualisierung von der Cornell University und das Unternehmen die Visualisierung noch weiter vorangetrieben, während der
berühmte DeepDream gelernt hat, in einem
süchtig machenden interessanten Stil zu verzerren (unten ein Bild von
deepdreamgenerator.com ).
2017
wurde auf Distill ein
sehr guter Artikel veröffentlicht , in dem eine detaillierte Analyse dessen durchgeführt wurde, was jede Ebene „sieht“. Zuletzt (im März 2019) erfand Google
Aktivierungsatlanten : einzigartige Karten, die für jede Netzwerkschicht erstellt werden können. Dies bringt uns dem Verständnis des Gesamtbildes der Arbeit von CNN näher.
Wenn Sie selbst mit Visualisierung spielen möchten, würde ich
Lucid und
TensorSpace empfehlen.
Okay, CNN scheint bis zu einem gewissen Grad wahr zu sein. Wir müssen lernen, wie man dies bei anderen Aufgaben verwendet und nicht nur bei der Klassifizierung. Dies wird uns helfen, Embedding'ov-Bilder zu extrahieren und Lernen zu übertragen.
Ich selbst bin eine Art Chirurg: Wir extrahieren Merkmale aus neuronalen Netzen
Stellen Sie sich vor, es gibt ein Bild, und wir möchten diejenigen finden, die visuell so aussehen (dies ist beispielsweise die Suche in einem Bild in Yandex.Pictures). Früher (vor neuronalen Netzen) haben Ingenieure Funktionen dafür manuell extrahiert, z. B. etwas erfunden, das das Bild gut beschreibt und es mit anderen vergleichen kann. Grundsätzlich arbeiten diese Methoden (
HOG ,
SIFT ) mit
Bildverläufen , normalerweise werden diese Dinge als "klassische" Bilddeskriptoren bezeichnet. Von besonderem Interesse beziehe ich mich auf den
Artikel und den
Kurs von Anton Konushin (dies ist keine Werbung, nur ein guter Kurs :)
Mithilfe neuronaler Netze können wir diese Merkmale und Heuristiken nicht selbst erfinden, sondern das Modell richtig trainieren und dann
die Ausgabe einer oder mehrerer Schichten des Netzes als Zeichen des Bildes verwenden .
Ein genauerer Blick auf alle Architekturen macht deutlich, dass die Klassifizierung in CNN zwei Schritte umfasst:
1).
Feature-Extraktor- Ebenen zum Extrahieren informativer Features aus Bildern mithilfe von Faltungsebenen
2). Lernen über diese Funktionen hinaus
Fully Connected (FC) -Klassifiziererebenen
Beim Einbetten von Bildern (Features) geht es nur darum, dass Sie ihre Zeichen nach dem Feature-Extraktor eines Faltungs-Neuronalen Netzwerks (obwohl sie auf unterschiedliche Weise aggregiert werden können) als informative Beschreibung von Bildern verwenden können. Das heißt, wir haben das Netzwerk für die Klassifizierung geschult und nehmen dann einfach den Ausgang vor den Klassifizierungsebenen. Diese Zeichen werden als
Merkmale ,
neuronale Netzwerkdeskriptoren oder
Bildeinbettungen bezeichnet (obwohl Einbettungen im NLP normalerweise akzeptiert werden, da dies eine Vision ist, spreche ich häufig
Merkmale ). Normalerweise ist dies eine Art numerischer Vektor, zum Beispiel 128 Zahlen, mit denen Sie bereits arbeiten können.
Aber was ist mit Auto-Encodern?Ja, tatsächlich können Funktionen von
Auto-Encodern erhalten werden . In meiner Praxis haben sie dies auf unterschiedliche Weise getan, aber zum Beispiel in Artikeln zur Neuidentifizierung (auf die später noch eingegangen wird) nehmen sie immer noch Funktionen nach dem Extraktor an, anstatt den Auto-Encoder dafür zu trainieren. Es scheint mir, dass es sich lohnt, Experimente in beide Richtungen durchzuführen, wenn die Frage ist, was besser funktioniert.
Somit kann die Pipeline zur Lösung
des Suchproblems in einem Bild einfach angeordnet werden: Wir führen die Bilder durch CNN, nehmen Zeichen aus den gewünschten Ebenen und vergleichen diese Merkmale aus verschiedenen Bildern miteinander. Zum Beispiel betrachten wir einfach den euklidischen Abstand dieser Vektoren.
Transfer Learning ist eine bekannte Technik für das effektive Training neuronaler Netze, die bereits für ihre Aufgabe an einem bestimmten Datensatz trainiert wurden. Oft heißt es auch
Feinabstimmung anstelle von Transferlernen. In den
Stanford-Kursnotizen cs231 werden diese Konzepte geteilt. Transferlernen ist eine allgemeine Idee, und Feinabstimmung ist eine der Implementierungen der Technik. Dies ist für uns in Zukunft nicht so wichtig. Die Hauptsache ist zu verstehen, dass wir das Netzwerk nur so trainieren können, dass es den neuen Datensatz gut vorhersagt, und zwar nicht ausgehend von zufälligen Gewichten, sondern von solchen, die auf einem großen ImageNet-Typ trainiert wurden. Dies gilt insbesondere dann, wenn nur wenige Daten vorhanden sind und Sie das Problem qualitativ lösen möchten.
Erfahren Sie mehr über Transfer Learning Es reicht jedoch möglicherweise nicht aus, nur die erforderlichen Funktionen zu übernehmen und zusätzliche Schulungen vom Datensatz zum Datensatz durchzuführen, um beispielsweise nach ähnlichen Personen / Personen / etwas Bestimmtem zu suchen. Fotos derselben Person können manchmal visuell noch unähnlicher sein als Fotos verschiedener Personen. Es ist notwendig, dass das Netzwerk genau die Zeichen hervorhebt, die einer Person / einem Objekt innewohnen, auch wenn es für uns schwierig ist, dies mit unseren Augen zu tun. Willkommen in der Welt des
Repräsentationslernens .
Bleiben Sie nah dran: Repräsentationslernen für Menschen und Einzelpersonen
Terminologie HinweisWenn Sie wissenschaftliche Artikel lesen, scheinen einige Autoren den Ausdruck metrisches Lernen manchmal anders zu verstehen, und es besteht kein Konsens darüber, welche Methoden als metrisches Lernen bezeichnet werden sollen und welche nicht. Aus diesem Grund habe ich mich in diesem Artikel dazu entschlossen, diesen bestimmten Satz zu vermeiden und ein logischeres Darstellungslernen zu verwenden . Einige Leser stimmen dem möglicherweise nicht zu. Ich werde dies gerne in den Kommentaren diskutieren.
Wir stellen die Aufgaben:
- Aufgabe 1 : Es gibt eine Galerie (Set) mit Fotos von Gesichtern von Personen. Wir möchten, dass das Netzwerk gemäß einem neuen Foto entweder mit dem Namen einer Person aus der Galerie antworten kann (angeblich ist es das) oder dass es keine solche Person in der Galerie gibt (und wir fügen sie möglicherweise hinzu neue Person)
- Aufgabe 2 : Das Gleiche, aber wir arbeiten nicht mit Fotos von Gesichtern, sondern mit Menschen in voller Länge
Die erste Aufgabe wird normalerweise als
Gesichtserkennung bezeichnet , die zweite als
Neuidentifizierung (abgekürzt als
Reid ). Ich habe sie in einem Block zusammengefasst, weil ihre Lösungen heute ähnliche Ideen verwenden: Um effektive Bildeinbettungen zu erlernen, die mit ziemlich schwierigen Situationen umgehen können, verwenden sie heute verschiedene Arten von Verlusten, wie zum Beispiel
Triplettverlust ,
Vierfachverlust Kontrastmittelverlust ,
Kosinusverlust .
Es gibt immer noch wunderbare
siamesische Netzwerke , aber ich habe sie ehrlich gesagt nicht selbst benutzt. Übrigens „entscheidet“ nicht nur der Verlust selbst, sondern auch, wie Paare von Positiven und Negativen dafür
abgetastet werden, betonen die Autoren des Artikels
Sampling, die beim tiefgreifenden Einbetten des Lernens eine Rolle spielen.
Das Wesentliche all dieser Verluste und siamesischen Netzwerke ist einfach: Wir möchten, dass die Bilder einer Klasse (Person) im latenten Raum der Merkmale (Einbettungen) „nah“ und verschiedener Klassen (Menschen) „fern“ sind. Die Nähe wird normalerweise wie folgt gemessen: Es werden Einbettungen von Bildern aus einem neuronalen Netzwerk vorgenommen (z. B. ein Vektor mit 128 Zahlen), und wir betrachten entweder den üblichen
euklidischen Abstand zwischen diesen Vektoren oder die
Kosinusnähe. Wie Sie messen können, ist besser, wenn Sie einen Datensatz / eine Aufgabe auswählen.
Eine schematische Darstellung einer Problemlösungspipeline zum Lernen von Darstellungen sieht ungefähr so aus:
Genauer gesagt, so: (Softmax + CrossEntropy), (Triplet, Contrastive, etc.). positive' negative'
: - , — . , — - , (,
). .
:
- ( MUST READ! ) ,
FaceNet ,
ArcFace ,
CosFace .
:
dlib ,
OpenFace ,
FaceNet repo ,
. , ArcFace CosFace ( , - , - ).
,
, ?
,
- , , , - , - .

Reid :
, , 10 , 5 ( ), 50 . (), , , ID. , : , , ,
, , , ( / ..).
,
Reid — . , - , - negative' positive'.
Reid
2016 . , , — representation learning. , -, ,
Aligned Re-Id (,
, ),
Generative Adversarial Networks (GAN) .
OpenReid TorchReid . — , ,
. PyTorch, Readme Person Re-identification, .
face- reid- (
, ). ? …
, . , , ? ( ) :
float64, , , float32 .
low-precision training . , , Google
MorphNet , ( ) .
?
DL CV: , , , . : , , . ,
, , . .
Stay tuned!