¿Qué algoritmo de extracción de características es adecuado para el reconocimiento facial basado en video?

Actualmente, los métodos de aprendizaje profundo están tomando la iniciativa, pero también necesitan recursos informáticos. Los estoy excluyendo y quiero centrarme en soluciones de bajo poder de cómputo. En primer lugar, debe considerar tres pasos.

Detección de 1 cara: La detección de caras solía generar muchas falsas alarmas en el pasado, todo comenzó con características similares a HAAR y luego siguió con SIFT, SURF, etc. La revolución llegó primero con el método AAM (Modelo de apariencia activa). En la obtención de imágenes médicas, se investigaron órganos como el riñón, el hígado, etc. bajo AAM y luego evolucionaron para la detección de rostros también. Hoy en día, los métodos de entrenamiento de alto rendimiento dieron muy buenos resultados. Eche un vistazo a HOG (Histograma de gradientes orientados), de acuerdo con su conjunto de datos, puede alcanzar el 98% de las tasas de detección. La detección no solo debe proporcionar la región de la cara, sino también valores de estimación de pose. Sin una estimación de pose perderás precisión. Nuestros resultados en Raspberry PI son de alrededor de 800 ms para la detección de rostros múltiples con resultados de precisión total en 15-20 ms en mejores CPU o varios ms en una GPU.

Ahora, antes de comenzar la segunda parte, debemos centrarnos en la etapa previa de entrenamiento. Para el entrenamiento, tiene dos opciones frente a muchas alternativas 🙂 Puede tener muchas imágenes de entrenamiento que cubran todas las diferencias de pose o puede obtener la pose de la cara, usar una máscara similar a AAM, crear una máscara 3D y rotar la máscara y generar diferentes poses . Usamos el segundo y generamos un clasificador con más de 100 poses generadas sintéticamente. Para el entrenamiento, el clasificador HOG apesta debido a problemas de iluminación. LBP (patrones binarios locales) o sus derivados funcionan muy bien en estas situaciones. Tenemos nuestra propia derivada para esta parte.

Verificación de 2 caras: dado que tiene un buen clasificador entrenado, queda menos para el reconocimiento. Encuentre la cara, aplique su algoritmo similar a LBP y envíelo al clasificador. La verificación de Voila funciona perfecta. Tuvimos más del 95% de precisión de verificación para la verificación en varios milisegundos. Entonces, ahora puede hacer la pregunta como “¿Es esta cara Kerem”? Hasta este punto, llevó 4 años de I + D con cientos de trucos de ingeniería. Gastamos millones de dólares con fondos de I + D de Turquía y la UE. Se realizaron pruebas en más de un millón de conjuntos de datos y comenzamos a vender localmente. El próximo año vendremos con SDK globales después de las validaciones locales que están funcionando muy bien.

Reconocimiento de 3 caras: tiene muchos datos entrenados en la mano. Ahora necesita una respuesta para “¿Quién es este tipo?” Ahora necesita una estrategia de indexación. La peor estrategia aquí es comparar la cara dentro de cada clasificador entrenado y ordenar los resultados. Es horrible. De lo que necesita algoritmos de agrupamiento. Ahora trabajamos en el reconocimiento de caras basado en componentes para indexar las caras. De esta manera, desde un millón de caras entrenadas puedes llegar a varios cientos fácilmente. Y el resto se maneja mediante una búsqueda secuencial. El algoritmo de agrupación también le permite responder caras cubiertas, así como con precisión de amante.

Al final, las imágenes fijas y las basadas en video solo difieren en el tiempo real, como los comportamientos. Para mí es una pasión, no me importa cómo se usa, sino cómo lo habilitamos 🙂

More Interesting

Dados dos archivos de registro, cada uno con mil millones de nombres de usuario, ¿cómo podemos encontrar todos los nombres de usuario presentes en ambos archivos de registro de manera eficiente?

¿Qué estructuras de datos y algoritmos básicos se deben aprender antes de comenzar la programación competitiva?

¿Cuáles son algunos ejemplos de software del mundo real de pilas, colas y deques?

¿Cómo explicará el algoritmo del cuadrado medio en la estructura de datos hash?

¿Cuál es el algoritmo más complejo en CS?

¿Cuáles son los mejores enfoques para aprender programación dinámica? ¿Y de dónde se puede aprender esto? ¿Qué tan útil es esto en la programación competitiva?

¿Qué estoy haciendo mal al determinar el big-O de estas funciones Java?

¿Qué idioma es mejor para los algoritmos de búsqueda: Java o Python? ¿Por qué?

¿Debo postularme a trabajos de desarrollo web si puedo construir aplicaciones CRUD pero no asimilo la notación Big O y nunca he trabajado en un proyecto grupal?

Con fuerza bruta, ¿cómo sabemos si encontramos la llave?

¿Qué es el diseño paramétrico y cuáles son algunos ejemplos de él?

¿Cuáles son algunos algoritmos importantes que aún no están cubiertos en Mahout? ¿Qué algoritmos de ML le gustaría agregar a la caja de herramientas?

¿Cuáles son los errores en el libro Data Structures and Algorithms Made Easy by Narsimha Karumanchi?

¿Qué algoritmos de visión por computadora se utilizan en Protracer para el vuelo de una pelota de golf?

¿Cuál es el propósito de estudiar pequeñas mejoras (como usar dos hilos o evitar la basura) mientras puedo reducir la complejidad de los algoritmos?