TensorFlow y DirectML con Windows ML: detección de objetos en tiempo real desde un vídeo

Image classification flow

En este tutorial se muestra cómo entrenar y evaluar localmente un modelo de detección de objetos en tiempo real en una aplicación para UWP. El modelo se entrenará con TensorFlow localmente en la máquina a través de las API de DirectML, que proporcionan entrenamiento acelerado mediante GPU en todos los dispositivos Windows. A continuación, el modelo entrenado se integrará en una aplicación para UWP que usa la cámara web para detectar objetos del fotograma en tiempo real y de forma local mediante las API de Windows ML.

Para comenzar, habilite TensorFlow en la máquina.

Si quiere aprender a entrenar el modelo con TensorFlow, puede consultar la sección Entrenar un modelo.

Si tiene un modelo de TensorFlow, pero quiere aprender a convertirlo a un formato ONNX adecuado para su uso con las API de WinML, consulte Conversión del modelo.

Si en cambio tiene un modelo ONNX y quiere aprender a crear una aplicación de WinML desde cero, consulte Implementación del modelo.

Habilitación de la aceleración de GPU para TensorFlow con DirectML

Para habilitar TensorFlow en el equipo, siga estos pasos.

Comprobación de la versión de Windows

El paquete TensorFlow con DirectML en una versión nativa de Windows funciona en la versión 1709 de Windows 10 (compilación 16299) o versiones posteriores de Windows. Para comprobar el número de versión de compilación, ejecute winver mediante el comando Run (Windows logo key + R).

Comprobación de las actualizaciones del controlador de GPU

Asegúrese de que tiene los controladores de GPU más recientes instalados. Seleccione Buscar actualizaciones en la sección Windows Update de la aplicación Configuración.

Configuración de TensorFlow con la versión preliminar de DirectML

Para su uso con TensorFlow, se recomienda configurar un entorno virtual de Python en Windows. Existen muchas herramientas que puede usar para configurar un entorno de Python virtual; en este caso, usaremos la característica miniconda de Anaconda. En el resto de esta configuración se da por supuesto que usa un entorno de miniconda.

Configuración de un entorno de Python

Nota:

En los comandos siguientes, usaremos Python 3.6. Sin embargo, el paquete tensorflow-directml funciona en un entorno de Python 3.5, 3.6 o 3.7.

Descargue e instale el instalador de Windows Miniconda en la máquina. Si lo necesita, tiene instrucciones adicionales para la configuración en el sitio de Anaconda. Una vez instalado Miniconda, cree un entorno mediante Python denominado directml y actívelo mediante los siguientes comandos:

conda create --name directml python=3.6 conda activate directml

Instalación de TensorFlow con el paquete DirectML

Nota:

El tensorflow-directml paquete solo admite TensorFlow 1.15.

Instale el paquete TensorFlow con DirectML a través de PIP mediante la ejecución del siguiente comando:

pip install tensorflow-directml

Comprobación de la instalación del paquete

Una vez instalado el paquete tensorflow-directml, puede comprobar que se ejecuta correctamente agregando dos tensores. Copie las siguientes líneas en una sesión interactiva de Python:

import tensorflow.compat.v1 as tf 

tf.enable_eager_execution(tf.ConfigProto(log_device_placement=True)) 

print(tf.add([1.0, 2.0], [3.0, 4.0])) 

Debería ver una salida similar a la siguiente, con el operador "add" colocado en el dispositivo DML.

Pasos siguientes

Ahora que ha ordenado los requisitos previos y ha preparado el conjunto de datos, puede continuar con la creación del modelo WinML. En la siguiente parte, usará TensorFlow para crear el modelo de detección de objetos en tiempo real.

Importante

TensorFlow, el logotipo de TensorFlow y cualquier marca relacionada son marcas comerciales de Google Inc.