Reconocimiento Facial con Machine Learning en Android

Clase 18 de 31Curso de Desarrollo de Aplicaciones con Huawei

Resumen

¿Cómo crear un layout personalizado para reconocimiento facial en Android?

Personalizar el layout al agregar capacidades de reconocimiento facial no solo mejora la experiencia del usuario, sino que también incorpora avanzada tecnología de Machine Learning. Esta clase te guiará a través del proceso de creación de un cuadro alrededor del rostro detectado por la cámara frontal, optimizando el uso de píxeles y utilizando objetos de Machine Learning para reconocer las facciones.

¿Qué es y cómo se utiliza el paquete 'utils'?

El primer paso en la personalización del reconocimiento facial es configurar el paquete utils. Este paquete es esencial para convertir density pixels a píxeles reales en Android, dado que el objeto de la cámara trabaja con Canvas y solo entiende píxeles reales. Aquí está cómo lograrlo:

// Creación de la función para convertir density pixels a píxeles reales
object Utils {
    fun dpToPx(context: Context, value: Float): Float {
        return value * context.resources.displayMetrics.density + 0.5f
    }
}

¿Cómo crear la clase 'local face graphic'?

La clase LocalFaceGraphic ayudará a pintar un cuadrado sobre el rostro detectado por la cámara. Aquí se describe cómo configurar esta clase:

  1. Herencia y constructor: Hereda de BaseGraphic y recibe un GraphicOverlay como parámetro en el constructor.
  2. Variables esenciales:
    • facePaint: para definir el estilo y color del cuadro.
    • face: un campo de tipo volátil que almacena información del rostro.
    • context: para las operaciones relacionadas con los recursos de la aplicación.
  3. Métodos clave:
    • Inicialización del face paint: Define estilo y color del cuadro. Para este ejemplo, usamos un tono rojo de Huawei.
    • Funcionamiento del método draw: Si no hay rostro reconocido, simply return. De lo contrario, calcula las coordenadas para trazar el cuadro.
// Ejemplo de implementación de LocalFaceGraphic
class LocalFaceGraphic(overlay: GraphicOverlay, private val face: MLFace, private val context: Context) :
    BaseGraphic(overlay) {

    private val facePaint: Paint = Paint().apply {
        color = Color.parseColor("#EF484B") // Color rojo de Huawei
        style = Paint.Style.STROKE
        strokeWidth = Utils.dpToPx(context, 1f)
    }

    override fun draw(canvas: Canvas) {
        if (face == null) return

        val points = ... // Puntos faciales para trazar el rectángulo
        ...
        // Crear y agregar el rectángulo al canvas
        canvas.drawRect(rectangle, facePaint)
    }
}

¿Cómo se realiza el trazado del rectángulo?

Para pintar un rectángulo alrededor del rostro identificado, sigue estos pasos clave:

  • Detección de puntos faciales: Se obtienen los puntos clave del rostro como los ojos y las esquinas de la cara.
  • Cálculo de coordenadas: Para determinar los límites del rectángulo, se calcula el mínimo y máximo de las coordenadas verticales y horizontales.
  • Dibujo del rectángulo: Utiliza estas coordenadas para dibujar sobre el Canvas.

Esta es la esencia del Machine Learning aplicada al reconocimiento facial sencillo, permitiendo que el software actúe inteligentemente reconociendo y marcando rostros. Recuerda que la práctica es crucial; así que sigue experimentando y expandiendo tus habilidades. Tu próxima clase te guiará en el uso del cuadro de reconocimiento facial en el lente de cámara. ¡Sigue así y tu dominio de esta tecnología irá en aumento!