Maison  >  Article  >  développement back-end  >  Reconnaissance faciale en Python dans l'IA

Reconnaissance faciale en Python dans l'IA

伊谢尔伦
伊谢尔伦original
2017-04-29 09:41:212428parcourir

Avec les performances choquantes d'alphago l'année dernière, l'IA est redevenue la coqueluche des entreprises technologiques. L’IA implique de nombreux domaines, et la reconnaissance faciale dans la reconnaissance d’images est l’une des branches intéressantes. Le BFR de Baidu, la plate-forme ouverte Face++, Hanwang, iFlytek, etc. fournissent tous des API de reconnaissance faciale. Pour les codeurs expérimentés, vous pouvez écrire un petit morceau de code pour voir combien de personnes se trouvent sur une image. , juste pour le fun, et ne nécessite que 7 lignes de code.  

 import cv2
  face_patterns = cv2.CascadeClassifier('/usr/local/opt/opencv3/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml')
  sample_image = cv2.imread('/Users/abel/201612.jpg')
  faces = face_patterns.detectMultiScale(sample_image,scaleFactor=1.1,minNeighbors=5,minSize=(100, 100))
  for (x, y, w, h) in faces:
  cv2.rectangle(sample_image, (x, y), (x+w, y+h), (0, 255, 0), 2)
  cv2.imwrite('/Users/abel/201612_detected.png', sample_image);

  Ligne 1 Présentation d'OpenCV

L'open source c'est génial, il nous permet d'élargir nos horizons et n'a pas besoin de réinventer la roue. Au lieu d'utiliser PIL et de le combiner avec un algorithme spécifique, OpenCV (http://opencv.org) est utilisé directement. OpenCV est une bibliothèque de vision par ordinateur multiplateforme basée sur la licence BSD. Elle peut fonctionner sur les systèmes d'exploitation Linux, Windows et Mac OS. Elle est écrite en C/C++. MATLAB et autres interfaces pour implémenter de nombreux algorithmes généraux en traitement d'image et vision par ordinateur.

La ligne 2 charge le classificateur cv2.CascadeClassifier

CascadeClassifier est un classificateur en cascade utilisé pour la détection de visage dans Opencv. Cette classe encapsule le mécanisme de détection de cible, c'est-à-dire le mécanisme de fenêtre coulissante + les classificateurs en cascade. . La structure des données comprend deux parties principales : Data et FeatureEvaluator. Data stocke les données du classificateur chargées à partir du fichier XML obtenu lors de la formation, tandis que FeatureEvaluator concerne le chargement, le stockage et le calcul des fonctionnalités. Le fichier de formation utilisé ici est haarcascade frontalface default.xml fourni par défaut dans OpenCV. Quant aux principes spécifiques de Haar et LBP, vous pouvez vous référer aux documents pertinents d'opencv. Simplement, cela peut être compris comme les données caractéristiques du visage.

Ligne 3 Charger l'image cible imlue

Les systèmes de reconnaissance faciale sont généralement divisés en : collecte d'images de visage, prétraitement d'images de visage, extraction de caractéristiques d'images de visage, et correspondance et reconnaissance. Pour plus de simplicité, lisez dans l'image,

Ligne 4 Détection multi-échelles detectorMultiScale

Appelez la fonction detectMultiScale dans CascadeClassifier pour la détection multi-échelles, la méthode à échelle unique. sera appelé. detectSingleScale. Description du paramètre :

scaleFactor est le facteur d'échelle de l'image

minNeighbours est le nombre de voisins qui doivent être conservés pour chaque rectangle en cascade, ce qui peut être compris comme le nombre de visages autour d'une personne

MinSize est la taille de la fenêtre de détection

Ces paramètres peuvent être ajustés pour l'image, et le résultat du traitement renvoie une liste d'objets rectangulaires de visages.

Les lignes 5 et 6 dessinent un cadre pour chaque visage

Parcourez la liste d'objets rectangulaires du visage, obtenez les coordonnées, la largeur et la hauteur du rectangle du visage, puis dessinez-le dans l'image originale Pour quitter le cadre rectangulaire, la méthode rectangle d'OpenCV est appelée, dans laquelle la couleur du cadre rectangulaire est réglable.

Ligne 7 Enregistrez les résultats du test

Le mystère ne réside pas dans ces 7 lignes de code, mais dans l'implémentation associée dans OpenCV. Le site Web chinois d'OpenCV est également un bon endroit pour apprendre et expérimenter.

Par conséquent, les 7 lignes de code ne sont qu'un gadget, le véritable noyau est OpenCV. Ensuite, il existe quelques écueils lors de l’installation de l’environnement OpenCV, alors notez-les particulièrement.

Environnement OpenCV basé sur Mac

Il est recommandé d'utiliser Brew pour l'installation Si Brew n'est pas installé, exécutez d'abord la commande suivante :

 $/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

Ensuite, spécifiez Target Warehouse $brew tap homebrew/science

Installer OpenCV3 $brew install opencv3

La vitesse d'installation dépend du réseau. Après l'installation, vous devez lier le développement Python. environnement. Il existe de nombreuses méthodes :

 1) Ajoutez des variables d'environnement et ajoutez les packages de site d'opencv au PYTHONPATH

 2) Utilisez ln soft connection pour lier cv2.so au site-. packages de l'environnement python

 3) Directement cp cv2.so dans le répertoire site-packages de l'environnement python

Plus simplement, exécutez la commande suivante :

 echo /usr/local/opt/opencv3/lib/python2.7/site-packages >> /usr/local/lib/python2.7/site-packages/opencv3.pth
  mkdir -p /Users/hecom/.local/lib/python2.7/site-packages
  echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/hecom/.local/lib/python2.7/site-packages/homebrew.pth

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn