Cómo construir un programa de detección de rostros en Java / Android

Hay muchos servicios en la nube y marcos nativos disponibles. OpenCV es la biblioteca bien conocida para Android. Puede usar OpenCV para construir su propio modelo de detección de rostros utilizando algoritmos conocidos diseñados para la clasificación de imágenes, pero openCV tiene algunas desventajas. 1. Necesita entrenarlo bien utilizando muchos datos de entrenamiento. 2. La precisión es menor y es lenta en dispositivos de memoria de gama baja. 3. Necesita algunas cosas manuales para hacer.

2. TensorFlow: es una plataforma informática de aprendizaje automático para computar y procesar modelos de aprendizaje automático. Requiere mucho trabajo manual y datos, pero la ejecución es más rápida en comparación con OpenCV. Puede usarlo para hacer cualquier modelo de aprendizaje automático que no sea la detección de rostros.

3. Servicios cognitivos de Microsoft: es una plataforma de inteligencia artificial en la nube y se está volviendo muy popular en estos días. Las principales API están disponibles para Python y C #, pero aún así puede implementarlo en cualquier idioma usando HTTP post y obtener métodos. No tiene ningún impacto en su procesador o memoria ya que el procesamiento toma en la nube de Microsoft Azure. La versión gratuita está limitada a alrededor de 3000–4000 llamadas Api por mes. La precisión también es buena.

Face ++: es la nueva plataforma de procesamiento de imágenes AI desarrollada por grupos de Alibaba. Créame, he usado esto en mi proyecto, es realmente rápido y mejor en precisión en comparación con otras plataformas. Funciona de manera similar a los servicios cognitivos de EM pero con poco esfuerzo manual. Así que te sugiero que pruebes esto.

Hay muchas herramientas disponibles para el procesamiento de imágenes y si no tiene ningún conocimiento del procesamiento de imágenes, le sugiero que elija OpenCV . Es el más fácil de aprender entre todos los proyectos de código abierto disponibles en Internet.

Si solo desea comparar caras, puede optar por openCV + Python (aplicación de escritorio). Con esto, puede completar su proyecto dentro de 50–60 líneas de código.

Por lo tanto, el primer problema sería asegurarse de que ambas imágenes tengan las caras y que también tengan el mismo tamaño y exactamente en el mismo ángulo. Puede usar algunas de las herramientas de código abierto como opencv para obtener este tipo de resultados y luego aplicar algunas herramientas de mejora de imagen. Luego, puede comparar fácilmente las imágenes con las herramientas que pueden calcular la distancia entre las dos imágenes. Coloque algunos valores de umbral para la distancia, que si la distancia entre dos imágenes es mayor que ese valor de umbral, entonces dos caras son diferentes o de lo contrario son de la misma persona.

More Interesting

¿Por qué es tan difícil hacer la arquitectura desde el principio?

¿En qué industrias podemos usar el software del centro de llamadas?

Antes de trabajar con un proveedor para el desarrollo de software, ¿cuáles son las preguntas importantes que deben hacerse antes de asociarse?

Si una persona quisiera pasar del campo de la ingeniería civil al campo del software. ¿Cuál será la mejor opción y puede sobrevivir en ese campo?

¿Por qué debería preocuparme por los patrones de diseño si estoy versado en clases de C ++ y uso código preescrito?

¿Qué es una arquitectura de microservicios y cuáles son sus buenos usos?

¿Cómo estimar el esfuerzo de desarrollo al proporcionar el documento de arquitectura de la solución?

¿Cuáles son los problemas organizativos que deben resolverse para cada nuevo proyecto de software?

¿Cuáles son los mejores marcos de backend y por qué?

¿Cuánto formalismo de planificación de proyectos necesita un equipo de desarrollo de cinco personas?

¿Cuáles podrían ser las mejores ideas de aplicaciones de software para los próximos 5 a 10 años?

¿Cuál es la mejor manera de encontrar bibliotecas de códigos de software?

¿Cuáles son los lenguajes de programación en el desarrollo de software que han quedado en desuso después del uso convencional?

¿Existe una relación entre el aprendizaje automático y la programación concurrente?

Como arquitecto tradicional, ¿tendría sentido para mí cambiarme a una compañía de software?