Skip to main content

Detección de cuchillos: un modelo de detección de objetos implementado en Triton Inference Server basado en reComputer.

La revisión de seguridad es una alarma de seguridad pensada para la protección de los pasajeros y los sectores de transporte, manteniendo el peligro alejado, y se aplica comúnmente en aeropuertos, estaciones de tren, estaciones de metro, etc. En el campo actual de la inspección de seguridad, las máquinas de inspección se despliegan en los pasillos de entrada del transporte público. Generalmente, se requieren varios dispositivos para trabajar al mismo tiempo.

Sin embargo, el rendimiento de la detección de artículos prohibidos en las imágenes de rayos X aún no es ideal debido a la superposición de objetos detectados durante la inspección de seguridad. Para abordar este problema, basado en el módulo de desocultación en el servidor Triton Interface, se puede implementar un algoritmo de detección de artículos prohibidos en las imágenes de rayos X, lo que permite realizar una detección más precisa y efectiva.

Gracias a Yanlu Wei, Renshuai Tao et al., Renshuai Tao y otros colaboradores, este proyecto fundamental que estamos desarrollando se centrará en desplegar un modelo de Deep Learning en la reComputer J1010 para detectar artículos prohibidos (como cuchillos) en imágenes. El proyecto utiliza un reComputer J1010 como servidor de inferencia y dos Raspberry Pi para simular las máquinas de inspección de seguridad enviando imágenes. También se admiten otros dispositivos como la The reComputer 1020, la reComputer J2011, la reComputer J2012 y la Nvidia Jetson AGX Xavier. Este sistema permite implementar soluciones más eficientes y precisas para la detección de artículos prohibidos en las inspecciones de seguridad.

Primeros pasos

Triton Inference Server proporciona una solución de inferencia en la nube y de computo en el borde, optimizada tanto para CPUs como para GPUs. Triton admite un protocolo HTTP/REST y GRPC que permite a los clientes remotos solicitar inferencias para cualquier modelo gestionado por el servidor. Aquí utilizaremos Triton (Triton Inference Server) como nuestro servidor local, que se encargará de desplegar el modelo de detección.

Hardware

Requerimientos de Hardware

Los dispositivos requeridos para desarrollar este proyecto se enlistan a continuación:

Configuración del hardware

Dos Raspberry Pi y una reComputer deben estar encendidas y todas deben estar conectadas en la misma red de internet. En este proyecto, usamos dos Raspberry Pi para simular el funcionamiento de una máquina de seguridad, ya que las máquinas de inspección de seguridad suelen ser utilizadas por múltiples dispositivos en la mayoría de los casos.

También se podría utilizar solo una Raspberry Pi para este proyecto. Sin embargo, la demostración de detección simultánea de cuchillos en dos dispositivos podría ofrecer mejores capacidades de procesamiento por lotes dinámicos del Triton Inference Server. En la siguiente instrucción, te mostraremos cómo configurar el software en la Raspberry Pi y en la reComputer J1010.

Software

Aquí usamos el conjunto de datos de imágenes de rayos x como nuestros datos de entrada, que se colocarán en la Raspberry Pi. Después de eso, la reComputer enviará los resultados de inferencia procesados a la Raspberry Pi. Al final, la Raspberry Pi completará el trabajo final y lo mostrará en la pantalla, es decir, la última capa del modelo de inferencia se desplegará en la Raspberry Pi.

Configuración de la Raspberry PI

A continuación se muestra como configurar el software necesario en la Raspberry PI:

Paso 1. Instala el sistema Raspbian Buster y realiza la configuración básica desde el sitio web oficial. En este proyecto, utilizamos RASPBERRY PI OS (64 bits) como nuestro sistema operativo.

Paso 2. Configuración del puerto SSH de la Raspberry PI (opcional).

Antes de desplegar el entorno, podemos abrir el puerto SSH de la Raspberry Pi y acceder a ella de forma remota utilizando la Interfaz SSHen el PC.

Aviso: Asegurate que tu PC y la Raspberry PI estén conectadas a la misma LAN.

Paso 3. Configura el entorno de Python.

Necesitamos desplegar los entornos requeridos para el modelo de inferencia, como Python, PyTorch, Tritonclient y TorchVision y para la visualización de imágenes, OpenCV en la Raspberry Pi. A continuación, proporcionamos las instrucciones:

Python

Podemos ejecutar python –V y asegurarnos de que la versión de Python sea 3.9.2. Necesitamos instalar PyTorch, Tritonclient y TorchVision, y las versiones que necesitamos deben corresponder a la versión de Python 3.9.2. Puedes consultar aquí para descargar e instalar.

PyTorch

Si la versión de Python es correcta, ahora puedes instalar Pytorch.

Aviso: Antes de instalar Pytorch debes revisar tu versión de Raspbian.

Ejecuta los comandos mostrados a continuación para instalar Pytorch:

# get a fresh start
sudo apt-get update
sudo apt-get upgrade

# install the dependencies
sudo apt-get install python3-pip libjpeg-dev libopenblas-dev libopenmpi-dev libomp-dev

# above 58.3.0 you get version issues
sudo -H pip3 install setuptools==58.3.0
sudo -H pip3 install Cython

# install gdown to download from Google drive
sudo -H pip3 install gdown

# Buster OS
# download the wheel
gdown https://drive.google.com/uc?id=1gAxP9q94pMeHQ1XOvLHqjEcmgyxjlY_R
# install PyTorch 1.11.0
sudo -H pip3 install torch-1.11.0a0+gitbc2c6ed-cp39-cp39-linux_aarch64.whl
# clean up
rm torch-1.11.0a0+gitbc2c6ed-cp39-cp39m-linux_aarch64.whl

Tras una instalación exitosa, puedes revisar PyTorch usando los siguientes comandos después de iniciar python:

import torch as tr
print(tr.__version__)

Aviso: Los paquetes PyTorch wheels para Raspberry Pi 4 se encuentran en https://github.com/Qengineering/PyTorch-Raspberry-Pi-64-OS

Tritonclient

Ejecura el comando pip3 install tritonclient[all] para descargar Tritonclient.

TorchVision

Después de instalar PyTorch, podemos continuar con la instalación de TorchVision. Aquí están los comandos:

# download the wheel
gdown https://drive.google.com/uc?id=1oDsJEHoVNEXe53S9f1zEzx9UZCFWbExh
# install torchvision 0.12.0
sudo -H pip3 install torchvision-0.12.0a0+9b5a3fe-cp39-cp39-linux_aarch64.whl
# clean up
rm torchvision-0.12.0a0+9b5a3fe-cp39-cp39-linux_aarch64.whl

OpenCV

Puedes directamente ejecutar pip3 install opencv-python para instalar OpenCV:

Configuración de la reComputer J1010

En este proyecto, desplegaremos Triton Inference Server en el reComputer J1010. Para mejorar la interactividad y la conveniencia del despliegue del modelo entrenado, convertiremos el modelo al formato ONNX.

Paso 1. Instala Jetpack 4.6.1 en la reComputer J1010.

Paso 2. Crea un nuevo folder “opi/1” in “home/server/docs/examples/model_repository ”. Luego descarga el modelo entrenado y convertido model.onnx y colocalo en el folder “1”.

Si necesitas otro servidor general, sigue los siguientes pasos.

Abre una nueva terminal y ejectuta:

git clone https://github.com/triton-inference-server/server
cd ~/server/docs/examples
sh fetch_models.sh

Paso 3. Instala la versión de Triton para JetPack 4.6.1, que se proporciona en el archivo tar adjunto: tritonserver2.21.0-jetpack5.0.tgz.

El archivo tar aquí contiene el ejecutable del servidor Triton y las bibliotecas compartidas, incluidas las bibliotecas cliente de C++ y Python, así como ejemplos. Para obtener más información sobre cómo instalar y usar Triton en JetPack, puedes consultar aquí.

Paso 4. Ejecuta el siguiente comando:


mkdir ~/TritonServer && tar -xzvf tritonserver2.19.0-jetpack4.6.1.tgz -C ~/TritonServer
cd ~/TritonServer/bin
./tritonserver --model-repository=/home/seeed/server/docs/examples/model_repository --backend-directory=/home/seeed/TritonServer/backends --strict-model-config=false --min-supported-compute-capability=5.3

Hemos terminado con todos los preparativos.

Operando el programa.

Dado que todos los entornos necesarios están desplegados, podemos ejecutar nuestro proyecto siguiendo los siguientes pasos.

Paso 1. Descarga el modelo y los archivos necesarios.

  1. Clona el modulo de GitHub.

Abre una nueva terminal y ejecuta los siguientes comandos.

git clone https://github.com/LemonCANDY42/Seeed_SMG_AIOT.git
cd Seeed_SMG_AIOT/
git clone https://github.com/LemonCANDY42/OPIXray.git
  1. Crea una nueva carpeta llamada "weights" para almacenar el peso entrenado de este algoritmo "DOAM.pth". Descarga el archivo de pesos y ejecuta:
  • cd OPIXray/DOAM
  • mkdir weights
  1. Crea un nuevo folder llamado “Dataset” para almacenar el conjunto de datos Xray.

Paso 2. Corriendo el modelo de inferencia.

Ejecuta python OPIXray_grpc_image_client.py -u 192.168.8.230:8001 -m opi Dataset

El resultado se mostrará como en la siguiente figura:

Solución de problemas

Cuando montes el Triton server, puedes encontrarte los siguientes errores:

  1. Si el error es libb64.so.0d, ejecuta: sudo apt-get install libb64-0d
  1. Si el error es libre2.so.2, ejecuta: sudo apt-get install libre2-dev
  1. Si el error es: creating server: Internal - failed to load all models, ejecuta: --exit-on-error=false

Soporte Tech y discusión del producto

¡Gracias por elegir nuestros productos! Estamos aquí para darte soporte y asegurar que tu experiencia con nuestros productos sea la mejor posible. Tenemos diversos canales de comunicación para adaptarnos distintas preferencias y necesidades.

Loading Comments...