Visión AI con el Kit de Inicio de Visión AI Kria KV260

Ari Mahpour
|  Creado: Noviembre 18, 2024  |  Actualizado: Enero 17, 2025
Visión AI con el Kit de Inicio de Visión AI Kria KV260

En Comenzando con el Kit de Inicio de Visión AI Kria KV260, desempaquetamos y experimentamos con el Kit de Inicio de Visión AI Kria KV260 de AMD Xilinx. Esta placa nos proporciona un FPGA y un procesador ARM lo suficientemente potentes como para ejecutar una distribución completa de Ubuntu en él. En este artículo, vamos a construir y ejecutar la aplicación SmartCam utilizando una cámara de Raspberry Pi. Esta aplicación será capaz de detectar rostros en tiempo real y demostrarlo en el monitor de tu computadora.

Por Qué He Escrito Este Tutorial

Este tutorial sigue el tutorial original preparado por la gente de AMD Xilinx. Notarás que gran parte de este tutorial es muy similar (si no igual) al de ellos. Mi reacción inicial a este tutorial fue sentirme abrumado. Tengo un conocimiento bastante decente en diseño de FPGA, pero seguir sus tutoriales paso a paso, a veces puede ser desafiante y un poco intimidante. Estaba buscando algo un poco más sencillo y fácil de seguir. Después de revisar otros tutoriales reescritos por otras personas, no estaba demasiado contento con lo que encontré; por lo tanto, decidí escribir el propio.

Si buscas todos los detalles sangrientos, te recomiendo encarecidamente que revises el tutorial original. Hay algunos pasos que no son super claros, pero intento superarlos (o incluso evitarlos) en este tutorial. Lo más importante, en el momento de escribir este artículo, la aplicación de muestra SmartCam no parecía funcionar con el último firmware. En mi repositorio bifurcado, he creado scripts automatizados (e incluso los archivos finales de flash necesarios) para que tu demo funcione sin problemas. Con este tutorial en mano, espero que puedas sumergirte en la IA en objetivos de hardware lo más rápido posible y experimentar ese momento de "woah" que tuve después de lograr que la demo funcionara.

Prerrequisitos de Hardware

Por supuesto, necesitarás el Kria KV260 Vision Starter Kit de AMD Xilinx. Necesitarás configurar tu placa, y eso se puede hacer siguiendo mi tutorial anterior, Getting Started with the Kria KV260 Vision AI Starter Kit. También necesitarás un Raspberry Pi Camera Module V2. La parte V2 es súper importante. He intentado sin éxito ejecutar la demostración con la versión más barata V1 de la cámara y otras cámaras genéricas (y puedo atestiguar que no funcionan con esta demostración). Necesitarás conectar el cable de cinta de la cámara al puerto J9 en la placa. Por último, necesitarás un monitor (o TV) compatible con HDMI para conectar a tu kit KV260 (y un cable HDMI, por supuesto).

Prerrequisitos del Software

Antes de comenzar con la demostración, necesitas tener tanto Docker como el ejemplo de SmartCam instalados en tu dispositivo Kria KV260 (aunque no utilizaremos la aplicación SmartCam). También necesitarás Xilinx Vitis (la instalación completa) versión 2022.1. Ten en cuenta que el número de versión de Xilinx Vitis es muy importante ya que este tutorial está construido específicamente para esa versión.

Puedes instalar Docker utilizando el método de Script de Conveniencia. Para hacerlo, abre una terminal y ejecuta las siguientes líneas:

Get Ready for the Electronics Design Jobs You Want


Experience hands-on learning in PCB and hardware design with Altium's Student license, cloud access & comprehensive curriculum.

curl -fsSL https://get.docker.com -o get-docker.sh

sudo sh ./get-docker.sh --dry-run

sudo usermod -aG docker $USER

Para instalar el paquete de la aplicación SmartCam, ejecuta el siguiente comando en la terminal:

sudo apt install -y xlnx-firmware-kv260-smartcam

También necesitarás clonar mi bifurcación del repositorio original:

git clone --recursive --branch rpi-camera-demo-clean

https://github.com/amahpour/kria-vitis-platforms.git

Ejecutando la Construcción

Para hacer las cosas lo más simples posible, he escrito un script automatizado que realiza el proceso de construcción automáticamente. No necesitarás seguir las capturas de pantalla en el tutorial original para actualizar los diseños de bloques o cambiar algún código. Este tutorial intenta ejecutar la construcción sin tener que saltar a la interfaz de usuario de Vitis. Para ejecutar el script de construcción, cambia al directorio de tu repositorio clonado y ejecuta los siguientes comandos:

cd kv260

./build_demo.sh

Ten en cuenta que este script ha sido escrito teniendo en mente Linux. Si estás utilizando Windows, te recomiendo encarecidamente que configures WSL 2 con Ubuntu e instales Xilinx Vitis allí (en lugar de en Windows).

Si recibes un error que indica que no se puede encontrar Vivado, probablemente olvidaste cargar las configuraciones de Xilinx. Solo ejecuta este comando:

Launch Your Career in Electronics Design


Gain the skills top employers look for. Start mastering PCB design with the Altium Student Lab today!

source /tools/Xilinx/Vivado/2022.1/settings64.sh

Ejecutar el script build_demo.sh omitirá completamente todo el tutorial porque he incluido el diseño de bloques actualizado, el archivo de restricciones de pines y las configuraciones del proyecto en la carpeta kv260/extras/ del repositorio. Si deseas seguir el tutorial paso a paso, te recomiendo encarecidamente que eches un vistazo a el original.

Si todo funcionó correctamente, deberías terminar con un archivo bitstream ubicado en

kv260/overlays/examples/smartcam/binary_container_1/link/int/kv260-raspi-dpu.bit.bin.

El proceso de construcción puede tomar entre 1-2 horas. No todos tienen tiempo para eso, así que he incluido el archivo bitstream en la carpeta kv260/extras/ como respaldo.

Ejecutando la Demostración

En este punto, estamos listos para copiar nuestros archivos a la placa KV260 y ejecutar la demostración. Puedes transferir archivos a través de una memoria USB o mediante el comando SCP (copia segura). Necesitarás transferir los siguientes archivos:

  • kv260/extras/kv260-raspi-dpu.bit.bin (o el generado mencionado anteriormente)
  • kv260/extras/kv260-raspi-dpu.dtbo
  • kv260/extras/kv260-raspi-dpu.xclbin

Una vez de vuelta en tu dispositivo KV260, necesitamos mover estos archivos a la sección de la biblioteca donde normalmente se carga el firmware:

Lay Out Your Track: Prepare for a Career in PCB Design


Develop the electronics design expertise that employers look for with Altium’s free Student Lab!

sudo mkdir /lib/firmware/xilinx/kv260-raspi-dpu

sudo mv kv260-raspi-dpu.bit.bin /lib/firmware/xilinx/kv260-raspi-dpu/

sudo mv kv260-raspi-dpu.dtbo /lib/firmware/xilinx/kv260-raspi-dpu/

sudo mv kv260-raspi-dpu.xclbin /lib/firmware/xilinx/kv260-raspi-dpu/kv260-raspi-dpu.xclbin

sudo cp /lib/firmware/xilinx/kv260-smartcam/shell.json /lib/firmware/xilinx/kv260-raspi-dpu/

Ahora, estamos listos para lanzar la aplicación. Ten en cuenta que esto apagará tu monitor, por lo que deberías estar ejecutando esto a través de SSH o mediante la interfaz serial USB (es decir, puerto USB y utilizando PuTTY o TeraTerm):

sudo xmutil listapps

sudo xmutil unloadapp

sudo xmutil loadapp kv260-raspi-dpu

sudo xmutil desktop_disable

docker run \

--env="DISPLAY" \

-h "xlnx-docker" \

--env="XDG_SESSION_TYPE" \

--net=host \

--privileged \

--volume="$HOME/.Xauthority:/root/.Xauthority:rw" \

-v /tmp:/tmp \

-v /dev:/dev \

-v /sys:/sys \

-v /etc/vart.conf:/etc/vart.conf \

-v /lib/firmware/xilinx:/lib/firmware/xilinx \

-v /run:/run \

-it xilinx/smartcam:latest bash

En el contenedor de Docker, necesitaremos hacer una pequeña modificación a un archivo. Eso nos requerirá instalar vim primero:

apt-get update -y && apt-get install -y vim

vim /opt/xilinx/kv260-smartcam/share/vvas/facedetect/preprocess.json

Una vez en vim, presiona "i" (para "insertar") para comenzar a editar el archivo. Busca la línea que apunta a un archivo "xclbin" y actualízala con esta ruta:

/lib/firmware/xilinx/kv260-raspi-dpu/kv260-raspi-dpu.xclbin

Pulse la tecla de escape. Escriba ":wq" (para guardar y salir), luego presione enter. Después de eso, podemos ejecutar la aplicación con el siguiente comando (muy largo):

gst-launch-1.0 mediasrcbin name=videosrc media-device=/dev/media0  v4l2src0::io-mode=mmap v4l2src0::stride-align=256 !  video/x-raw, width=1920, height=1080, format=NV12, framerate=30/1  ! tee name=t ! queue ! vvas_xmultisrc kconfig="/opt/xilinx/kv260-smartcam/share/vvas/facedetect/preprocess.json" ! queue ! vvas_xfilter kernels-config="/opt/xilinx/kv260-smartcam/share/vvas/facedetect/aiinference.json" ! ima.sink_master                     vvas_xmetaaffixer name=ima ima.src_master ! fakesink t. ! queue max-size-buffers=1 leaky=2 ! ima.sink_slave_0 ima.src_slave_0 ! queue ! vvas_xfilter kernels-config="/opt/xilinx/kv260-smartcam/share/vvas/facedetect/drawresult.json"          ! queue ! kmssink driver-name=xlnx plane-id=39 sync=false fullscreen-overlay=true

Si todo funcionó correctamente, tu monitor (o TV) debería encenderse nuevamente con la transmisión de tu cámara Raspberry Pi. Colocará un cuadro azul alrededor de cualquier rostro que detecte en la transmisión de video en tiempo real.

Get Ready for the PCB Design Job of Your Dreams


Start your electronics design career with Altium's free Student Lab, comprehensive curriculum & certificates

Conclusión

En este artículo, revisamos el tutorial de SmartCam con la cámara de Raspberry Pi y observamos los atajos necesarios para "hacerlo funcionar" simplemente. A este punto, deberías tener tu propia SmartCam funcionando en el Kria KV260, detectando rostros en tiempo real. Mi objetivo era simplificar el proceso para que puedas concentrarte más en la diversión de ver la IA en acción en lugar de lidiar con las complicaciones del tutorial original. Espero que esta guía haya hecho las cosas más claras y rápidas para ti para alcanzar ese momento de "funciona". Ahora, es tu turno de ser creativo y explorar qué más puedes hacer con este poderoso kit de inicio.

Nota: Todo el código para este proyecto se puede encontrar en este repositorio.

Sobre el autor / Sobre la autora

Sobre el autor / Sobre la autora

Ari es un ingeniero con una amplia experiencia en diseño, fabricación, pruebas e integración de sistemas eléctricos, mecánicos y de software. Le apasiona integrar a los ingenieros de diseño, de verificación y de pruebas para que trabajen juntos como una unidad cohesiva.

Recursos Relacionados

Documentación técnica relacionada

Volver a la Pàgina de Inicio
Thank you, you are now subscribed to updates.
Altium Need Help?