Skip to main content

Primeros pasos con alwaysAI en dispositivos NVIDIA® Jetson

alwaysAI es una plataforma esencial de desarrollo de Visión por Computadora para crear e implementar aplicaciones de aprendizaje automático en dispositivos Edge como los dispositivos NVIDIA® Jetson. Desarrollar e implementar estas aplicaciones es simplemente demasiado complejo y consume mucho tiempo, requiriendo un conocimiento profundo de una gran variedad de tecnologías y técnicas de visión por computadora que son más relevantes y accesibles para especialistas que para desarrolladores cotidianos. alwaysAI elimina estas barreras y hace que crear aplicaciones de visión por computadora sea fácil, rápido y efectivo.

Hardware compatible

alwaysAI es compatible con el siguiente hardware relacionado con Jetson:

  • Kits de Seeed:

    • reComputer J1010 construido con Jetson Nano
    • reComputer J1020 construido con Jetson Nano
    • reComputer J2011 construido con Jetson Xavier NX 8GB
    • reComputer J2012 construido con Jetson Xavier NX 16GB
  • Placas portadoras de Seeed:

    • Jetson Mate
    • Jetson SUB Mini PC
    • Jetson Xavier AGX H01 Kit
    • A203 Carrier Board
    • A203 (Version 2) Carrier Board
    • A205 Carrier Board
    • A206 Carrier Board
  • Kits de desarrollo oficiales de NVIDIA:

    • NVIDIA® Jetson Nano Developer Kit
    • NVIDIA® Jetson Xavier NX Developer Kit
    • NVIDIA® Jetson AGX Xavier Developer Kit
    • NVIDIA® Jetson TX2 Developer Kit
    • NVIDIA® Jetson AGX Orin Developer Kit
  • SoMs oficiales de NVIDIA:

    • NVIDIA® Jetson Nano module
    • NVIDIA® Jetson Xavier NX module
    • NVIDIA® Jetson TX2 NX module
    • NVIDIA® Jetson TX2 module
    • NVIDIA® Jetson AGX Xavier module

Prerrequisitos

  • Cualquiera de los dispositivos Jetson mencionados ejecutando JetPack 4.6 con todos los componentes SDK instalados (consulta esta wiki como referencia para la instalación)
  • PC host con Windows, Linux o Mac
  • Cámara web USB o cámara MIPI CSI compatible con tu dispositivo Jetson

Primeros pasos

¡Implementar tu primer proyecto de visión por computadora solo toma un par de minutos! Al final de esta wiki, podrás detectar objetos en una transmisión de video en vivo desde una cámara conectada a un dispositivo Jetson y también en un archivo de video precargado.

  1. Configurar entorno para computadora de desarrollo
  2. Configurar entorno para dispositivo Jetson
  3. Registrarse para una cuenta de alwaysAI
  4. Crear un proyecto usando el panel de alwaysAI
  5. Implementar tu proyecto en el dispositivo Jetson usando la computadora de desarrollo
  6. Detección de objetos en transmisión de video en vivo desde cámara
  7. Detección de objetos en archivo de video precargado

Configurar entorno para computadora de desarrollo

Ahora necesitas configurar el entorno de desarrollo. Aquí puedes usar una computadora con Windows, Linux o Mac.

note

En esta guía, usaremos una computadora de desarrollo con Windows. Sin embargo, si quieres configurar Mac o Linux como tu PC de desarrollo, por favor visita aquí para aprender más.

  • Paso 1. Descarga e instala la aplicación de escritorio de alwaysAI y la interfaz de línea de comandos haciendo clic aquí

  • Paso 2. Después de que termine la instalación, abre una interfaz de línea de comandos y escribe lo siguiente

aai -v

Si ves un número de versión impreso, has instalado exitosamente alwaysAI CLI. El número de versión al momento de escribir este wiki es 1.4.3

  • Paso 3. Verifica si OpenSSH ya está instalado en tu SO. Necesitas OpenSSH en la máquina de desarrollo para conectarte a tu dispositivo edge y desplegar los proyectos de aprendizaje automático.
ssh -V

Si ves un número de versión impreso, ya tienes OpenSSH instalado. Por ejemplo OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2. A finales de 2018, Windows 10 soporta OpenSSH de forma nativa. Consulta este artículo en el sitio de documentación de Microsoft para más información sobre la instalación de OpenSSH en Windows

Configurar el entorno para el dispositivo Jetson

A continuación necesitas configurar el entorno en el dispositivo edge (dispositivo Jetson en este caso).

Paso 1. Al ejecutar nuestro proyecto de aprendizaje automático en el dispositivo Jetson, se utiliza el runtime edgeIQ que está disponible como una imagen docker. No necesitas instalar Docker porque ya viene preinstalado con JetPack. Sin embargo necesitas añadir el grupo "docker" a tu usuario para que no necesites privilegios de root (sudo) para acceder a Docker. Accede al dispositivo Jetson y ejecuta lo siguiente en una terminal

sudo usermod -aG docker $USER

Paso 2. Para aplicar la nueva membresía de grupo, cierre sesión en el dispositivo Jetson y vuelva a iniciar sesión, o escriba lo siguiente

su - $USER

Paso 3. Prueba tu instalación de docker sin sudo

docker run hello-world

Registrarse para una cuenta de alwaysAI

  • Paso 1. Visita esta página para registrarte para una cuenta de alwaysAI

  • Paso 2. Completa el formulario y haz clic en Sign Up for Free para finalizar el proceso de registro

Crear un proyecto usando el panel de alwaysAI

Después de completar la configuración del entorno en la máquina de desarrollo y el dispositivo Jetson, registrarse para una cuenta de alwaysAI, podemos comenzar a crear un nuevo proyecto de detección de objetos usando el panel de alwaysAI.

Paso 1. Visita el panel de alwaysAI y crea un nuevo proyecto haciendo clic en el botón New Project

Paso 2. Elige Object Detection como plantilla inicial, ingresa un nombre de proyecto y haz clic en Create Project

Paso 3. Haz clic en Click Here To View Your Project para ingresar a tu proyecto recién creado

Ahora verás información sobre el proyecto recién creado como el modelo utilizado y otros detalles útiles

Para el Proyecto de Detección de Objetos predeterminado, mobilenet_ssd se usa como el modelo que ha sido entrenado con el conjunto de datos Pascal VOC. Esto significa que esta aplicación puede reconocer 20 clases de objetos como persona, pájaro, gato, vaca, perro, caballo, oveja, avión, bicicleta, barco, autobús, coche, motocicleta, tren, botella, silla, mesa de comedor, planta en maceta, sofá, tv/monitor.

Sin embargo, este modelo no está optimizado para ejecutarse en hardware Jetson y funcionará con fps muy bajos. Por lo tanto, elegiremos un modelo que esté optimizado para Jetson Xavier NX con soporte TensorRT.

Paso 4. Haz clic en los tres puntos junto al modelo y haz clic en Delete

Paso 5. Haz clic en Add New Model y haz clic en Go to Model Catalog para ingresar al Catálogo de Modelos de alwaysAI

Paso 6. Escribe ssd_mobilenet_v1_coco_2018_01_28_xavier_nx en el cuadro de búsqueda y haz clic en + Use this Model

Este modelo que ha sido entrenado con el conjunto de datos COCO que puede reconocer 80 clases de objetos como persona, bicicleta, coche, motocicleta, avión, autobús, tren, camión, barco, semáforo, boca de incendios, señal de alto, parquímetro, banco, pájaro, gato, perro, caballo, oveja, vaca, elefante, oso, cebra, jirafa, mochila, paraguas, bolso, corbata, maleta, frisbee, esquís, snowboard, pelota deportiva, cometa, bate de béisbol, guante de béisbol, patineta, tabla de surf, raqueta de tenis, botella, copa de vino, taza, tenedor, cuchillo, cuchara, tazón, plátano, manzana, sándwich, naranja, brócoli, zanahoria, perro caliente, pizza, dona, pastel, silla, sofá, planta en maceta, cama, mesa de comedor, inodoro, tv, laptop, ratón, control remoto, teclado, teléfono celular, microondas, horno, tostadora, fregadero, refrigerador, libro, reloj, florero, tijeras, oso de peluche, secador de pelo, cepillo de dientes

Paso 7. Selecciona el proyecto creado anteriormente (My First Project en este caso) y haz clic en Add To Project

¡Ahora hemos agregado exitosamente el modelo a nuestro proyecto!

Desplegar tu proyecto en el dispositivo Jetson usando la computadora de desarrollo

Ahora desplegaremos el proyecto que creamos antes en el dispositivo Jetson usando la computadora de desarrollo vía SSH

Paso 1. En la máquina de desarrollo, crea una nueva carpeta, abre una interfaz de línea de comandos dentro de la nueva carpeta y escribe lo siguiente

aai app configure
note

Se te pedirá que ingreses el nombre de usuario y la contraseña de la cuenta de alwaysAI cuando ejecutes el comando anterior por primera vez

Paso 2. Selecciona el proyecto que creaste anteriormente en el panel de alwaysAI

Paso 3. Elige Dispositivo remoto como destino

Paso 4. Presiona Y para crear el archivo de clave privada

Paso 5. Haz clic en Agregar un nuevo dispositivo para añadir tu dispositivo Jetson como dispositivo remoto

Paso 6. Elige modo de dispositivo como Desarrollo

Paso 7. Ingresa un nombre de dispositivo

Paso 8. Ingresa el nombre de usuario del dispositivo Jetson junto con nombre de host/dirección IP como sigue

note

Aquí el nombre de usuario del dispositivo Jetson es lakshanthad y la dirección IP es 192.168.2.156

Paso 9. Ingresa la contraseña del dispositivo Jetson cuando se te solicite

Paso 10. Cuando pregunte por la ubicación para ejecutar la aplicación, deja la ubicación predeterminada y presiona ENTER. Aquí la ubicación predeterminada está configurada como alwaysai/test. Este es el directorio del proyecto dentro del dispositivo Jetson

Ahora hemos inicializado exitosamente el proyecto en el dispositivo Jetson usando la computadora de desarrollo vía SSH

Antes de proceder a instalar la aplicación en el dispositivo Jetson, necesitamos hacer un pequeño cambio en el código principal para cambiar el nombre del modelo y el tipo de motor de inferencia.

Paso 11. En el directorio que creaste en tu PC para alwaysAI, abre app.py y cambia el nombre del modelo y el tipo de motor de inferencia como sigue

def main():
obj_detect = edgeiq.ObjectDetection("alwaysai/ssd_mobilenet_v1_coco_2018_01_28_xavier_nx")
obj_detect.load(engine=edgeiq.Engine.TENSOR_RT)

Paso 12. Escribe lo siguiente para instalar la aplicación

aai app install

Verás la siguiente salida si se instala exitosamente

note

Si encuentras errores en este paso, puedes intentar primero volver a desplegar usando el método aai app install --clean. Verifica dos veces que la versión de jetpack sea la versión solicitada 4.6. Esto se puede verificar escribiendo el comando sudo apt-cache show nvidia-jetpack. Si el número de versión es correcto, asegúrate de haber completado la instalación del sistema Jetson junto con loscomponentes del SDK de Jetson**. Esto te ayudará a resolver la mayoría de los problemas.

Detección de objetos en transmisión de video en vivo desde cámara

Ahora ejecutaremos la detección de objetos en una transmisión de video en vivo desde una cámara USB conectada al dispositivo Jetson. También puedes usar cámaras MIPI CSI que son compatibles con el dispositivo Jetson que estés usando

Paso 1. Conecta la cámara USB/ cámara MIPI CSI al dispositivo Jetson

Paso 2. Ejecuta lo siguiente

aai app start

Ahora verás la siguiente salida en la línea de comandos

Paso 3. Abre un navegador web y escribe http://localhost:5000 para abrir la transmisión de video

http://localhost:5000

Como puedes ver, las personas están siendo detectadas en tiempo real y el porcentaje de confianza para cada etiqueta se muestra en la interfaz. También el tiempo de inferencia en el Jetson Xavier es de 0.009s que es aproximadamente 111 fps.

Lo anterior es otra demostración usando el mismo modelo.

Detección de objetos en archivo de video precargado

Aquí ejecutaremos la detección de objetos en un archivo de video precargado.

Paso 1. Coloca el archivo de video dentro del directorio del proyecto alwaysAI del dispositivo Jetson. Según nuestro ejemplo, es /home/<username>/alwaysai/test

Paso 2. En la computadora de desarrollo, abre el archivo app.py dentro de la carpeta test que creamos antes y reemplaza esta sección del código

with edgeiq.WebcamVideoStream(cam=0) as video_stream, \
edgeiq.Streamer() as streamer:

con este

with edgeiq.FileVideoStream(
'file name goes here', play_realtime=True) as video_stream, \
edgeiq.Streamer() as streamer:

Y luego reemplaza file name goes here con el nombre del archivo de video y la extensión del archivo. Asegúrate de que el nombre del archivo esté entre comillas simples.

Paso 3. Instala la aplicación nuevamente

aai app install

Step 4. Finally run the app

aai app start

Aquí verás la misma salida en la línea de comandos que antes, y una vez que abras un navegador web con la misma dirección mencionada anteriormente, verás que se realiza la detección de objetos en el video precargado, dando una salida similar a la anterior.

Filtrar objetos a detectar

También puedes filtrar objetos específicos que quieres que el modelo detecte. Por ejemplo, el conjunto de datos COCO que usamos anteriormente es capaz de detectar 80 tipos de objetos. Sin embargo, podemos filtrar para detectar solo personas.

Simplemente necesitas añadir la línea results.predictions después de results al archivo app.py

while True:
frame = video_stream.read()
results = obj_detect.detect_objects(framconfidence_level=.5)
results.predictions = edgefilter_predictions_by_label(resulpredictions, ['person'])
frame = edgeiq.markup_image(

Aplicaciones de alwaysAI en GitHub

alwaysAI proporciona una amplia gama de aplicaciones listas para usar en el repositorio de GitHub de alwaysAI. Puedes revisar las diferentes aplicaciones aquí.

Detector de Placas de Matrícula

Para fines de demostración, explicaremos cómo desplegar una de estas aplicaciones que es el Detector de Placas de Matrícula en un dispositivo Jetson. Así que puedes repetir los mismos pasos para otras aplicaciones también.

Paso 1. En la computadora de desarrollo, crea una nueva carpeta para nuestro proyecto y entra en ella

Paso 2. Descarga este repositorio como un .zip o clónalo si tienes Git instalado en tu PC

Por defecto, el modelo utilizado para este ejemplo no está optimizado para ejecutarse en Jetson Nano. Por lo tanto, primero cargaremos un modelo optimizado para Jetson nano.

Paso 3. Entra en el repositorio recién descargado/clonado, abre una línea de comandos dentro y ejecuta lo siguiente

aai app models add alwaysai/vehicle_license_mobilenet_ssd_nano

Paso 4. Abre app.py, cambia el nombre del modelo y el motor de inferencia

def main():
obj_detect = edgeiq.ObjectDetection(
"alwaysai/vehicle_license_mobilenet_ssd_nano")
obj_detect.load(engine=edgeiq.Engine.TENSOR_RT)

Paso 5. Ejecuta lo siguiente

aai app configure
note

Se te pedirá que ingreses el nombre de usuario y la contraseña de la cuenta de alwaysAI cuando ejecutes el comando anterior por primera vez

Paso 6. Selecciona Create new project

Paso 7. Escribe un Project Name

Paso 8. Selecciona inicializar el proyecto As an empty app

Paso 9. Repite los mismos pasos de la sección Deploy your project on the Jetson device using development computer, comenzando desde el Paso 3 hasta el Paso 11

Paso 10. Una vez que la aplicación esté instalada en Jetson, ejecuta el siguiente comando para iniciar la aplicación

aai app start

Ahora verás la siguiente salida en la línea de comandos

Como puedes ver, estamos usando el modelo vehicle_license_mobilenet_ssd y este modelo es capaz de identificar vehículos y placas de matrícula.

Paso 11. Abre un navegador web en tu PC y escribe lo siguiente para abrir la transmisión de video

http://localhost:5000

En esta demostración, la inferencia se está realizando en los 2 videos aquí y como puedes ver, los vehículos y las placas de matrícula en el flujo de video están siendo detectados y el porcentaje de confianza para cada etiqueta se muestra en la interfaz.

Usar inferencia con cámara web

Si quieres realizar la misma inferencia que arriba en un flujo de video en tiempo real desde una cámara web, por favor sigue los pasos a continuación

Paso 1. Navega a la carpeta que creamos antes para nuestro proyecto y abre app.py

Paso 2. Copia y pega el código desde aquí

Paso 3. Instala la aplicación nuevamente

aai app install

Step 4. Finally run the app

aai app start

Aquí verás la misma salida en la línea de comandos que antes, y una vez que abras un navegador web con la misma dirección mencionada anteriormente, verás la detección de objetos siendo realizada en un flujo de video en tiempo real desde la cámara web dando una salida similar a la anterior.

alwaysAI Enterprise Edition

alwaysAI también tiene una edición empresarial con las siguientes características:

  • Acceso a Freemium con 1 despliegue de dispositivo de producción por un año
  • 20 horas de entrenamiento de modelos en alwaysAI Cloud
  • 30 días de acceso al almacenamiento de conjuntos de datos de alwaysAI Cloud

Puedes aprender más sobre alwaysAI Enterprise Edition aquí.

Entrena tu propio modelo y despliégalo

Paso 1. Prepara tu conjunto de datos para el entrenamiento. Asegúrate de que tu conjunto de datos esté en formato PascalVOC y luego organiza todas las imágenes y etiquetas en 2 directorios y comprime el archivo como sigue

Paso 2. Ve al panel de alwaysAI, haz clic en Datasets en el panel de navegación izquierdo y haz clic en Upload a Dataset

Paso 3. Después de que termine la carga del conjunto de datos, haz clic en Train

Paso 4. Aquí puedes cambiar la configuración de entrenamiento según tu preferencia y luego hacer clic en Start training

Verás la siguiente salida después de que termine el entrenamiento

Ahora el modelo entrenado está disponible en tu cuenta. Puedes usar este modelo en tu proyecto de detección de objetos como sigue

Paso 5. Navega a Models > My Models y haz clic en el modelo que acabamos de entrenar

Paso 6. Como puedes ver, puedes usar el comando de abajo en el directorio raíz de tu aplicación de detección de objetos

aai app models add lakshanthad/roadsign-mobilenet

Paso 7. Después de eso, cambia el nombre del modelo en app.py y ejecuta la aplicación nuevamente

lakshanthad/roadsign-mobilenet

Recursos

Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para brindarle diferentes tipos de soporte para asegurar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.

Loading Comments...