La tarea de MediaPipe Hand Landmarker te permite detectar los puntos de referencia de las manos en una imagen. Puedes usar esta tarea para ubicar puntos clave de las manos y renderizar efectos visuales en ellas. Esta tarea opera en datos de imagen con un modelo de aprendizaje automático (AA) como datos estáticos o una transmisión continua, y genera puntos de referencia de la mano en coordenadas de imagen, puntos de referencia de la mano en coordenadas mundiales y lateralidad(mano izquierda o derecha) de varias manos detectadas.
Comenzar
Para comenzar a usar esta tarea, sigue una de estas guías de implementación para tu plataforma de destino. En estas guías específicas de la plataforma, se explica una implementación básica de esta tarea, incluido un modelo recomendado y un ejemplo de código con las opciones de configuración recomendadas:
- Android: Ejemplo de código
- Python: ejemplo de código
- Web: Ejemplo de código: Guía
Detalles de la tarea
En esta sección, se describen las capacidades, las entradas, las salidas y las opciones de configuración de esta tarea.
Funciones
- Procesamiento de imágenes de entrada: El procesamiento incluye la rotación de imágenes, el cambio de tamaño, la normalización y la conversión de espacios de color.
- Umbral de puntuación: Filtra los resultados según las puntuaciones de predicción.
Entradas de tareas | Resultados de las tareas |
---|---|
El marcador de manos acepta una entrada de uno de los siguientes tipos de datos:
|
El marcador de manos genera los siguientes resultados:
|
Opciones de configuración
Esta tarea tiene las siguientes opciones de configuración:
Nombre de la opción | Descripción | Rango de valores | Valor predeterminado |
---|---|---|---|
running_mode |
Establece el modo de ejecución de la tarea. Existen tres modos: IMAGE: Es el modo para entradas de una sola imagen. VIDEO: Es el modo para los fotogramas decodificados de un video. LIVE_STREAM: Es el modo de transmisión en vivo de datos de entrada, como los de una cámara. En este modo, se debe llamar a resultListener para configurar un objeto de escucha que reciba resultados de forma asíncrona. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
num_hands |
Es la cantidad máxima de manos que detecta el detector de puntos de referencia de manos. | Any integer > 0 |
1 |
min_hand_detection_confidence |
Es la puntuación de confianza mínima para que la detección de la mano se considere exitosa en el modelo de detección de la palma. | 0.0 - 1.0 |
0.5 |
min_hand_presence_confidence |
Es la puntuación de confianza mínima para la puntuación de presencia de la mano en el modelo de detección de puntos de referencia de la mano. En el modo de video y en el modo de transmisión en vivo, si la puntuación de confianza de la presencia de la mano del modelo de puntos de referencia de la mano está por debajo de este umbral, el marcador de puntos de referencia de la mano activa el modelo de detección de palmas. De lo contrario, un algoritmo de seguimiento de manos ligero determina la ubicación de las manos para las detecciones de puntos de referencia posteriores. | 0.0 - 1.0 |
0.5 |
min_tracking_confidence |
Es la puntuación de confianza mínima para que el seguimiento de manos se considere exitoso. Este es el umbral de IoU del cuadro de límite entre las manos en el fotograma actual y el último. En el modo de video y el modo de transmisión de Hand Landmarker, si el seguimiento falla, Hand Landmarker activa la detección de la mano. De lo contrario, se omite la detección de manos. | 0.0 - 1.0 |
0.5 |
result_callback |
Establece el objeto de escucha de resultados para que reciba los resultados de detección de forma asíncrona cuando el marcador de manos esté en modo de transmisión en vivo.
Solo se aplica cuando el modo de ejecución se establece en LIVE_STREAM . |
N/A | N/A |
Modelos
El marcador de puntos de referencia de la mano usa un paquete de modelos con dos modelos empaquetados: un modelo de detección de palmas y un modelo de detección de puntos de referencia de la mano. Para ejecutar esta tarea, necesitas un paquete de modelos que contenga ambos modelos.
Nombre del modelo | Forma de entrada | Tipo de cuantización | Tarjeta de modelo | Versiones |
---|---|---|---|---|
HandLandmarker (completo) | 192 × 192, 224 × 224 | Número de punto flotante 16 | info | Más reciente |
El paquete del modelo de punto de referencia de la mano detecta la localización de puntos clave de 21 coordenadas de nudillos de la mano dentro de las regiones de la mano detectadas. El modelo se entrenó con aproximadamente 30,000 imágenes del mundo real, así como varios modelos de manos sintéticas renderizados que se impusieron sobre varios fondos.
El paquete de modelos de marcadores de mano contiene un modelo de detección de palmas y un modelo de detección de marcadores de mano. El modelo de detección de palmas localiza las manos dentro de la imagen de entrada, y el modelo de detección de puntos de referencia de la mano identifica puntos de referencia específicos de la mano en la imagen de la mano recortada que define el modelo de detección de palmas.
Dado que ejecutar el modelo de detección de palmas lleva tiempo, cuando se ejecuta en el modo de transmisión continua o de video, el identificador de puntos de referencia de la mano usa el cuadro de límite definido por el modelo de puntos de referencia de la mano en un fotograma para localizar la región de las manos en los fotogramas posteriores. El identificador de puntos de referencia de la mano solo vuelve a activar el modelo de detección de palmas si este ya no identifica la presencia de manos o no realiza un seguimiento de ellas dentro del fotograma. Esto reduce la cantidad de veces que Hand Landmarker activa el modelo de detección de la palma.
Comparativas de tareas
Estas son las comparativas de tareas de toda la canalización según los modelos previamente entrenados anteriores. El resultado de la latencia es la latencia promedio en el Pixel 6 con CPU o GPU.
Nombre del modelo | Latencia de la CPU | Latencia de la GPU |
---|---|---|
HandLandmarker (completo) | 17.12 ms | 12.27 ms |