Руководство по быстрому старту: NVIDIA Jetson с Ultralytics YOLOv8
В этом подробном руководстве ты найдешь подробную инструкцию по развертыванию Ultralytics YOLOv8 на устройствах NVIDIA Jetson. Кроме того, в нем представлены бенчмарки производительности, демонстрирующие возможности YOLOv8 на этих небольших и мощных устройствах.
Примечание
Это руководство было протестировано на Seeed Studio reComputer J4012, который основан на NVIDIA Jetson Orin NX 16GB и работает под управлением последнего стабильного релиза JetPack JP5.1.3. Использование этого руководства для более старых устройств Jetson, таких как Jetson Nano (он поддерживает только до JP4.6.4), не может быть гарантировано. Однако ожидается, что оно будет работать на всех устройствах Jetson Orin, Xavier NX, AGX Xavier, работающих под управлением JP5.1.3.
Что такое NVIDIA Jetson?
NVIDIA Jetson - это серия встраиваемых вычислительных плат, призванных принести ускоренные вычисления ИИ (искусственного интеллекта) на граничные устройства. Эти компактные и мощные устройства построены на базе архитектуры GPU NVIDIA и способны выполнять сложные алгоритмы ИИ и модели глубокого обучения непосредственно на устройстве, не прибегая к облачным вычислительным ресурсам. Платы Jetson часто используются в робототехнике, автономных транспортных средствах, промышленной автоматизации и других приложениях, где ИИ-выводы должны выполняться локально с низкой задержкой и высокой эффективностью. Кроме того, эти платы основаны на архитектуре ARM64 и работают с меньшей мощностью по сравнению с традиционными GPU-вычислителями.
Сравнение серий NVIDIA Jetson
Jetson Orin - это последняя итерация семейства NVIDIA Jetson, основанная на архитектуре NVIDIA Ampere, которая обеспечивает радикально улучшенную производительность искусственного интеллекта по сравнению с предыдущими поколениями. Ниже в таблице приведено сравнение нескольких устройств Jetson в экосистеме.
Jetson AGX Orin 64GB | Jetson Orin NX 16GB | Jetson Orin Nano 8GB | Jetson AGX Xavier | Джетсон Ксавьер NX | Jetson Nano | |
---|---|---|---|---|---|---|
Производительность искусственного интеллекта | 275 TOPS | 100 ТОПОВ | 40 ТОПов | 32 TOPS | 21 TOPS | 472 GFLOPS |
GPU | 2048-ядерный графический процессор архитектуры NVIDIA Ampere с 64 ядрами Tensor | 1024-ядерный графический процессор с архитектурой NVIDIA Ampere и 32 ядрами Tensor | 1024-ядерный графический процессор с архитектурой NVIDIA Ampere и 32 ядрами Tensor | 512-ядерный графический процессор архитектуры NVIDIA Volta с 64 ядрами Tensor | 384-ядерный графический процессор архитектуры NVIDIA Volta™ с 48 ядрами Tensor | 128-ядерный графический процессор архитектуры NVIDIA Maxwell™ |
Максимальная частота графического процессора | 1,3 ГГц | 918 МГц | 625 МГц | 1377 МГц | 1100 МГц | 921 МГц |
ПРОЦЕССОР | 12-ядерный 64-битный процессор NVIDIA Arm® Cortex A78AE v8.2 3 МБ L2 + 6 МБ L3 | 8-ядерный 64-битный процессор NVIDIA Arm® Cortex A78AE v8.2 2 МБ L2 + 4 МБ L3. | 6-ядерный 64-битный процессор Arm® Cortex®-A78AE v8.2 1,5 МБ L2 + 4 МБ L3. | 8-ядерный 64-битный процессор NVIDIA Carmel Arm®v8.2 8 МБ L2 + 4 МБ L3 | 6-ядерный 64-битный процессор NVIDIA Carmel Arm®v8.2 6 МБ L2 + 4 МБ L3 | Четырехъядерный процессор Arm® Cortex®-A57 MPCore |
Максимальная частота процессора | 2,2 ГГц | 2,0 ГГц | 1,5 ГГц | 2,2 ГГц | 1,9 ГГц | 1,43 ГГц |
Память | 64 Гб 256-битной LPDDR5 204,8 Гб/с | 16 Гб 128-битной LPDDR5 102,4 Гб/с | 8 Гб 128-битной LPDDR5 68 Гб/с | 32 Гб 256-битной LPDDR4x 136,5 Гб/с | 8 Гб 128-битной LPDDR4x 59,7 Гб/с | 4 Гб 64-битной LPDDR4 25,6 Гб/с" |
Более подробную сравнительную таблицу ты можешь найти в разделе технических характеристик на официальной странице NVIDIA Jetson.
Что такое NVIDIA JetPack?
NVIDIA JetPack SDK на базе модулей Jetson - это самое комплексное решение, которое предоставляет полную среду разработки для создания сквозных ускоренных AI-приложений и сокращает время выхода на рынок. JetPack включает в себя Jetson Linux с загрузчиком, ядро Linux, окружение рабочего стола Ubuntu и полный набор библиотек для ускорения вычислений на GPU, мультимедиа, графики и компьютерного зрения. В комплект также входят примеры, документация и инструменты разработчика как для хост-компьютера, так и для набора разработчика, а также поддержка SDK более высокого уровня, таких как DeepStream для аналитики потокового видео, Isaac для робототехники и Riva для разговорного ИИ.
Flash JetPack для NVIDIA Jetson
Первый шаг после получения в руки устройства NVIDIA Jetson - прошить на него NVIDIA JetPack. Существует несколько различных способов прошивки устройств NVIDIA Jetson.
- Если у тебя есть официальный набор разработчика NVIDIA, например Jetson Orin Nano Developer Kit, ты можешь перейти по этой ссылке, чтобы скачать образ и подготовить SD-карту с JetPack для загрузки устройства.
- Если у тебя есть любой другой комплект разработки NVIDIA, ты можешь перейти по этой ссылке, чтобы прошить JetPack на устройство с помощью SDK Manager.
- Если у тебя есть устройство Seeed Studio reComputer J4012, то ты можешь перейти по этой ссылке, чтобы прошить JetPack на прилагаемый SSD-накопитель.
- Если ты являешься владельцем любого другого стороннего устройства, работающего на модуле NVIDIA Jetson, рекомендуется выполнить прошивку из командной строки по этой ссылке.
Примечание
Для методов 3 и 4 выше, после прошивки системы и загрузки устройства, пожалуйста, введите "sudo apt update && sudo apt install nvidia-jetpack -y" в терминале устройства, чтобы установить все оставшиеся необходимые компоненты JetPack.
Настройка Ultralytics
Существует два способа установки пакета Ultralytics на NVIDIA Jetson для создания твоего следующего проекта по компьютерному зрению. Ты можешь использовать любой из них.
Начни с Docker
Самый быстрый способ начать работу с Ultralytics YOLOv8 на NVIDIA Jetson - запустить его с помощью предварительно созданного образа докера для Jetson.
Выполни приведенную ниже команду, чтобы вытащить Docker-контейнер и запустить его на Jetson. Это основано на докер-образе l4t-pytorch, который содержит PyTorch и Torchvision в среде Python3.
t=ultralytics/ultralytics:latest-jetson && sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $t
После этого переходи к разделу "Использование TensorRT на NVIDIA Jetson".
Запуск без Docker
Установи пакет Ultralytics
Здесь мы установим пакет ultralyics на Jetson с дополнительными зависимостями, чтобы мы могли экспортировать модели PyTorch в другие различные форматы. В основном мы сосредоточимся на экспорте в NVIDIA TensorRT , потому что TensoRT позволит нам получить максимальную производительность от устройств Jetson.
-
Обнови список пакетов, установи pip и обновись до последней версии
-
Установи
ultralytics
Пакет pip с дополнительными зависимостями -
Перезагрузите устройство
Установи PyTorch и Torchvision
Приведенная выше установка ultralytics установит Torch и Torchvision. Однако эти два пакета, установленные через pip, несовместимы для работы на платформе Jetson, которая основана на архитектуре ARM64. Поэтому нам нужно вручную установить предварительно собранный PyTorch pip wheel и скомпилировать/установить Torchvision из исходников.
-
Деинсталлируй установленные в данный момент PyTorch и Torchvision
-
Установи PyTorch 2.1.0 в соответствии с 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
-
Установи Torchvision v0.16.2 по адресу PyTorch v2.1.0.
Посети страницуPyTorch for Jetson, чтобы получить доступ ко всем различным версиям PyTorch для разных версий JetPack. Более подробный список совместимости PyTorch и Torchvision можно найти на страницеPyTorch и Torchvision.
Установи onnxruntime-gpu
The onnxruntime-gpu Пакет, размещенный в PyPI, не имеет aarch64
двоичные файлы для Jetson. Поэтому нам нужно вручную установить этот пакет. Этот пакет нужен для некоторых экспортов.
Все разные onnxruntime-gpu
Перечислены пакеты, соответствующие различным версиям JetPack и Python . здесь. Однако здесь мы будем скачивать и устанавливать onnxruntime-gpu 1.17.0
с Python3.8
поддержка JetPack, который мы используем в этом руководстве.
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
Примечание
onnxruntime-gpu
автоматически вернет версию numpy на последнюю. Поэтому нам нужно переустановить numpy на 1.23.5
чтобы устранить проблему, выполнив ее:
pip install numpy==1.23.5
Используй TensorRT на NVIDIA Jetson
Из всех форматов экспорта моделей, поддерживаемых Ultralytics, TensorRT обеспечивает наилучшую производительность при работе с устройствами NVIDIA Jetson, поэтому мы рекомендуем использовать TensorRT для работы с Jetson. У нас также есть подробный документ по TensorRT здесь.
Преобразуй модель в TensorRT и выполни вывод
Модель YOLOv8n в формате PyTorch конвертируется в TensorRT , чтобы запустить вывод с экспортированной моделью.
Пример
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')
Примечание
Посети страницу экспорта, чтобы получить доступ к дополнительным аргументам при экспорте моделей в различные форматы
Бенчмарки NVIDIA Jetson Orin YOLOv8
YOLOv8 Команда Ultralytics провела бенчмарки на 10 различных форматах моделей, измеряя скорость и точность: PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel , TF Graphdef , TF Lite, PaddlePaddle, NCNN. Бенчмарки запускались на Seeed Studio reComputer J4012 на базе устройства Jetson Orin NX 16GB с точностью FP32 и размером входного изображения по умолчанию 640.
Сравнительная таблица
Несмотря на то что все экспортируемые модели работают на NVIDIA Jetson, мы включили в сравнительную таблицу только PyTorch, TorchScript, TensorRT, потому что они используют GPU Jetson и гарантированно дают наилучшие результаты. Все остальные экспорты используют только CPU, и их производительность не так хороша, как у трех вышеперечисленных. Бенчмарки для всех экспортов ты можешь найти в разделе после этой диаграммы.
Подробная сравнительная таблица
В таблице ниже представлены результаты бенчмарка для пяти различных моделей (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) в десяти различных форматах (PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel , TF Graphdef , TF Lite, PaddlePaddle, NCNN), дающие нам статус, размер, метрику mAP50-95(B) и время вывода для каждой комбинации.
Производительность
Формат | Статус | Размер на диске (МБ) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|
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 | ✅ | 13.6 | 0.6117 | 8.9 |
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 |
Формат | Статус | Размер на диске (МБ) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|
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 | ✅ | 44.0 | 0.7136 | 14.82 |
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 |
Формат | Статус | Размер на диске (МБ) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|
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 | ✅ | 100.3 | 0.7285 | 33.21 |
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 |
Формат | Статус | Размер на диске (МБ) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|
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 | ✅ | 168.4 | 0.7554 | 51.23 |
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 |
Формат | Статус | Размер на диске (МБ) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|
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 | ✅ | 261.8 | 0.7469 | 84.53 |
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 |
Перейди по этой ссылке, чтобы изучить другие бенчмарки Seeed Studio, работающие на разных версиях аппаратного обеспечения NVIDIA Jetson.
Воспроизведи наши результаты
Чтобы воспроизвести приведенные выше Ultralytics бенчмарки на всех форматах экспорта, выполни этот код:
Пример
Учти, что результаты бенчмарков могут отличаться в зависимости от точной аппаратной и программной конфигурации системы, а также от текущей загруженности системы на момент запуска бенчмарков. Для получения наиболее достоверных результатов используй набор данных с большим количеством изображений, то есть data='coco8.yaml' (4 val images), or
data='coco.yaml'` (5000 val изображений).
Лучшие рекомендации при использовании NVIDIA Jetson
При использовании NVIDIA Jetson есть несколько лучших практик, которым нужно следовать, чтобы обеспечить максимальную производительность на NVIDIA Jetson под управлением YOLOv8.
-
Включи режим максимальной мощности
Включив режим MAX Power Mode на Jetson, ты убедишься, что все ядра CPU и GPU включены.
-
Включи часы Jetson
Включив Jetson Clocks, ты убедишься, что все ядра CPU и GPU работают на максимальной частоте.
-
Установи приложение Jetson Stats
Мы можем использовать приложение jetson stats для мониторинга температур компонентов системы и проверки других системных данных, например, просмотреть загрузку CPU, GPU, RAM, изменить режимы питания, установить максимальные часы, проверить информацию о JetPack.
Следующие шаги
Поздравляю тебя с успешной установкой YOLOv8 на твой NVIDIA Jetson! Для дальнейшего обучения и поддержки посети дополнительное руководство на Ultralytics YOLOv8 Docs!