Reconeixement facial mitjançant Python i OpenCV

Bloc

Reconeixement facial mitjançant Python i OpenCV

Abans de fer preguntes a la secció de comentaris:

  1. No us ometeu l'article i només intenteu executar el codi. Heu d’entendre què fa el codi, no només per executar-lo correctament, sinó també per solucionar-lo.
  2. Assegureu-vos d’utilitzar OpenCV v2.
  3. Teniu una càmera web que funcioni perquè aquest script funcioni correctament.
  4. Reviseu els altres comentaris i preguntes, ja que probablement les vostres preguntes ja s’han resolt.

Gràcies.

Taula de continguts

capital de mercat de monedes de corretja

OpenCV

OpenCV és la biblioteca més popular per a visió per ordinador . Originalment escrit en C / C ++ , ara proporciona enllaços per a Python .

OpenCV usos algoritmes d’aprenentatge automàtic per buscar cares dins d’una imatge. Com que les cares són tan complicades, no hi ha cap prova senzilla que us indiqui si ha trobat una cara o no. En canvi, hi ha milers de patrons i funcions petites que s’han de fer coincidir. Els algoritmes divideixen la tasca d’identificar la cara en milers de tasques més petites i de mida mossegada, cadascuna de les quals és fàcil de resoldre. Aquestes tasques també s’anomenen classificadors .

Per a alguna cosa com una cara, és possible que tingueu 6.000 classificadors o més, que han de coincidir tots perquè es detecti una cara (dins dels límits d'error, és clar). Però aquí rau el problema: per detecció de cares , l'algoritme comença a la part superior esquerra d'una imatge i es mou cap avall a través de petits blocs de dades, mirant cada bloc i preguntant constantment, és això una cara? ... És una cara? ... És una cara? Com que hi ha 6.000 o més proves per bloc, és possible que tingueu milions de càlculs per fer, cosa que farà que l'ordinador s'aturi.

Per evitar-ho, OpenCV usos cascades . Què és una cascada? La millor resposta es pot trobar a diccionari : una cascada o una sèrie de cascades.

Com una sèrie de cascades, el OpenCV cascada trenca el problema de detectar cares en múltiples etapes. Per a cada bloc, fa una prova molt dura i ràpida. Si això passa, fa una prova una mica més detallada, etc. L'algorisme pot tenir de 30 a 50 d'aquestes etapes o cascades, i només detectarà una cara si passen totes les etapes.

L’avantatge és que la majoria de la imatge obtindrà un resultat negatiu durant les primeres etapes, cosa que significa que l’algoritme no perdrà el temps provant les 6.000 funcions que conté. En lloc de trigar hores, la detecció de cares ara es pot fer en temps real.

Cascades a la pràctica

Tot i que la teoria pot semblar complicada, a la pràctica és bastant fàcil. Les cascades en si són només un munt de fitxers XML que contenen OpenCV dades utilitzades per detectar objectes. Inicialitzeu el codi amb la cascada que vulgueu i, a continuació, us farà la feina.

Com que la detecció de cares és un cas tan comú, OpenCV ve amb una sèrie de cascades integrades per detectar des de cares fins a ulls, passant per mans i cames. Fins i tot hi ha cascades de coses no humanes. Per exemple, si teniu una botiga de plàtans i voleu fer un seguiment de la gent que roba plàtans, aquest noi n'ha construït un!

Instal·lació d’OpenCV

Primer, heu de trobar el fitxer de configuració correcte el vostre sistema operatiu .

stream nba free reddit

Vaig trobar que la part més difícil de la tasca era instal·lar OpenCV. Si teniu errors inexplicables estranys, podria ser degut a xocs de biblioteques, diferències de 32/64 bits, etc. Em va semblar més fàcil utilitzar una màquina virtual Linux i instal·lar OpenCV des de zero.

Un cop hàgiu completat la instal·lació, podeu provar si funciona o no activant una sessió de Python i escrivint:

>>> import cv2 >>>

Si no teniu cap error, podeu passar a la part següent.

Comprensió del codi

Desglossem el codi real, que podeu baixar des de repo . Agafa el face_detect.py guió, el abba.png '> detectMultiScale funció és una funció general que detecta objectes. Com que ho estem trucant a la cascada de la cara, és el que detecta.

canvi de contrasenya de correu electrònic de Verizon
  • La primera opció és la imatge en escala de grisos.

  • El segon és el scaleFactor. Com que algunes cares poden estar més a prop de la càmera, semblen més grans que les cares de la part posterior. El factor d’escala ho compensa.

  • L’algorisme de detecció utilitza una finestra mòbil per detectar objectes. minNeighbors defineix quants objectes es detecten a prop de l’actual abans que declari la cara trobada. minSize, mentrestant, dóna la mida de cada finestra.

  • Nota: Vaig prendre valors d’ús habitual per a aquests camps. A la vida real, experimentareu amb diferents valors per a la mida de la finestra, el factor d’escala, etc. fins que en trobeu un que us funcioni millor.

    La funció retorna una llista de rectangles en què creu que ha trobat una cara. A continuació, farem un recorregut per allà on creu que ha trobat alguna cosa.

    print 'Found {0} faces!'.format(len(faces)) # Draw a rectangle around the faces for (x, y, w, h) in faces: cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)

    Aquesta funció retorna 4 valors: el x i y ubicació del rectangle i l’amplada i l’alçada del rectangle (w, h).

    lloc web oficial de flux ràpid

    Utilitzem aquests valors per dibuixar un rectangle amb el | | + _ | integrat funció.

    rectangle()

    Al final, mostrem la imatge i esperem que l’usuari premi una tecla.

    Comprovació dels resultats

    Anem a provar contra la foto ABBA:

    cv2.imshow('Faces found', image) cv2.waitKey(0)  a 1.2 es va desfer de la cara equivocada.

    Exemple 2 de detecció de cares de Python: fix

    Què va passar?

    Bé, la primera foto es va fer força de prop amb una càmera d’alta qualitat. El segon sembla haver estat pres de lluny i possiblement amb un telèfon mòbil. És per això que el $ python face_detect.py abba.png'> Python face detection example 1: Abba

    That worked. How about another photo:

    Python face detection example 2: wrong

    That … is not a face. Let’s try again. I changed the parameters and found that setting the scaleFactor s’havia de modificar. Com he dit, haureu d’establir l’algoritme cas per cas per evitar falsos positius.

    Tingueu en compte que, atès que es basa en l’aprenentatge automàtic, els resultats mai no seran exactes al 100%. Obtindreu prou bons resultats en la majoria dels casos, però de vegades l'algorisme identificarà objectes incorrectes com a cares.

    Es pot trobar el codi final aquí .

    Gràcies!

    per què aprendre script java

    #python #opencv # machine-learning #image # data-science

    realpython.com

    Reconeixement facial mitjançant Python i OpenCV

    En aquest article, veurem una manera sorprenentment senzilla d’iniciar el reconeixement facial mitjançant Python i la biblioteca de codi obert OpenCV