Desarrollo y Ejecución de Modelos de IA
Jetson Nano
1. Instalación Jetpack y Configuración Inicial
Tutorial en YouTube - Click aquí
2. Detección de Objetos Hello World desde Docker
Tutorial en YouTube - Click aquí
git clone --recursive https://github.com/dusty-nv/jetson-inferencecd jetson-inferencedocker/run.shcd build/aarch64/binPara ejecutar los demos en la carpeta bin:
./video-viewer /dev/video0./segnet /dev/video0./detectnet /dev/video0./depthnet /dev/video0./posenet /dev/video03. Entrenamiento de SSD-Mobilenet
Tutorial en YouTube - Click aquí
Configuración de Memoria Swap
sudo systemctl disable nvzramconfigsudo fallocate -l 4G /mnt/4GB.swapsudo mkswap /mnt/4GB.swapsudo swapon /mnt/4GB.swapAgregar la siguiente línea al final del archivo /etc/fstab para que los cambios sean permanentes:
/mnt/4GB.swap none swap sw 0 0Descarga de Imágenes para Entrenamiento
python3 open_images_downloader.py --max-images=2500 --class-names "Apple,Orange,Banana,Strawberry,Grape,Pear,Pineapple,Watermelon" --data=data/fruitEntrenamiento de la Red
python3 train_ssd.py --data=data/fruit --model-dir=models/fruit --batch-size=4 --epochs=30Conversión del Modelo a ONNX para TensorRT
python3 onnx_export.py --model-dir=models/fruitPrueba del Modelo en Imágenes
detectnet --model=models/fruit/ssd-mobilenet.onnx --labels=models/fruit/labels.txt --input-blob=input_0 --output-cvg=scores --output-bbox=boxes "/jetson-inference/python/training/detection/ssd/data/fruit/test/*.jpg" /jetson-inference/data/images/test/fruit_%i.jpgPrueba en Tiempo Real con Webcam
detectnet --model=models/fruit/ssd-mobilenet.onnx --labels=models/fruit/labels.txt --input-blob=input_0 --output-cvg=scores --output-bbox=boxes /dev/video04. Entrenamiento para Detección de Mascarillas + Etiquetado de Dataset
Tutorial en YouTube - Click aquí
Etiquetado del Dataset
camera-capture /dev/video0Entrenamiento de la Red
python3 train_ssd.py --dataset-type=voc --data=data/Mask/ --model-dir=models/Mask --batch-size=2 --epochs=10Conversión del Modelo a ONNX para TensorRT
python3 onnx_export.py --model-dir=models/Mask/Prueba en Tiempo Real con Webcam
detectnet --model=models/Mask/ssd-mobilenet.onnx --labels=models/Mask/labels.txt --input-blob=input_0 --output-cvg=scores --output-bbox=boxes /dev/video05. Construcción de Código para Detección de Objetos en Jetson Nano
Tutorial en YouTube - Click aquí
Montar el Docker con el Modelo Entrenado
sudo mkdir my_projectsudo chmod -R a+rwx my_projectcd jetson-inferencedocker/run.sh --volume ~/my_project:/my_projectCódigo en Python (my_detection.py)
import jetson.inferenceimport jetson.utils
net = jetson.inference.detectNet("ssd-mobilenet-v2", [ "--model=/my_project/ssd-mobilenet.onnx", "--labels=/my_project/labels.txt", "--input-blob=input_0", "--output-cvg=scores", "--output-bbox=boxes"])
camera = jetson.utils.videoSource("/dev/video0")display = jetson.utils.videoOutput("display://0")
while display.IsStreaming(): img = camera.Capture() detections = net.Detect(img) display.Render(img) display.SetStatus("Object Detection | Network {:.0f} FPS".format(net.GetNetworkFPS()))Prueba del Código
python3 /my_project/my_detection.py6. Entrenamiento de Modelo SSD en Google Colab
docker/run.sh --volume ~/my_project:/my_projectpython3 onnx_export.py --model-dir=models/Chessdetectnet --model=models/Chess/ssd-mobilenet.onnx --labels=models/Chess/labels.txt --input-blob=input_0 --output-cvg=scores --output-bbox=boxes /dev/video0python3 /my_project/Chess.py7. Inferencia de Modelo SSD en Video (.mp4) con Modificación de Threshold
Captura de Video desde Archivo
camera = cv2.VideoCapture("/my_project/video1.mp4")Modificación del Threshold usando argparse
python3 /my_project/Chess.py --threshold 0.7