Guida rapida: NVIDIA Jetson con Ultralytics YOLOv8
Questa guida completa fornisce una guida dettagliata per l'implementazione di Ultralytics YOLOv8 sui dispositivi NVIDIA Jetson. Inoltre, mostra i benchmark delle prestazioni per dimostrare le capacità di YOLOv8 su questi piccoli e potenti dispositivi.
Guarda: Come configurare NVIDIA Jetson con Ultralytics YOLOv8
Nota
Questa guida è stata testata sia con Seeed Studio reComputer J4012 che si basa su NVIDIA Jetson Orin NX 16GB con l'ultima release stabile di JetPack JP6.0 e JP5.1.3, sia con Seeed Studio reComputer J1020 v2 che si basa su NVIDIA Jetson Nano 4GB con la release di JetPack JP4.6.1. Si prevede che funzionerà su tutta la gamma di hardware NVIDIA Jetson, compresi quelli più recenti e quelli legacy.
Cos'è NVIDIA Jetson?
NVIDIA Jetson is a series of embedded computing boards designed to bring accelerated AI (artificial intelligence) computing to edge devices. These compact and powerful devices are built around NVIDIA's GPU architecture and are capable of running complex AI algorithms and deep learning models directly on the device, without needing to rely on cloud computing resources. Jetson boards are often used in robotics, autonomous vehicles, industrial automation, and other applications where AI inference needs to be performed locally with low latency and high efficiency. Additionally, these boards are based on the ARM64 architecture and runs on lower power compared to traditional GPU computing devices.
NVIDIA Confronto tra le serie Jetson
Jetson Orin è l'ultima iterazione della famiglia NVIDIA Jetson basata sull'architettura NVIDIA Ampere, che offre prestazioni AI drasticamente migliorate rispetto alle generazioni precedenti. La tabella seguente mette a confronto alcuni dei dispositivi Jetson presenti nell'ecosistema.
Jetson AGX Orin 64GB | Jetson Orin NX 16GB | Jetson Orin Nano 8GB | Jetson AGX Xavier | Jetson Xavier NX | Jetson Nano | |
---|---|---|---|---|---|---|
Prestazioni AI | 275 TOPS | 100 TOPS | 40 TOP | 32 TOPS | 21 TOPS | 472 GFLOPS |
GPU | 2048-core NVIDIA Architettura Ampere GPU con 64 Tensor core | 1024 core NVIDIA Architettura ad Ampere GPU con 32 core Tensor | 1024 core NVIDIA Architettura ad Ampere GPU con 32 core Tensor | 512 core NVIDIA Architettura Volta GPU con 64 core Tensor | 384 core NVIDIA Architettura Volta™ GPU con 48 Tensor core | 128 core NVIDIA Architettura Maxwell GPU |
GPU Frequenza massima | 1,3 GHz | 918 MHz | 625 MHz | 1377 MHz | 1100 MHz | 921MHz |
CPU | 12-core NVIDIA Arm® Cortex A78AE v8.2 64-bit CPU 3MB L2 + 6MB L3 | 8-core NVIDIA Arm® Cortex A78AE v8.2 64-bit CPU 2MB L2 + 4MB L3 | 6-core Arm® Cortex®-A78AE v8.2 64-bit CPU 1.5MB L2 + 4MB L3 | 8-core NVIDIA Carmel Arm®v8.2 64-bit CPU 8MB L2 + 4MB L3 | 6-core NVIDIA Carmel Arm®v8.2 64-bit CPU 6MB L2 + 4MB L3 | Processore Quad-Core Arm® Cortex®-A57 MPCore |
CPU Frequenza massima | 2,2 GHz | 2,0 GHz | 1,5 GHz | 2,2 GHz | 1,9 GHz | 1.43GHz |
Memoria | 64GB 256-bit LPDDR5 204.8GB/s | 16GB 128-bit LPDDR5 102,4GB/s | 8GB 128-bit LPDDR5 68 GB/s | 32GB 256-bit LPDDR4x 136.5GB/s | 8GB 128-bit LPDDR4x 59,7GB/s | 4GB 64-bit LPDDR4 25.6GB/s" |
Per una tabella comparativa più dettagliata, visita la sezione Specifiche tecniche della pagina ufficiale di NVIDIA Jetson.
Cos'è NVIDIA JetPack?
NVIDIA JetPack SDK powering the Jetson modules is the most comprehensive solution and provides full development environment for building end-to-end accelerated AI applications and shortens time to market. JetPack includes Jetson Linux with bootloader, Linux kernel, Ubuntu desktop environment, and a complete set of libraries for acceleration of GPU computing, multimedia, graphics, and computer vision. It also includes samples, documentation, and developer tools for both host computer and developer kit, and supports higher level SDKs such as DeepStream for streaming video analytics, Isaac for robotics, and Riva for conversational AI.
Flash JetPack su NVIDIA Jetson
Il primo passo da compiere dopo aver messo le mani su un dispositivo NVIDIA Jetson è quello di flashare NVIDIA JetPack sul dispositivo. Esistono diversi modi per flashare i dispositivi NVIDIA Jetson.
- Se possiedi un kit di sviluppo ufficiale NVIDIA , come il Jetson Orin Nano Developer Kit, puoi scaricare un'immagine e preparare una scheda SD con JetPack per avviare il dispositivo.
- Se possiedi un altro kit di sviluppo NVIDIA , puoi flashare JetPack sul dispositivo utilizzando SDK Manager.
- Se possiedi un dispositivo Seeed Studio reComputer J4012, puoi flashare JetPack sull'SSD incluso e se possiedi un dispositivo Seeed Studio reComputer J1020 v2, puoi flashare JetPack sull'eMMC/SSD.
- Se possiedi un altro dispositivo di terze parti alimentato dal modulo NVIDIA Jetson, ti consigliamo di seguire il flashing da riga di comando.
Nota
Per i metodi 3 e 4, dopo aver flashato il sistema e avviato il dispositivo, inserisci "sudo apt update && sudo apt install nvidia-jetpack -y" sul terminale del dispositivo per installare tutti i restanti componenti di JetPack necessari.
Supporto JetPack basato sul dispositivo Jetson
La tabella seguente evidenzia le versioni di NVIDIA JetPack supportate dai diversi dispositivi NVIDIA Jetson.
JetPack 4 | JetPack 5 | JetPack 6 | |
---|---|---|---|
Jetson Nano | ✅ | ❌ | ❌ |
Jetson TX2 | ✅ | ❌ | ❌ |
Jetson Xavier NX | ✅ | ✅ | ❌ |
Jetson AGX Xavier | ✅ | ✅ | ❌ |
Jetson AGX Orin | ❌ | ✅ | ✅ |
Jetson Orin NX | ❌ | ✅ | ✅ |
Jetson Orin Nano | ❌ | ✅ | ✅ |
Avvio rapido con Docker
Il modo più veloce per iniziare a utilizzare Ultralytics YOLOv8 su NVIDIA Jetson è quello di utilizzare le immagini docker precostituite per Jetson. Fai riferimento alla tabella qui sopra e scegli la versione di JetPack in base al dispositivo Jetson che possiedi.
Dopo aver fatto ciò, passa alla sezione Utilizzare TensorRT su NVIDIA Jetson.
Iniziare con l'installazione nativa
Per un'installazione nativa senza Docker, fai riferimento ai passaggi seguenti.
Esegui su JetPack 6.x
Installa il pacchetto Ultralytics
Here we will install Ultralytics package on the Jetson with optional dependencies so that we can export the PyTorch models to other different formats. We will mainly focus on NVIDIA TensorRT exports because TensorRT will make sure we can get the maximum performance out of the Jetson devices.
-
Aggiornare l'elenco dei pacchetti, installare pip e passare all'ultimo aggiornamento
-
Installa
ultralytics
pacchetto pip con dipendenze opzionali -
Riavvia il dispositivo
Installa PyTorch e Torchvision
L'installazione di ultralytics di cui sopra installerà Torch e Torchvision. Tuttavia, questi due pacchetti installati tramite pip non sono compatibili con la piattaforma Jetson, basata su architettura ARM64. Pertanto, dobbiamo installare manualmente PyTorch pip wheel e compilare/installare Torchvision dai sorgenti.
Installa torch 2.3.0
e torchvision 0.18
secondo JP6.0
sudo apt-get install libopenmpi-dev libopenblas-base libomp-dev -y
pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torch-2.3.0-cp310-cp310-linux_aarch64.whl
pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torchvision-0.18.0a0+6043bc2-cp310-cp310-linux_aarch64.whl
Visita la paginaPyTorch per Jetson per accedere a tutte le versioni di PyTorch per le diverse versioni di JetPack. Per un elenco più dettagliato della compatibilità di PyTorch e Torchvision, visita la paginaPyTorch e Torchvision.
Installa onnxruntime-gpu
Il onnxruntime-gpu il pacchetto ospitato su PyPI non ha aarch64
per Jetson. Quindi dobbiamo installare manualmente questo pacchetto. Questo pacchetto è necessario per alcune esportazioni.
Tutti diversi onnxruntime-gpu
I pacchetti corrispondenti alle diverse versioni di JetPack e Python sono elencati qui. Tuttavia, qui scaricheremo e installeremo onnxruntime-gpu 1.18.0
con Python3.10
supporto.
wget https://nvidia.box.com/shared/static/48dtuob7meiw6ebgfsfqakc9vse62sg4.whl -O onnxruntime_gpu-1.18.0-cp310-cp310-linux_aarch64.whl
pip install onnxruntime_gpu-1.18.0-cp310-cp310-linux_aarch64.whl
Nota
onnxruntime-gpu
riporterà automaticamente la versione di numpy all'ultima. Quindi è necessario reinstallare numpy su 1.23.5
per risolvere un problema eseguendo:
pip install numpy==1.23.5
Esegui su JetPack 5.x
Installa il pacchetto Ultralytics
Qui installeremo il pacchetto Ultralytics su Jetson con le dipendenze opzionali in modo da poter esportare i modelli PyTorch in altri formati diversi. Ci concentreremo principalmente sulle esportazioni diNVIDIA TensorRT perché TensorRT ci permetterà di ottenere le massime prestazioni dai dispositivi Jetson.
-
Aggiornare l'elenco dei pacchetti, installare pip e passare all'ultimo aggiornamento
-
Installa
ultralytics
pacchetto pip con dipendenze opzionali -
Riavvia il dispositivo
Installa PyTorch e Torchvision
L'installazione di ultralytics di cui sopra installerà Torch e Torchvision. Tuttavia, questi due pacchetti installati tramite pip non sono compatibili con la piattaforma Jetson, basata su architettura ARM64. Pertanto, dobbiamo installare manualmente PyTorch pip wheel e compilare/installare Torchvision dai sorgenti.
-
Disinstalla i siti PyTorch e Torchvision attualmente installati
-
Installa PyTorch 2.1.0 come da JP5.1.3
sudo apt-get install -y libopenblas-base libopenmpi-dev wget https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl -O torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl pip install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
-
Installa Torchvision v0.16.2 secondo PyTorch v2.1.0
Visita la paginaPyTorch per Jetson per accedere a tutte le versioni di PyTorch per le diverse versioni di JetPack. Per un elenco più dettagliato della compatibilità di PyTorch e Torchvision, visita la paginaPyTorch e Torchvision.
Installa onnxruntime-gpu
Il onnxruntime-gpu il pacchetto ospitato su PyPI non ha aarch64
per Jetson. Quindi dobbiamo installare manualmente questo pacchetto. Questo pacchetto è necessario per alcune esportazioni.
Tutti diversi onnxruntime-gpu
I pacchetti corrispondenti alle diverse versioni di JetPack e Python sono elencati qui. Tuttavia, qui scaricheremo e installeremo onnxruntime-gpu 1.17.0
con Python3.8
supporto.
wget https://nvidia.box.com/shared/static/zostg6agm00fb6t5uisw51qi6kpcuwzd.whl -O onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
pip install onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
Nota
onnxruntime-gpu
riporterà automaticamente la versione di numpy all'ultima. Quindi è necessario reinstallare numpy su 1.23.5
per risolvere un problema eseguendo:
pip install numpy==1.23.5
Usa TensorRT su NVIDIA Jetson
Tra tutti i formati di esportazione dei modelli supportati da Ultralytics, TensorRT offre le migliori prestazioni di inferenza quando si lavora con dispositivi NVIDIA Jetson e il nostro consiglio è di utilizzare TensorRT con Jetson. Abbiamo anche un documento dettagliato su TensorRT qui.
Convertire il modello in TensorRT ed eseguire l'inferenza
Il modello YOLOv8n in formato PyTorch viene convertito in TensorRT per eseguire l'inferenza con il modello esportato.
Esempio
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Export the model
model.export(format="engine") # creates 'yolov8n.engine'
# Load the exported TensorRT model
trt_model = YOLO("yolov8n.engine")
# Run inference
results = trt_model("https://ultralytics.com/images/bus.jpg")
Nota
Visita la pagina Esportazione per accedere ad argomenti aggiuntivi per l'esportazione di modelli in diversi formati.
NVIDIA Benchmark di Jetson Orin YOLOv8
YOLOv8 benchmarks were run by the Ultralytics team on 10 different model formats measuring speed and accuracy: PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, NCNN. Benchmarks were run on Seeed Studio reComputer J4012 powered by Jetson Orin NX 16GB device at FP32 precision with default input image size of 640.
Tabella di confronto
Anche se tutti i modelli di esportazione funzionano con NVIDIA Jetson, abbiamo incluso solo PyTorch, TorchScript, TensorRT nella tabella di confronto qui sotto perché utilizzano GPU su Jetson e garantiscono i migliori risultati. Tutte le altre esportazioni utilizzano solo CPU e le prestazioni non sono così buone come le tre precedenti. Puoi trovare i benchmark di tutte le esportazioni nella sezione successiva a questo grafico.
Tabella comparativa dettagliata
La tabella seguente rappresenta i risultati dei benchmark per cinque diversi modelli (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) in dieci formati diversi (PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel, TF GraphDef, TF Lite PaddlePaddle, NCNN), fornendoci lo stato, le dimensioni, la metrica mAP50-95(B) e il tempo di inferenza per ogni combinazione.
Prestazioni
Formato | Stato | Dimensione su disco (MB) | mAP50-95(B) | Tempo di inferenza (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 6.2 | 0.6381 | 14.3 |
TorchScript | ✅ | 12.4 | 0.6117 | 13.3 |
ONNX | ✅ | 12.2 | 0.6092 | 70.6 |
OpenVINO | ✅ | 12.3 | 0.6092 | 104.2 |
TensorRT (FP32) | ✅ | 16.1 | 0.6091 | 8.01 |
TensorRT (FP16) | ✅ | 9.2 | 0.6093 | 4.55 |
TensorRT (INT8) | ✅ | 5.9 | 0.2759 | 4.09 |
TF SavedModel | ✅ | 30.6 | 0.6092 | 141.74 |
TF GraphDef | ✅ | 12.3 | 0.6092 | 199.93 |
TF Lite | ✅ | 12.3 | 0.6092 | 349.18 |
PaddlePaddle | ✅ | 24.4 | 0.6030 | 555 |
NCNN | ✅ | 12.2 | 0.6092 | 32 |
Formato | Stato | Dimensione su disco (MB) | mAP50-95(B) | Tempo di inferenza (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 21.5 | 0.6967 | 18 |
TorchScript | ✅ | 43.0 | 0.7136 | 23.81 |
ONNX | ✅ | 42.8 | 0.7136 | 185.55 |
OpenVINO | ✅ | 42.9 | 0.7136 | 243.97 |
TensorRT (FP32) | ✅ | 46.4 | 0.7136 | 14.01 |
TensorRT (FP16) | ✅ | 24.2 | 0.722 | 7.16 |
TensorRT (INT8) | ✅ | 13.7 | 0.4233 | 5.49 |
TF SavedModel | ✅ | 107 | 0.7136 | 260.03 |
TF GraphDef | ✅ | 42.8 | 0.7136 | 423.4 |
TF Lite | ✅ | 42.8 | 0.7136 | 1046.64 |
PaddlePaddle | ✅ | 85.5 | 0.7140 | 1464 |
NCNN | ✅ | 42.7 | 0.7200 | 63 |
Formato | Stato | Dimensione su disco (MB) | mAP50-95(B) | Tempo di inferenza (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 49.7 | 0.7370 | 36.4 |
TorchScript | ✅ | 99.2 | 0.7285 | 53.58 |
ONNX | ✅ | 99 | 0.7280 | 452.09 |
OpenVINO | ✅ | 99.1 | 0.7280 | 544.36 |
TensorRT (FP32) | ✅ | 102.4 | 0.7285 | 31.51 |
TensorRT (FP16) | ✅ | 52.6 | 0.7324 | 14.88 |
TensorRT (INT8) | ✅ | 28.6 | 0.3283 | 10.89 |
TF SavedModel | ✅ | 247.5 | 0.7280 | 543.65 |
TF GraphDef | ✅ | 99 | 0.7280 | 906.63 |
TF Lite | ✅ | 99 | 0.7280 | 2758.08 |
PaddlePaddle | ✅ | 197.9 | 0.7280 | 3678 |
NCNN | ✅ | 98.9 | 0.7260 | 135 |
Formato | Stato | Dimensione su disco (MB) | mAP50-95(B) | Tempo di inferenza (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 83.7 | 0.7768 | 61.3 |
TorchScript | ✅ | 167.2 | 0.7554 | 87.9 |
ONNX | ✅ | 166.8 | 0.7551 | 852.29 |
OpenVINO | ✅ | 167 | 0.7551 | 1012.6 |
TensorRT (FP32) | ✅ | 170.5 | 0.7554 | 49.79 |
TensorRT (FP16) | ✅ | 86.1 | 0.7535 | 22.89 |
TensorRT (INT8) | ✅ | 46.4 | 0.4048 | 14.61 |
TF SavedModel | ✅ | 417.2 | 0.7551 | 990.45 |
TF GraphDef | ✅ | 166.9 | 0.7551 | 1649.86 |
TF Lite | ✅ | 166.9 | 0.7551 | 5652.37 |
PaddlePaddle | ✅ | 333.6 | 0.7551 | 7114.67 |
NCNN | ✅ | 166.8 | 0.7685 | 231.9 |
Formato | Stato | Dimensione su disco (MB) | mAP50-95(B) | Tempo di inferenza (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 130.5 | 0.7759 | 93 |
TorchScript | ✅ | 260.7 | 0.7472 | 135.1 |
ONNX | ✅ | 260.4 | 0.7479 | 1296.13 |
OpenVINO | ✅ | 260.6 | 0.7479 | 1502.15 |
TensorRT (FP32) | ✅ | 264.0 | 0.7469 | 80.01 |
TensorRT (FP16) | ✅ | 133.3 | 0.7513 | 40.76 |
TensorRT (INT8) | ✅ | 70.2 | 0.4277 | 22.08 |
TF SavedModel | ✅ | 651.1 | 0.7479 | 1451.76 |
TF GraphDef | ✅ | 260.5 | 0.7479 | 4029.36 |
TF Lite | ✅ | 260.4 | 0.7479 | 8772.86 |
PaddlePaddle | ✅ | 520.8 | 0.7479 | 10619.53 |
NCNN | ✅ | 260.4 | 0.7646 | 376.38 |
Esplora altri benchmark effettuati da Seeed Studio su diverse versioni di hardware NVIDIA Jetson.
Riprodurre i nostri risultati
Per riprodurre i benchmark di Ultralytics su tutti i formati di esportazione, esegui questo codice:
Esempio
Si noti che i risultati dei benchmark possono variare in base all'esatta configurazione hardware e software di un sistema, nonché al carico di lavoro corrente del sistema al momento dell'esecuzione dei benchmark. Per ottenere i risultati più affidabili, usa un set di dati con un gran numero di immagini, ad es. data='coco8.yaml' (4 val images), or
data='coco.yaml'` (5000 immagini val).
Migliori pratiche per l'utilizzo di NVIDIA Jetson
Quando si utilizza NVIDIA Jetson, ci sono un paio di buone pratiche da seguire per ottenere le massime prestazioni su NVIDIA Jetson che esegue YOLOv8.
-
Abilita la modalità MAX Power
Abilitando la modalità MAX Power su Jetson, tutti i core CPU, GPU saranno attivati.
-
Abilita gli orologi Jetson
Abilitando Jetson Clocks, tutti i core di CPU, GPU saranno clockati alla loro frequenza massima.
-
Installa l'applicazione Jetson Stats
Possiamo utilizzare l'applicazione jetson stats per monitorare le temperature dei componenti del sistema e controllare altri dettagli del sistema, come ad esempio visualizzare CPU, GPU, l'utilizzo della RAM, cambiare le modalità di alimentazione, impostare i clock massimi, controllare le informazioni di JetPack.
I prossimi passi
Congratulazioni per aver configurato con successo YOLOv8 sul tuo NVIDIA Jetson! Per ulteriori informazioni e supporto, visita la guida Ultralytics YOLOv8 Docs!
DOMANDE FREQUENTI
Come faccio a distribuire Ultralytics YOLOv8 sui dispositivi NVIDIA Jetson?
Distribuire Ultralytics YOLOv8 sui dispositivi NVIDIA Jetson è un processo semplice. Per prima cosa, flasha il tuo dispositivo Jetson con l'SDK NVIDIA JetPack. Quindi, utilizza un'immagine Docker precostituita per una configurazione rapida o installa manualmente i pacchetti necessari. I passaggi dettagliati per ciascun approccio sono riportati nelle sezioni Avvio rapido con Docker e Avvio con installazione nativa.
Quali benchmark di prestazioni posso aspettarmi dai modelli YOLOv8 sui dispositivi NVIDIA Jetson?
YOLOv8 sono stati sottoposti a benchmark su vari dispositivi NVIDIA Jetson, mostrando miglioramenti significativi delle prestazioni. Ad esempio, il formato TensorRT offre le migliori prestazioni di inferenza. La tabella nella sezione Tabella di confronto dettagliata fornisce una visione completa delle metriche di prestazione come mAP50-95 e tempo di inferenza tra i diversi formati di modello.
Perché dovrei usare TensorRT per distribuire YOLOv8 su NVIDIA Jetson?
TensorRT è altamente raccomandato per l'implementazione di modelli YOLOv8 su NVIDIA Jetson grazie alle sue prestazioni ottimali. Accelera l'inferenza sfruttando le capacità di GPU Jetson, garantendo la massima efficienza e velocità. Per saperne di più su come convertire TensorRT ed eseguire l'inferenza, consulta la sezione Utilizzare TensorRT su NVIDIA Jetson.
Come posso installare PyTorch e Torchvision su NVIDIA Jetson?
Per installare PyTorch e Torchvision su NVIDIA Jetson, per prima cosa disinstalla tutte le versioni esistenti che possono essere state installate tramite pip. Quindi, installa manualmente le versioni di PyTorch e Torchvision compatibili con l'architettura ARM64 di Jetson. Le istruzioni dettagliate per questo processo sono riportate nella sezione Installare PyTorch e Torchvision.
Quali sono le migliori pratiche per massimizzare le prestazioni su NVIDIA Jetson quando si utilizza YOLOv8?
Per massimizzare le prestazioni su NVIDIA Jetson con YOLOv8, segui queste best practice:
- Abilita la modalità MAX Power per utilizzare tutti i core di CPU e GPU .
- Abilita i clock di Jetson per far funzionare tutti i core alla loro frequenza massima.
- Installa l'applicazione Jetson Stats per monitorare le metriche del sistema.
Per i comandi e per ulteriori dettagli, consulta la sezione " Migliori pratiche per l'utilizzo di NVIDIA Jetson".