Vision par ordinateur. Maintenant, ils en parlent beaucoup, oĂč il est appliquĂ© et mis en Ćuvre beaucoup. Et il y a quelque temps, il n'y avait pas d'articles de synthĂšse sur HabrĂ© sur CV, avec des exemples d'architectures et de tĂąches modernes. Mais il y en a beaucoup et ils sont vraiment cool! Si vous ĂȘtes intĂ©ressĂ© par ce qui se passe actuellement en vision par ordinateur, non seulement du point de vue de la
recherche et des articles , mais aussi du point de vue des problĂšmes appliquĂ©s, vous ĂȘtes les bienvenus chez cat. De plus, l'article peut ĂȘtre une bonne introduction pour ceux qui ont longtemps voulu commencer Ă comprendre tout cela, mais quelque chose Ă©tait sur le chemin;)

Aujourd'hui, au PhysTech, il y a une collaboration active de l '"Académie" et des partenaires industriels. En particulier, il existe de nombreux
laboratoires intéressants de sociétés telles que Sberbank, Biocad, 1C, Tinkoff, MTS, Huawei à la
PhysTech School of Applied Mathematics and Computer Science .
J'ai été inspiré pour écrire cet article en travaillant dans le laboratoire des
systĂšmes intelligents hybrides , ouvert par
VkusVill . Le laboratoire a une tùche ambitieuse: construire un magasin qui fonctionne sans caisses, principalement à l'aide de la vision par ordinateur. Pendant prÚs d'un an de travail, j'ai eu l'occasion de travailler sur de nombreuses tùches de vision, qui seront discutées dans ces deux parties.
Acheter sans caisses? Quelque part, je l'ai dĂ©jĂ entendu ..Cher lecteur, vous avez probablement pensĂ© Ă
Amazon Go . Dans un sens, la tĂąche consiste Ă rĂ©pĂ©ter leur succĂšs, mais notre dĂ©cision est plus sur la mise en Ćuvre que sur la construction d'un tel magasin Ă partir de zĂ©ro pour
beaucoup d'argent .
Nous nous déplacerons selon le plan:
- La motivation et ce qui se passe
- La classification comme mode de vie
- Architectures de réseaux de neurones convolutifs: 1000 façons d'atteindre un objectif
- Visualisation des réseaux de neurones convolutionnels: montrez-moi la passion
- Je suis moi-mĂȘme une sorte de chirurgien: on extrait les traits des rĂ©seaux de neurones
- Restez proches: l'apprentissage de la représentation pour les personnes et les individus
- Partie 2:
détecter, évaluer la posture et reconnaßtre les actions sans spoilers
La motivation et ce qui se passe
à qui s'adresse l'article?L'article se concentre davantage sur les personnes qui connaissent déjà l'apprentissage automatique et les réseaux de neurones. Cependant, je vous conseille de lire au moins les deux premiÚres sections - du coup tout sera clair :)
En 2019, tout le monde parle d'intelligence artificielle, de la
quatriÚme révolution industrielle et de l'
approche de l'humanité à une singularité . Cool, cool, mais je veux des détails. AprÚs tout, nous sommes des techniciens curieux qui ne croient pas aux contes de fées sur l'IA, nous croyons au cadre formel des tùches, des mathématiques et de la programmation. Dans cet article, nous parlerons de cas spécifiques d'utilisation de l'IA trÚs moderne - l'utilisation de l'apprentissage en profondeur (à savoir, les réseaux de neurones convolutionnels) dans une variété de tùches de vision par ordinateur.
Oui, nous parlerons spécifiquement des grilles, en mentionnant parfois quelques idées d'un point de vue "classique" (nous appellerons l'ensemble des méthodes en vision qui étaient utilisées avant les réseaux de neurones, mais cela ne signifie nullement qu'elles ne sont pas utilisées maintenant).
à mon avis, la premiÚre application vraiment intéressante des réseaux de neurones en vision, qui a été couverte dans les médias en 1993, est la
reconnaissance de l'écriture manuscrite par Jan LeCun . Maintenant, il est l'un des principaux IA de
Facebook AI Research , leur équipe a déjà publié
beaucoup de choses utiles en Open Source .
Aujourd'hui, la vision est utilisée dans de nombreux domaines. Je ne donnerai que quelques exemples frappants:
Véhicules sans pilote Tesla et YandexAnalyse d'imagerie médicale et prédiction du cancerConsoles de jeu: Kinect 2.0 (bien qu'il utilise également des informations de profondeur, c'est-à -dire des images RGB-D)Reconnaissance faciale : Apple FaceID (utilisant plusieurs capteurs)Cote du visage: masques SnapchatBiométrie des mouvements du visage et des yeux (exemple du projet FPMI MIPT )Recherche par image: Yandex et GoogleReconnaissance du texte dans l'image ( reconnaissance optique des caractÚres )Drones et robots: recevoir et traiter des informations par la visionOdométrie : création d'une carte et planification lors du déplacement de robotsAmélioration des graphismes et des textures dans les jeux vidéoTraduction d'images: Yandex et GoogleRéalité augmentée: Leap Motion (Project North Star) et Microsoft HololensTransfert de style et de texture: Prisma , PicsArtSans oublier les nombreuses applications dans diverses tùches internes des entreprises. Facebook, par exemple, utilise également la vision pour filtrer le contenu multimédia. Les méthodes de vision par ordinateur sont également utilisées
dans les tests de qualité / dommages dans l'industrie .
En fait, la réalité augmentée doit faire l'objet d'une attention particuliÚre, car
elle ne fonctionne pas dans un avenir proche, cela peut devenir l'un des principaux domaines d'application de la vision.
Motivé. Chargé. C'est parti:
La classification comme mode de vie

Comme je l'ai dit, dans les années 90, les filets ont été tirés à vue. Et ils ont tourné dans une tùche spécifique - la tùche de classer les images de nombres manuscrits (le célÚbre
ensemble de données MNIST ). Historiquement, c'était la tùche de classer les images qui était devenue la base pour résoudre presque toutes les tùches ultérieures en vision. Prenons un exemple spécifique:
TĂąche : Un dossier avec des photos est donnĂ© Ă l'entrĂ©e, chaque photo a un objet particulier: soit un chat, soit un chien, soit une personne (mĂȘme s'il n'y a pas de photos "poubelles", c'est une tĂąche super-non vitale, mais il faut commencer quelque part). Vous devez dĂ©composer les images dans trois dossiers:
/cats
,
/dogs
et
/leather_bags
/humans
, en ne plaçant que des photos avec les objets correspondants dans chaque dossier.
Qu'est-ce qu'une image / photo?
Presque partout dans la vision, il est habituel de travailler avec des images au format RVB. Chaque image a une hauteur (H), une largeur (W) et une profondeur de 3 (couleurs). Ainsi, une image peut ĂȘtre reprĂ©sentĂ©e comme un tenseur de dimension HxWx3 (chaque pixel est un ensemble de trois nombres - valeurs d'intensitĂ© dans les canaux).
Imaginez que nous ne connaissions pas encore la vision par ordinateur, mais nous connaissons l'apprentissage automatique. Les images sont simplement des tenseurs numériques dans la mémoire de l'ordinateur. Nous formalisons le problÚme en termes d'apprentissage automatique: les objets sont des images, leurs signes sont des valeurs en pixels, la réponse pour chacun des objets est une étiquette de classe (chat, chien ou personne). Il s'agit d'une pure
tĂąche de classification .
Vous pouvez prendre certaines méthodes de la vue «classique» ou de l'apprentissage automatique «classique», c'est-à -dire pas d'un réseau de neurones. Fondamentalement, ces méthodes consistent à mettre en évidence sur les images de certaines fonctionnalités (points spéciaux) ou des régions locales qui caractériseront l'image («
sac de mots visuels »). Habituellement, tout se résume à quelque chose comme
SVM sur
HOG /
SIFT .
Mais nous nous sommes réunis ici pour parler des réseaux de neurones, donc nous ne voulons pas utiliser les signes que nous avons inventés, mais voulons que le réseau fasse tout pour nous. Notre classificateur prendra les signes d'un objet en entrée et renverra une prédiction (étiquette de classe). Ici, les valeurs d'intensité en pixels agissent comme des signes (voir le modÚle d'image dans
spoiler ci-dessus). N'oubliez pas qu'une image est un tenseur de taille (Hauteur, Largeur, 3) (s'il s'agit de couleur). Lorsque vous apprenez à entrer dans la grille, tout cela n'est généralement pas servi par une image et non par un ensemble de données entier, mais par lots, c'est-à -dire dans de petites portions d'objets (par exemple, 64 images dans le lot).
Ainsi, le réseau reçoit un tenseur d'entrée de taille (BATCH_SIZE, H, W, 3). Vous pouvez «agrandir» chaque image dans une ligne vectorielle de nombres H * W * 3 et travailler avec les valeurs en pixels comme avec les signes dans l'apprentissage automatique, un
Perceptron multicouche (MLP) normal ferait exactement cela, mais honnĂȘtement, c'est comme ça ligne de base, car travailler avec des pixels comme une ligne vectorielle ne prend pas en compte, par exemple, l'invariance translationnelle des objets dans l'image. Le mĂȘme chat peut ĂȘtre au milieu de la photo et dans le coin, MLP n'apprendra pas ce schĂ©ma.
Vous avez donc besoin de quelque chose de plus intelligent, par exemple, une opération de convolution. Et cela concerne la vision moderne,
les réseaux de neurones convolutifs :
Le code de formation du réseau de convolution peut ressembler à ceci (sur le framework PyTorch) Puisque nous parlons maintenant de
formation avec un enseignant , nous avons besoin de plusieurs composants pour former un réseau de neurones:
- Données (existe déjà )
- Architecture de réseau (mise en évidence)
- Une fonction de perte qui dira comment le réseau neuronal apprendra (ici ce sera l' entropie croisée )
- Méthode d'optimisation (changera le poids du réseau dans la bonne direction)
- Définir l'architecture et les hyperparamÚtres de l'optimiseur (par exemple, la taille des pas de l'optimiseur, le nombre de neurones dans les couches, les coefficients de régularisation)
C'est exactement ce qui est implĂ©mentĂ© dans le code; le rĂ©seau neuronal convolutionnel lui-mĂȘme est dĂ©crit dans la classe Net ().
Si vous voulez apprendre lentement et dÚs le début sur les faisceaux et les réseaux de convolution, je recommande une
conférence à la Deep Learning School (MIPT MIPT) (en russe) sur ce sujet et, bien sûr,
le cours de Stanford cs231n (en anglais) .
En bref, l'opération de convolution vous permet de trouver des motifs sur des images en fonction de leur variabilité. Lorsque nous formons des réseaux de neurones à convolution (eng: Réseaux de neurones à convolution), nous trouvons en fait des filtres de convolution (poids des neurones) qui décrivent bien les images, et si bien que nous pouvons déterminer avec précision la classe à partir d'eux. De nombreuses façons ont été inventées pour construire un tel réseau. Plus que vous ne le pensez ...
Architectures de réseaux de neurones convolutifs: 1000 façons d'atteindre un objectif
Oui, oui,
une autre revue architecturale . Mais ici, je vais essayer de le rendre aussi pertinent que possible!
Il y a d'abord eu
LeNet , il a aidé Jan LeCun à reconnaßtre les nombres en 1998. Ce fut le premier réseau neuronal convolutif pour la classification. Sa principale caractéristique était qu'elle commençait essentiellement à utiliser
des opérations de
convolution et de mise en commun .

Ensuite, il y a eu une pause dans le dĂ©veloppement des grilles, mais le matĂ©riel ne s'est pas arrĂȘtĂ©; des calculs efficaces sur GPU et
XLA ont été développés . En 2012, AlexNet est apparue, elle a participé au concours ILSVRC (
ImageNet Large-Scale Visual Recognition Challenge ).
Une petite digression sur ILSVRCImageNet a été assemblé en 2012, et un sous-ensemble de milliers d'images et de 1000 classes a été utilisé pour le concours ILSVRC. ImageNet compte actuellement environ 14 millions de photos et 21 841 classes (prises sur le site officiel), mais pour la compétition, elles ne sélectionnent généralement qu'un sous-ensemble. ILSVRC est alors devenu le plus grand concours annuel de classification d'images. Soit dit en passant, nous avons récemment compris comment
s'entraĂźner sur ImageNet en quelques minutes .
C'est sur ImageNet (en ILSVRC) de 2010 à 2018 qu'ils ont reçu les réseaux
SOTA dans la classification des images. Certes, depuis 2016, les concours de localisation, de détection et de compréhension de la scÚne, plutÎt que de classification, sont plus pertinents.
En rÚgle générale, diverses
revues d'architecture mettent en lumiÚre celles qui ont été les premiÚres à l'ILSVRC de 2010 à 2016 et sur certains réseaux individuels. Afin de ne pas encombrer l'histoire, je les ai placés sous le spoiler ci-dessous, en essayant de souligner les idées principales:
Architecture de 2012 Ă 2015 
Les idées de toutes ces architectures (à l'exception de ZFNet, il est généralement peu mentionné) étaient à une époque un nouveau mot dans les réseaux de neurones pour la vision. Cependant, aprÚs 2015, il y a eu de nombreuses autres améliorations importantes, par exemple, Inception-ResNet, Xception, DenseNet, SENet. Ci-dessous, j'ai essayé de les rassembler en un seul endroit.
Architecture de 2015 Ă 2019 La plupart de ces modĂšles pour PyTorch peuvent ĂȘtre trouvĂ©s
ici , et il y a
une telle chose cool .
Vous avez peut-ĂȘtre remarquĂ© que tout cela pĂšse beaucoup (je voudrais 20 Mo maximum, voire moins), alors qu'aujourd'hui ils utilisent des appareils mobiles partout et que l'
IoT gagne en popularité, ce qui signifie que vous souhaitez également utiliser des grilles là -bas.
Relation entre le poids et la vitesse du modĂšleĂtant donnĂ© que les rĂ©seaux de neurones en eux-mĂȘmes ne multiplient que les tenseurs, le nombre d'opĂ©rations de multiplication (lire: le nombre de poids) affecte directement la vitesse de travail (si le post-traitement ou le prĂ©traitement Ă forte intensitĂ© de main-d'Ćuvre n'est pas utilisĂ©). La vitesse du rĂ©seau lui-mĂȘme dĂ©pend de l'implĂ©mentation (framework), du matĂ©riel sur lequel il s'exĂ©cute et de la taille de l'image d'entrĂ©e.
Les auteurs de nombreux articles ont pris le chemin d'inventer des architectures rapides, j'ai rassemblé leurs méthodes sous le spoiler ci-dessous:
Architecture légÚre de CNN Les nombres dans toutes les tables
sont tirés du plafond des référentiels, de
la table Keras Applications et de
cet article .
Vous demandez: «Pourquoi avez-vous écrit sur tout ce« zoo »de modÚles? Et pourquoi est la tùche de la classification? Mais nous voulons apprendre aux machines à voir, et la classification n'est qu'une sorte de tùche étroite. ». Le fait est que les réseaux de neurones pour détecter les objets, évaluer les postures / points, ré-identifier et rechercher dans une image utilisent exactement les modÚles pour la classification en tant que
colonne vertébrale , et 80% du succÚs en dépend.
Mais je veux en quelque sorte faire davantage confiance à CNN, ou ils ont imaginé des boßtes noires, mais ce qui est "à l'intérieur" n'est pas évident. Pour mieux comprendre le mécanisme de fonctionnement des réseaux convolutifs, les chercheurs ont imaginé l'utilisation de la visualisation.
Visualisation des réseaux de neurones convolutionnels: montrez-moi la passion
Une étape importante vers la compréhension de ce qui se passe à l'intérieur des réseaux convolutionnels est l'article
«Visualiser et comprendre les réseaux convolutionnels» . Dans ce document, les auteurs ont proposé plusieurs façons de visualiser exactement à quoi (sur quelles parties de l'image) les neurones dans différentes couches CNN répondent (je recommande également de regarder
une conférence de Stanford sur ce sujet ). Les résultats étaient trÚs impressionnants: les auteurs ont montré que les premiÚres couches du réseau convolutionnel répondent à certaines «choses de bas niveau» par le type de bords / angles / lignes, et les derniÚres couches répondent déjà à des parties entiÚres des images (voir l'image ci-dessous), c'est-à -dire qu'elles portent déjà en soi une sémantique.
De plus, le
projet de visualisation en profondeur de l'Université Cornell et de la société a avancé la visualisation encore plus loin, tandis que le
célÚbre DeepDream a appris à déformer dans un style intéressant et
addictif (ci-dessous, une image de
deepdreamgenerator.com ).
En 2017, un
trÚs bon article a été publié sur Distill , dans lequel ils ont effectué une analyse détaillée de ce que chaque couche «voit», et plus récemment (en mars 2019), Google a inventé
des atlas d'activation : des cartes uniques qui peuvent ĂȘtre construites pour chaque couche rĂ©seau, ce qui nous rapproche de la comprĂ©hension de l'image globale du travail de CNN.
Si vous voulez jouer avec la visualisation vous-mĂȘme, je recommanderais
Lucid et
TensorSpace .
D'accord, CNN semble ĂȘtre vrai dans une certaine mesure. Nous devons apprendre Ă l'utiliser dans d'autres tĂąches, et pas seulement dans la classification. Cela nous aidera Ă extraire les images Embedding'ov et Ă transfĂ©rer l'apprentissage.
Je suis moi-mĂȘme une sorte de chirurgien: on extrait les traits des rĂ©seaux de neurones
Imaginez qu'il y ait une image, et nous voulons trouver celles qui lui ressemblent visuellement (c'est, par exemple, la recherche dans une image dans Yandex.Pictures). Auparavant (avant les réseaux de neurones), les ingénieurs extrayaient manuellement des fonctionnalités pour cela, par exemple, inventant quelque chose qui décrit bien l'image et permet de la comparer avec d'autres. Fondamentalement, ces méthodes (
HOG ,
SIFT ) fonctionnent avec
des dĂ©gradĂ©s d'image , gĂ©nĂ©ralement ces choses sont appelĂ©es descripteurs d'image «classiques». D'un intĂ©rĂȘt particulier, je me rĂ©fĂšre Ă l'
article et au
cours d'Anton Konushin (ce n'est pas de la publicité, juste un bon cours :)
En utilisant des rĂ©seaux de neurones, nous ne pouvons pas inventer nous-mĂȘmes ces caractĂ©ristiques et ces heuristiques, mais former correctement le modĂšle, puis
prendre la sortie d'une ou plusieurs couches du réseau comme signes de l'image .
Un examen plus approfondi de toutes les architectures montre clairement qu'il y a deux étapes de classification dans CNN:
1). Couches d'extraction de fonctionnalités pour extraire des fonctionnalités informatives à partir d'images à l'aide de couches convolutionnelles
2). Apprendre en plus de ces fonctionnalités Couches de classificateur
entiĂšrement connectĂ©es (FC)L'incorporation d'images (fonctionnalitĂ©s) est Ă peu prĂšs le fait que vous pouvez prendre leurs signes aprĂšs l'extracteur de fonctionnalitĂ©s d'un rĂ©seau de neurones convolutionnels (bien qu'elles puissent ĂȘtre agrĂ©gĂ©es de diffĂ©rentes maniĂšres) comme description informative des images. Autrement dit, nous avons formĂ© le rĂ©seau pour la classification, puis prenons simplement la sortie devant les couches de classification. Ces signes sont appelĂ©s
caractéristiques ,
descripteurs de réseau de neurones ou
imbrications d' images (bien que les incorporations soient généralement acceptées dans la PNL, car il s'agit de vision, je parlerai souvent de
fonctionnalités ). Il s'agit généralement d'une sorte de vecteur numérique, par exemple, 128 nombres, avec lequel vous pouvez déjà travailler.
Mais qu'en est-il des encodeurs automatiques?Oui, en fait, les fonctionnalitĂ©s peuvent ĂȘtre obtenues par des
auto-encodeurs . Dans ma pratique, ils l'ont fait de différentes maniÚres, mais, par exemple, dans des articles sur la ré-identification (qui seront discutés plus tard), plus souvent, ils prennent toujours des fonctionnalités aprÚs l'extracteur, plutÎt que de former l'auto-encodeur pour cela. Il me semble qu'il vaut la peine de mener des expériences dans les deux sens, si la question est de savoir ce qui fonctionne le mieux.
Ainsi, le pipeline pour résoudre le
problĂšme de la recherche par image peut ĂȘtre organisĂ© simplement: nous exĂ©cutons les images via CNN, prenons les signes des couches souhaitĂ©es et comparons ces caractĂ©ristiques les unes avec les autres Ă partir d'images diffĂ©rentes. Par exemple, nous considĂ©rons simplement la distance euclidienne de ces vecteurs.
Le transfert d'apprentissage est une technique bien connue pour la formation efficace de réseaux de neurones qui sont déjà formés sur un ensemble de données spécifique pour leur tùche. Souvent, ils disent également que le réglage fin au lieu de l'apprentissage par transfert, dans les
notes de cours de Stanford cs231n, ces concepts sont partagés, disent-ils, l'apprentissage par transfert est une idée générale et le réglage fin est l'une des implémentations de la technique. Ce n'est pas si important pour nous à l'avenir, l'essentiel est de comprendre que nous pouvons simplement former le réseau à bien prédire sur le nouvel ensemble de données, à partir non pas de poids aléatoires, mais de ceux formés sur un grand type ImageNet. Cela est particuliÚrement vrai lorsqu'il y a peu de données et que vous souhaitez résoudre le problÚme de maniÚre qualitative.
En savoir plus sur le transfert d'apprentissage Cependant, le simple fait de prendre les fonctionnalitĂ©s nĂ©cessaires et de faire une formation supplĂ©mentaire de l'ensemble de donnĂ©es Ă l'ensemble de donnĂ©es peut ne pas ĂȘtre suffisant, par exemple, pour des tĂąches de recherche de personnes / personnes / quelque chose de spĂ©cifique similaires. Les photos d'une mĂȘme personne visuellement peuvent parfois ĂȘtre encore plus diffĂ©rentes que les photographies de personnes diffĂ©rentes. Il est nĂ©cessaire de faire en sorte que le rĂ©seau souligne exactement les signes inhĂ©rents Ă une personne / un objet, mĂȘme s'il nous est difficile de le faire avec nos yeux. Bienvenue dans le monde de l'
apprentissage de la
représentation .
Restez proches: l'apprentissage de la représentation pour les personnes et les individus
Note terminologiqueSi vous lisez des articles scientifiques, il semble parfois que certains auteurs comprennent diffĂ©remment l'expression apprentissage mĂ©trique , et il n'y a pas de consensus sur les mĂ©thodes Ă appeler apprentissage mĂ©trique et celles qui ne le sont pas. C'est pourquoi dans cet article, j'ai dĂ©cidĂ© d'Ă©viter cette phrase particuliĂšre et j'ai utilisĂ© un apprentissage de la reprĂ©sentation plus logique, certains lecteurs peuvent ne pas ĂȘtre d'accord avec cela - je serai heureux de discuter dans les commentaires.
Nous définissons les tùches:
- TĂąche 1 : il y a une galerie (ensemble) de photographies de visages de personnes, nous voulons que le rĂ©seau puisse rĂ©pondre selon une nouvelle photo soit avec le nom d'une personne de la galerie (soi-disant c'est ça), soit dit qu'il n'y a pas une telle personne dans la galerie (et, peut-ĂȘtre, nous y ajoutons nouvelle personne)
- TĂąche 2 : la mĂȘme chose, mais nous ne travaillons pas avec des photographies de visages, mais avec un recadrage complet de personnes
La premiÚre tùche est généralement appelée
reconnaissance faciale , la seconde - la
ré-identification (en abrégé
Reid ). Je les ai combinés en un seul bloc, car leurs solutions utilisent aujourd'hui des idées similaires: afin d'apprendre des imbrications d'images efficaces qui peuvent faire face à des situations plutÎt difficiles, elles utilisent aujourd'hui différents types de pertes, comme, par exemple, la
perte de triplet , la
perte de quadruplet ,
perte de centre contrastif ,
perte de cosinus .
Il existe encore de merveilleux
rĂ©seaux siamois , mais honnĂȘtement, je ne les ai pas utilisĂ©s moi-mĂȘme. Soit dit en passant, non seulement la perte elle-mĂȘme «dĂ©cide», mais aussi comment Ă©chantillonner des paires de positifs et de nĂ©gatifs pour elle, soulignent les auteurs de l'article
L'échantillonnage compte dans l'apprentissage enraciné en profondeur .
L'essence de toutes ces pertes et réseaux siamois est simple - nous voulons que les images d'une classe (personne) dans l'espace latent des fonctionnalités (plongements) soient «proches», et de différentes classes (personnes) soient «éloignées». La proximité est généralement mesurée comme suit: des incorporations d'images à partir d'un réseau de neurones sont prises (par exemple, un vecteur de 128 nombres) et nous considérons la
distance euclidienne habituelle entre ces vecteurs ou
la proximité cosinus. Comment mesurer, il vaut mieux choisir sur votre ensemble de données / tùche.
Une représentation schématique d'un pipeline de résolution de problÚmes sur l'apprentissage de la représentation ressemble à ceci:
Mais pour ĂȘtre plus prĂ©cis, comme ça: (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!