1

Est-ce que quelqu'un peut utiliser toutes les différentes techniques de détection de visage? Des techniques telles que les réseaux de neurones, les machines à vecteurs de support, les vecteurs propres, etc.AI Techniques de détection de visage

Quelles sont les autres fonctionnalités? Merci.

Répondre

4

La technique dont je vais parler est plus une approche orientée machine learning; à mon avis est assez fascinant, mais pas très récent: il a été décrit dans l'article "Robust Real-Time Face Detection" par Viola et Jones. J'ai utilisé l'implémentation OpenCV pour un projet universitaire.

Il est basé sur des caractéristiques de type haar, qui consiste en des ajouts et des soustractions d'intensités de pixels dans des régions rectangulaires de l'image. Cela peut être fait très rapidement en utilisant une procédure appelée image intégrale, pour laquelle des implémentations GPGPU existent également (parfois appelées "scan préfixe"). Après le calcul de l'image intégrale en temps linéaire, toute caractéristique de type haar peut être évaluée en temps constant. Une caractéristique est fondamentalement une fonction qui prend une sous-fenêtre 24x24 de l'image S et calcule une caractéristique de valeur (S); un triplet (fonction, seuil, polarité) est appelé un classificateur faible, parce que

polarité * fonction (S) polarité < * seuil

est vrai sur certaines images et fausses sur les autres; Un classifieur faible devrait effectuer un peu mieux que la supposition aléatoire (par exemple, il devrait avoir une précision d'au moins 51-52%).

La polarité est -1 ou +1.

L'espace des caractéristiques est grand (~ 160'000 caractéristiques), mais fini. Malgré le seuil pourrait en principe être un nombre, à partir de considérations simples sur l'ensemble de formation, il s'avère que s'il y a N exemples, seulement N + 1 seuil pour chaque polarité et pour chaque caractéristique doivent être examinés afin de trouver celui qui détient la meilleure précision. Le meilleur classificateur faible peut ainsi être trouvé en recherchant exhaustivement l'espace des triplets.

Fondamentalement, un classificateur fort peut être assemblé en choisissant de manière itérative le meilleur classificateur faible possible, en utilisant un algorithme appelé «survoltage adaptatif», ou AdaBoost; à chaque itération, les exemples qui ont été mal classés dans l'itération précédente sont pesés davantage. Le classifieur fort est caractérisé par son propre seuil global, calculé par AdaBoost.

Plusieurs classificateurs forts sont combinés en tant qu'étapes dans une cascade attentionnelle; l'idée derrière la cascade attentionnelle est que les sous-fenêtres 24x24 qui ne sont évidemment pas des visages sont jetées dans les premières étapes; un classificateur fort contient généralement seulement quelques classificateurs faibles (comme 30 ou 40), donc il est très rapide à calculer. Chaque étape devrait avoir un rappel très élevé, tandis que le taux de faux positifs n'est pas très important. s'il y a 10 étapes avec 0,99 rappel et 0,3 taux de faux positif, la cascade finale aura un rappel de 0,9 et un taux de faux positifs extrêmement faible. Pour cette raison, les classificateurs forts sont généralement réglés afin d'augmenter le rappel et le taux de faux positifs. L'optimisation consiste essentiellement à réduire le seuil global calculé par AdaBoost.

Une sous-fenêtre qui se rend jusqu'à la fin de la cascade est considérée comme une face.

Plusieurs sous-fenêtres dans l'image initiale, éventuellement se chevauchant, éventuellement après la mise à l'échelle de l'image, doivent être testées.

Au revoir, je l'espère, il était intéressant ;-)

Dario

-1

Si vous en avez besoin non seulement comme des choses théoriques mais que vous voulez vraiment faire la détection de visage, alors je vous recommande de trouver des solutions déjà implémentées.

Il existe de nombreuses bibliothèques testées pour différentes langues et elles sont largement utilisées à cette fin. Regardez ce fil SO pour plus d'informations: Face recognition library.

+0

Désolé, oui, il est purement théorique. – Harry

2

Une approche émergente mais plutôt efficace pour les problèmes de vision générale, y compris la détection de visage, est l'utilisation de Hierarchical Temporal Memory (HTM), un concept/technologie développé par Numenta.

Très Très vaguement parlant, il s'agit d'une approche de type réseau neuronal. Ce type de réseau a une forme d'arbre où le nombre de nœuds diminue de manière significative à chaque niveau. HTM modélise certaines propriétés structurelles et algorithmiques du néocortex. En départ [possible] avec le néocortex, l'algorithme de classification mis en œuvre au niveau de chaque nœud utilise un algorithme bayésien. Le modèle HTM est basé sur la théorie de la prédiction de la mémoire de la fonction cérébrale et repose fortement sur la nature temporelle des entrées; cela peut expliquer sa capacité à gérer les problèmes de vision, car ceux-ci sont généralement temporels (ou peuvent l'être) et nécessitent également une tolérance au bruit et au «flou». Alors que Numemta a produit des kits de vision et des applications de démonstration pendant un certain temps, Vitamin D a récemment produit - je pense - la première application commerciale de la technologie HTM au moins dans le domaine des applications de vision.

+0

Oooh, c'est la méthode développée dans le livre On Intelligence de Jeff Hawkins, n'est-ce pas? Merci, en quelque sorte totalement oublié à ce sujet, malgré la lecture du livre. Oops. – Harry

+0

@harry: oui en effet, HTMs ou plutôt les caractéristiques du cortex cérébral sur lequel HTM sont basés/inspiré, ont été décrits par Jeff Hawkins, dans son livre _On Intelligence_. – mjv

Questions connexes