abril 15, 2024

BitCuco

¡Hola Mundo!

Machine Learning CUDA: Representación del modelo humano

machine learning cuda

¡Hola a todos! Aquí les traigo de nuevo otro tutorial, en donde aprenderemos sobre la representación del modelo humano usando el aprendizaje de la máquina (Machine Learning) y el lenguaje de programación CUDA. Éste proyecto interesante está siendo desarrollado por Leo Xiao basado en un paper del 2019 y se encuentra disponible en Github, con licencia MIT.

Un prototipo del modelo humano

El proyecto consiste en una implementación pytorch de la representación del modelo humano con Machine Learning y CUDA. En donde el problema de la estimación de la pose humana se muestra con un enfoque en el aprendizaje de representaciones confiables de alta resolución.

via GIPHY

Aún cuando casi todas las representaciones actuales del cuerpo humano se realizan por medio de representaciones de baja resolución obtenidas desde las imágenes de alta resolución, al usar cómputo paralelo con GPUs podemos utilizar las representaciones de alta resolución durante todo el proceso sin la necesidad de mapearlas a baja resolución. Para simplificar el desarrollo, podemos ver el proceso en etapas:

La primera etapa consiste en una subred de alta resolución en donde agregamos gradualmente las subredes de alta a baja resolución una por una para formar más etapas y así conectar las subredes de resolución múltiple en paralelo.

Posteriormente realizamos fusiones repetidas a múltiples escalas de modo que cada una de las representaciones de alta a baja resolución recibe información de otras representaciones paralelas una y otra vez, lo que lleva a representaciones llenas de alta resolución.

Como resultado, el mapa de calor del punto clave predicho es potencialmente más preciso y espacialmente más preciso. Ésto significa que la efectividad de la red a través de los resultados superiores de estimación de pose se divide en dos conjuntos de datos de referencia: el conjunto de datos de detección de puntos clave (COCO) y el conjunto de datos (MPII).

Desarrollo del proyecto

Éstas instrucciones se muestran en inglés en el proyecto original:

Ambiente: Se requiere una tarjeta NVIDIA (porque hace uso de GPUs), el autor lo probó con 4 NVIDIA P100, Python 3.6 y Ubuntu 16.04.

Clonar el proyecto:

git clone https://github.com/leoxiaobin/deep-high-resolution-net.pytorch.git

Instalar dependencias y construir:

pip install -r requirements.txt
mkdir /ruta_proyecto/output 
mkdir /ruta_proyecto/log
cd /ruta_proyecto/lib
make

Instalar COCOAPI:

git clone https://github.com/cocodataset/cocoapi.git /ruta_para_clonar/cocoapi
cd /ruta_para_clonar/cocoapi/PythonAPI
make install
python3 setup.py install --user

Casos de Uso Machine Learning CUDA

El autor ha subido el modelo de un zoológico para demostrar el Machine Learning con CUDA y Python, el cuál se puede descargar aquí. Además muestra la forma de preparar los datos aquí.

Para probar, utlizamos python:

python tools/test.py \
    --cfg experiments/mpii/hrnet/w32_256x256_adam_lr1e-3.yaml \
    TEST.MODEL_FILE models/pytorch/pose_mpii/pose_hrnet_w32_256x256.pth

Y para entrenar en el conjunto de datos MPII:

python tools/train.py \
    --cfg experiments/mpii/hrnet/w32_256x256_adam_lr1e-3.yaml

Finalmente podemos visualizar el resultado así:

python visualization/plot_coco.py \
    --prediction output/coco/w48_384x288_adam_lr1e-3/results/keypoints_val2017_results_0.json \
    --save-path visualization/results