Skip to main content

Instalación de InsightFace con ONNX Runtime GPU en Jetson Orin Nano (JetPack 6.2)

Fecha: 2025-06-09
Dispositivo: Jetson Orin Nano
Sistema operativo: Ubuntu 22.04
Entorno Python: Python 3.10 + Virtualenv
Arquitectura: ARM64
GPU: CUDA + TensorRT (via JetPack 6.2)


🔧 Paso 1: Crear entorno virtual con Python 3.10

sudo apt update
sudo apt install python3.10-venv python3-pip -y

python3.10 -m venv insight-env
source insight-env/bin/activate

📦 Paso 2: Actualizar herramientas de empaquetado

pip install --upgrade pip setuptools wheel

🧱 Paso 3: Instalar dependencias del sistema

sudo apt install -y \
libopenblas-dev libopencv-dev build-essential cmake \
libprotobuf-dev protobuf-compiler \
libjpeg-dev libpng-dev libtiff-dev \
libavcodec-dev libavformat-dev libswscale-dev \
wget unzip

🚀 Paso 4: Instalar ONNX Runtime GPU compatible con ARM64

wget https://github.com/ultralytics/assets/releases/download/v0.0.0/onnxruntime_gpu-1.20.0-cp310-cp310-linux_aarch64.whl
pip install onnxruntime_gpu-1.20.0-cp310-cp310-linux_aarch64.whl
import onnxruntime as ort

print("🟢 Verificando proveedores disponibles para ONNX Runtime...\n")
providers = ort.get_available_providers()
print("Proveedores disponibles:", providers)

if "CUDAExecutionProvider" in providers:
print("✅ ¡CUDAExecutionProvider está disponible y activo!")
else:
print("❌ CUDAExecutionProvider NO está disponible.")


🧮 Paso 5: Fijar versión de NumPy compatible

pip install numpy==1.23.5

Nota: versiones más nuevas pueden romper compatibilidad con módulos compilados con NumPy 1.x


🤖 Paso 6: Instalar InsightFace sin dependencias automáticas

pip install insightface --no-deps

🧩 Paso 7: Instalar dependencias necesarias manualmente

Recomendado mínimo para uso en inferencia:

pip install scipy scikit-learn opencv-python onnx onnxsim faiss-cpu
pip install cython easydict Pillow requests scikit-image

(Opcional) Otras dependencias para visualización o entrenamiento:

pip install albumentations matplotlib prettytable tqdm

🧪 Paso 8: Script de prueba

Crea el archivo test_insightface.py:

import insightface
from insightface.app import FaceAnalysis
import onnxruntime as ort
import cv2

print("🧠 Proveedores ONNX disponibles:", ort.get_available_providers())

app = FaceAnalysis(providers=['CUDAExecutionProvider'])
app.prepare(ctx_id=0)

img = cv2.imread("tu_foto.jpg")
faces = app.get(img)

print(f"🧍‍♂️ Caras detectadas: {len(faces)}")

✅ Ejecución del test

python test_insightface.py

Requiere una imagen llamada tu_foto.jpg en el mismo directorio.


🧠 Notas finales

  • Mantener numpy==1.23.5 para asegurar compatibilidad con módulos compilados.
  • Usar otro entorno virtual para librerías modernas como streamlit, que requieren numpy >= 1.24.
  • Este flujo es estable y optimizado para Jetson Orin Nano con JetPack 6.2.

**Script Prueba

import insightface
from insightface.app import FaceAnalysis
import onnxruntime as ort
import cv2
import matplotlib.pyplot as plt

# Verifica proveedores disponibles
print("🧠 Proveedores ONNX disponibles:", ort.get_available_providers())

# Inicializar el detector facial con GPU
app = FaceAnalysis(providers=['CUDAExecutionProvider'])
app.prepare(ctx_id=0)

# Cargar la imagen
img = cv2.imread("tu_foto.jpg")
if img is None:
raise FileNotFoundError("No se encontró la imagen 'tu_foto.jpg' en el directorio actual.")

# Detectar rostros
faces = app.get(img)
print(f"🧍‍♂️ Caras detectadas: {len(faces)}")

# Dibujar recuadros
for face in faces:
box = face.bbox.astype(int)
cv2.rectangle(img, (box[0], box[1]), (box[2], box[3]), (0, 255, 0), 2)

# Mostrar la imagen con matplotlib (convertida a RGB)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb)
plt.title("Rostros detectados")
plt.axis('off')
plt.show()

Configuración completa de MySQL en Jetson Orin Nano (Ubuntu 22.04)

Este documento describe los pasos realizados para instalar, configurar y utilizar MySQL en un dispositivo Jetson Orin Nano con Ubuntu 22.04.


✅ Paso 1: Instalación de MySQL Server

Actualizar paquetes e instalar MySQL:

sudo apt update
sudo apt install mysql-server -y

✅ Paso 2: Configuración de seguridad

Ejecutar el script seguro de configuración inicial:

sudo mysql_secure_installation

Recomendaciones:

  • ¿Validar contraseñas?: n
  • ¿Eliminar usuarios anónimos?: Y
  • ¿Deshabilitar acceso root remoto?: Y
  • ¿Eliminar base de datos de prueba?: Y
  • ¿Recargar tablas de privilegios?: Y

✅ Paso 3: Crear un usuario con contraseña

Entrar como root:

sudo mysql

Dentro del prompt de MySQL:

CREATE USER 'mar'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'mar'@'localhost';
FLUSH PRIVILEGES;
EXIT;

✅ Paso 4: Crear archivo SQL con base de datos y tabla

Instalar nano si no estaba:

sudo apt install nano -y

Crear el archivo:

nano db.sql

Contenido del archivo:

CREATE DATABASE IF NOT EXISTS ucssdb;

USE ucssdb;

CREATE TABLE IF NOT EXISTS estudiantes (
id INT AUTO_INCREMENT PRIMARY KEY,
codigo VARCHAR(20) UNIQUE NOT NULL,
nombre VARCHAR(100) NOT NULL,
facultad VARCHAR(50),
carrera VARCHAR(50),
embedding LONGBLOB
);

Guardar con Ctrl + O → Enter
Salir con Ctrl + X


✅ Paso 5: Ejecutar el archivo SQL

mysql -u mar -p < db.sql

Ingresar la contraseña: 123456


✅ Paso 6: Verificar que todo esté bien

Entrar al cliente MySQL:

mysql -u mar -p

Y dentro:

SHOW DATABASES;
USE ucssdb;
SHOW TABLES;
DESCRIBE estudiantes;

📌 Notas

  • El usuario mar tiene acceso total y puede ser usado desde Python o cualquier aplicación.
  • La tabla estudiantes fue creada para almacenar información de usuarios y sus embeddings como LONGBLOB.