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.
- ¿Cuál es la mejor manera de aprender el comercio algorítmico en Python y probar modelos?
- ¿Cómo resolvemos el problema B, 'Can of Worms', del Chicago Invitational Programming Contest 2013?
- Cómo imprimir un elemento emergente en la pila
- Sin el uso de un generador de números aleatorios, ¿cuál es el método más complicado que se te ocurre para generar una serie de números enteros?
- ¿Qué tipo de algoritmos de visión por computadora se utilizan en los robots industriales?
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 🙂