Cacerola / inclinación de la cara de seguimiento con la frambuesa pi (6 / 6 paso)

Paso 6: Reflexionar y aprender

Mira aunque el código fuente, es bien comentado explicar cómo todo funciona, pero básicamente busca un frontal cara, luego una cara de perfil derecho, luego una cara de perfil izquierdo. Bucle hasta que encuentra uno. Si encuentra, por ejemplo, una cara de perfil izquierdo, deja de buscar para la derecha y frente y mantiene el bucle y la búsqueda de la izquierda (acelerar la detección). Si alguna vez no encuentra esa cara izquierda, vuelve a buscar otra vez los tres. Cuando encuentra una cara, se obtiene las coordenadas del centro de ese rostro y usa esa información para decidir qué camino / si para mover los servos y cómo ahora mover ellos--y rapidez para moverlos:

Sí, a qué velocidad, crea dos subprocesos uno para cada servo, cuando es mover un servo, una velocidad es siempre. El subproceso e incrementa la posición del servo en uno con cada paso, hasta que alcance la posición deseada. Qué tan rápido coloca se basa en el parámetro de velocidad proporcionado. Esto le permite mover los servos a distintas velocidades, a pesar de la velocidad del motor no es ajustable. Originalmente esta implementado con hilos, pero python demostraron para tener muy mal manejo de hilos en altas cargas de CPU.

Al igual que prácticamente cualquier aplicación de reconocimiento facial de código abierto, estamos utilizando cascada de haar-clasificador de OpenCV para buscar patrones de los que se encuentran en la FrontalFace.xml incluido coincidencia a. Pero allí parece que hay algunos mal entendían y documentan aspectos de los parámetros de la función cvHaarDetectObjects que tienen un gran impacto en el rendimiento del programa.

El primer parámetro es, por supuesto, la imagen. Se pasa a la función de la imagen que desea buscar para las caras, parece haber cierta confusión en este paso - gente parece pensar que primero convirtiendo la imagen en escala de grises, el proceso será más rápido. Un simple benchmark mostrará que esto no es cierto - de hecho hará el proceso más lento porque se realiza un paso adicional. La gente también parece pensar que primero escala a la imagen hará las cosas más rápido, esto tiene sentido intuitivo, porque ahora hay una imagen más pequeños que buscan una cara dentro, pero esto es no es el método más eficiente, que me lleva al siguiente parámetro,

ScaleFactor--los habitantes de foro parecen dar sugerencias sobre lo que esto debe ser establecido en sin dar mucha explicación sobre lo que es. Para entender completamente, necesita saber cómo OpenCV detecta caras:

Detección de la cara de OpenCV: visualizado de Adam Harvey on Vimeo.

Ver ese video y una atención especial hacia el final. Tenga en cuenta que una plaza se mueve desde la parte superior izquierda a inferior derecha. Cada vez que se mueve, se ve un patrón dentro de ella--en este caso una cara, pero con OpenCV ese patrón puede ser cualquier cosa. ¿Ver cómo se hace un paso y se hace más grande, luego vuelve en él? La cantidad que aumenta de tamaño con cada pasada es el scalefactor. Si se establece será de 1.1 get 1.1 veces mayor (10%) con cada paso 1.3 sería conseguir 1.3 veces más grande con cada paso - 30%. Obviamente el más rápido está creciendo en tamaño, más rápido será completa, pero a expensas de posiblemente falta una cara que estaba allí.

El siguiente parámetro no tiene impacto sobre el rendimiento lo puedo decir. MinNeighbors indica al programa cómo exigente por lo que considera a un partido. La función está en busca de patrones y comprueba si los patrones coinciden con su base de datos patrón - un archivo xml. Creo que el valor predeterminado es 3--que significa que si hay 3 patrones dentro de cuadrados donde se busca, que coinciden con los patrones encontrados en el archivo xml, entonces considéralo un partido. Mina me la puse a 4. Cuanto más alto se establece, más seguro que usted puede ser cuando se dice que encontró un fósforo es correcto. Sin embargo, ajustado demasiado bajo y se cree todo lo que ve es una cara. Está muy alto y tendrá problemas de captura de caras reales.

El siguiente parámetro banderas; Estos son valores booleanos que permiten modificar las cosas:
uno es CV_HAAR_DO_CANNY_PRUNING. Esta bandera fue diseñada sólo para caras; cuenta la función para saltar búsqueda en áreas con bordes afilados... porque caras no suelen tener los bordes afilados. (Ver imagen adjunta, a veces puede...) Esto acelera las cosas según el contexto.
otro es HAAR_FIND_BIGGEST_OBJECT esto indica la función de retorno solamente el objeto más grande que encontró.
otro es CV_HAAR_DO_ROUGH_SEARCH que indica la función de dejar de mirar una vez que encuentra algo, se ha destinado a ser utilizado con HAAR_FIND_BIGGEST_OBJECT y mejora grandemente el rendimiento cuando usted sólo está tratando de encontrar una cara.

Los dos últimos parámetros son importantes, o al menos uno de ellos es - son MinSize y MaxSize. Un método común para acelerar la búsqueda parece ser para achicar imágenes, si desea duplicar la velocidad de la detección de una cara en una imagen de 800 x 600, la escala a 400 x 300. El problema con esa lógica es que se reducen posibles caras y haar confiablemente no encuentra caras menor de 20 x 20 píxeles. No sólo eso, ahora están utilizando recursos informáticos para reducir esa imagen. Puede obtener el mismo impulso de velocidad especificando un MinSize para la cara. 20 x 20 es el valor predeterminado, pero 40 x 40 se alocarán rápida en comparación. Cuanto más alto vayas, más rápido será la búsqueda, pero usted puede comenzar a faltar caras más pequeñas.

Sólo quería aclarar...

Espero que esto ayuda, y espero que todo el mundo disfruta trabajando con la frambuesa Pi y OpenCV tanto como lo hice.
Este es mi primer instructable. Me encantaría ver tus comentarios.
Gracias,
Chris

Artículos Relacionados

Frente a la detección y seguimiento con Arduino y OpenCV

Frente a la detección y seguimiento con Arduino y OpenCV

versiones20 de febrero de 2013: En respuesta a una pregunta de estudiante Hala Abuhasna si desea utilizar la clase Serial. net, utilice la Convención de nomenclatura "\\\.\\COMn" y reemplazar n por un número > 9 para definir el puerto com par
Seguimiento con el proceso y OpenCV se enfrentan

Seguimiento con el proceso y OpenCV se enfrentan

visión por computador es increíble. Procesos computacionales permite la oportunidad de ver el mundo que les rodea. Es necesario para un montón de aplicaciones robóticas, el aprender de máquina o proyectos interactivos. OpenCV es una biblioteca de vis
Manipit - movimiento de la mano de IRONMAN JARVIS-como seguimiento con guantes pintados

Manipit - movimiento de la mano de IRONMAN JARVIS-como seguimiento con guantes pintados

Note(May, 12, 2015) ***Si no puede ver el vídeo desde el archivo incrustado, puede verlo aquí!!********************************¿Visto la película, "Iron Man"?En la película, Tony manipula objetos virtuales por sus movimientos de mano.¡ Es genial
Coche control remota monitoreo y seguimiento con Edison de Intel

Coche control remota monitoreo y seguimiento con Edison de Intel

Soy generalmente verbal, pero para esta parte voy a intentar ser breve. Este proyecto es:Un Edison de Intel, un receptor GPS, un lector Bluetooth OBD II + (sensores de coche del mercado de accesorios opcionales) + un coche.Añadir en algunos software
Jefe de seguimiento con una webcam

Jefe de seguimiento con una webcam

esto es como el director de seguimiento con el wiimote pero todo lo que se necesita es un pc y una webcam, incluso mis trabajos de muy baja calidad webcam!Paso 1: Conecte una webcam... Conectar tu webcam. el software requiere que esté conectado la we
Arce glaseado dulce patata y azúcar morena Cupcakes con tocino (o no)

Arce glaseado dulce patata y azúcar morena Cupcakes con tocino (o no)

con o sin tocino estos cupcakes están seguros de ser uno de tus favoritos de otoño. Para ser honesto no me gusta incluso potaoes dulce, pero me encanta estas magdalenas. Es mi segundo favorito. Lo sé, lo sé... segundo??? Mi favorito de momento todo e
Línea autónoma DIY seguimiento con obstáculos evitando Robot (Rover)

Línea autónoma DIY seguimiento con obstáculos evitando Robot (Rover)

ADVERTENCIA: HACER SU COMPUTADORA BRILLO BAJO, PORQUE ESTE PROYECTO EMITE UN ALTO NIVEL DE GENIALIDAD QUE PUEDE DAÑAR TUS OJOS :D 3:)Este proyecto participó en RoboCup 2015 Egipto Local concurso y el premio "mejor diseño" con mi equipo Abdelrahm
Seguimiento Pi bola frambuesa

Seguimiento Pi bola frambuesa

(Nota: este es un tutorial avanzado, no está pensado para un principiante de linux.)En este tutorial demuestro cómo realizar el seguimiento de pelotas de tenis de mesa usando OpenCV en Raspberry Pi. Puede ser utilizado para rastrear cualquier objeto
Cómo hacer una cara de reloj con el relojero

Cómo hacer una cara de reloj con el relojero

Este que te mostrará lo básico de como crear una cara de reloj usando esta aplicación.Requisitos previosConocimientos básicos de codificaciónConocimientos básicos de colocaciónConocimientos básicos de Photoshop (principalmente cómo capas trabajan) te
'Dulces mejillas' - bebé cara mini cupcakes con Fondant de malvavisco.

'Dulces mejillas' - bebé cara mini cupcakes con Fondant de malvavisco.

Hace poco estaba inspirado en el concurso de decoración de pasteles de este año y decidió investigar el arte de decorar utilizando Fondant y pastillaje. Si hay algo que te inspire, por favor ser alentado por el hecho de que nunca he hecho antes y est
Color de seguimiento con la CMUcam y MATLAB

Color de seguimiento con la CMUcam y MATLAB

Descripción de cómo usar mi código MATLAB para obtener MATLAB para hablar con una CMUcam para hacer seguimiento de color sencillo.Paso 1: Cómo utilizar el código conectar la CMUcam al ordenador vía cable serial como se menciona en la documentación (e
Cómo Make Your Own Car Stereo-UPDATED con un VIDEO

Cómo Make Your Own Car Stereo-UPDATED con un VIDEO

soy propietario de un coche "viajero especial" como lo llamo. Es un 1989 Toyota Corolla, y pagó nada por él. Tuve una autorradio que he recibido gratuitamente de un concesionario que he trabajado en. Fue un tirón impresionante tipo de reproducto
Pastel de mantequilla de almendras libre de gluten libre de azúcar plátano con trocitos de chocolate negro

Pastel de mantequilla de almendras libre de gluten libre de azúcar plátano con trocitos de chocolate negro

Receta: para torta de 1 florIngredientes:2 grandes y maduros bananas, peladas y completamente machacado con un tenedor2 orgánica huevos, golpeadas sueltos1/2 taza de azúcar flor del cocoalmendra entera sal 1 taza de mantequilla, los aceites bien mezc
DIY: Cómo hacer tapetes de azúcar orgánico con limón

DIY: Cómo hacer tapetes de azúcar orgánico con limón

Magnífico para el día de San Valentín, una fiesta de té o simplemente para algo un poco especial. Mover cubitos de azúcar a un lado! Estos lindos tapetes de azúcar poco son divertidos de hacer y se endulzar su té con azúcar de caña crudo orgánico y u