Install Packages for Jetson Nano

Nuestra meta es instalar la siguiente paqueteria:

    -TensorFlow 1.15.5
    --PyTorch v1.10.0
    --torchvision v0.11.0
    -torchaudio v0.10.0
    --onnx 1.11.0
    --CuPy 9.2.0
    --numpy 1.19.5
    --numba 0.53.1
    --OpenCV 4.5.0 (with CUDA)
    --pandas 1.1.5
    --scipy 1.5.4
    --scikit-learn 0.24.2
    --JupyterLab 2.2.9
    -DarkNet

Opcional:

  • ROS
  • Darknet
  • Deepstream 6.0.1
  • OpenCV con soporte CUDA
  • Go Lang para ARM
  • Julia for ARM

Paso 1. Actualizar el sistema

sudo apt-get update

Confirmamos el upgrade

sudo apt-get -y upgrade && sudo apt-get install python-pip python3-pip

Por defecto el soporte para conectar HDD externos no viene instalado por default, la siguiente instrucción lo hara:

sudo apt install exfat-fuse exfat-utils

Finalmente, removeremos LibreOffice y Thunderbird:

sudo apt remove --purge libreoffice* && sudo apt remove --purge thunderbird*
sudo apt autoremove

A continuación instalaremos JTOP, similar a HTOP, una herramienta capaz de monitorizar los recursos de nuestro sistema de forma visual.

sudo pip3 install -U jetson-stats

Y eso es todo, finalmente para probar que se está ejecutando correctamente, lo llamaremos con el siguiente comando. (Después de realizar un reinicio)

sudo reboot

Una vez reiniciado esperamos unos minutos y accedemos de nuevo con SSH y verificamos que Jtop se haya instalado.

jtop

OpenCV con soporte CUDA

Los siguientes pasos fueron tomados del excelente trabajo de Q-Enginering

Revisar Memoria Disponible

free -m

Se requieren 6.5 GB! Se recomienda ampliar a 4GB de acuerdo a los siguientes pasos.

sudo systemctl disable nvzramconfig
sudo fallocate -l 4G /mnt/4GB.swap
sudo mkswap /mnt/4GB.swap
sudo swapon /mnt/4GB.swap

Abrir fstab

sudo vim /etc/fstab

Al final agregar esta línea para que se quede establecido de forma permanente en la Jetson.

/mnt/4GB.swap none swap sw 0 0

Obtener el script de GitHub

wget https://github.com/Qengineering/Install-OpenCV-Jetson-Nano/raw/main/OpenCV-4-5-0.sh

Otorgar permisos al script

sudo chmod 755 ./OpenCV-4-5-0.sh

Ejecutar

./OpenCV-4-5-0.sh

Al terminar

rm OpenCV-4-5-0.sh

Limpiar lo que bajamos (Ahorramos 275 GB de espacio)

sudo rm -rf ~/opencv
sudo rm -rf ~/opencv_contrib

Instalar numba

git clone https://github.com/wjakob/tbb.git
cd tbb/build
cmake ..
make -j
sudo make install
sudo apt install llvm-10
export LLVM_CONFIG=/usr/bin/llvm-config-10
pip3 install llvmlite
pip3 install numba

Instalar Pytorch

Esta es la ultima version de Pytorch que soporta Python 3.6

wget https://nvidia.box.com/shared/static/fjtbno0vpo676a25cgvuqc1wty0fkkg6.whl -O torch-1.10.0-cp36-cp36m-linux_aarch64.whl
sudo apt-get install libopenblas-base libopenmpi-dev libomp-dev
pip3 install 'Cython<3'
pip3 install numpy torch-1.10.0-cp36-cp36m-linux_aarch64.whl

La versión de Torchvision para este caso seria:

sudo -H pip3 install pillow
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libopenblas-dev libavcodec-dev libavformat-dev libswscale-dev
git clone --branch v0.11.1 https://github.com/pytorch/vision torchvision
export BUILD_VERSION=0.11.1
cd torchvision
python3 setup.py install --user
cd ../  # attempting to load torchvision from build dir will result in import error
pip install 'pillow<7' # always needed for Python 2.7, not needed torchvision v0.5.0+ with Python 3.6

Comprobar la instalación directamente en Python

import torch
print(torch.__version__)
print('CUDA available: ' + str(torch.cuda.is_available()))
print('cuDNN version: ' + str(torch.backends.cudnn.version()))
a = torch.cuda.FloatTensor(2).zero_()
print('Tensor a = ' + str(a))
b = torch.randn(2).cuda()
print('Tensor b = ' + str(b))
c = a + b
print('Tensor c = ' + str(c))

import torchvision
print(torchvision.__version__)

Instalar Numpy

sudo pip3 install --verbose numpy==1.19.5

Instalar Pandas

sudo pip3 install --verbose pandas==1.1.5

Instalar CuPy (Casi 2 horas)

sudo pip3 install --verbose cupy==9.2.0

Install Scikit-learn 0.24

sudo -H pip3 install scikit-learn==0.24.2

Install SciPy 1.5.4

sudo -H pip3 install scipy==1.5.4

Install Virtual Enviroment on Python

sudo apt-get install python3-venv

Install Virtual JupyterLab

pip3 install jupyterlab==2.2.9

Install Onnx

sudo -H pip3 install --verbose onnx==1.11.0

Instalar GO en ARM

Esta parte es completamente opcional, instalar GO y puede ser una guía genérica para instalar este lenguaje de programación que desafortunadamente no tiene soporte con CUDA a pesar de funcionar muy eficientemente.

Lo primero es ubicarse en una carpeta temporal como Downloads:

sudo reboot
cd Downloads
wget https://go.dev/dl/go1.23.5.linux-arm64.tar.gz

Extraemos el paquete:

sudo tar -C /usr/local -xzf ./go1.23.5.linux-arm64.tar.gz

Añade la ruta a go en tu archivo .bashrc. Bash

echo 'export PATH="$PATH:/usr/local/go/bin"' >> ~/.bashrc
source ~/.bashrc

Para verificar la instalación ejecutamos:

go version

Finalmente se deberá obtener la salida como esta para asegurarnos de que se instaló correctamente:

go version go1.23.5 linux/arm64