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.jpgen el mismo directorio.
🧠 Notas finales
- Mantener
numpy==1.23.5para asegurar compatibilidad con módulos compilados. - Usar otro entorno virtual para librerías modernas como
streamlit, que requierennumpy >= 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
martiene acceso total y puede ser usado desde Python o cualquier aplicación. - La tabla
estudiantesfue creada para almacenar información de usuarios y sus embeddings comoLONGBLOB.