Экспорт Ultralytics YOLO в формат NCNN#
Развертывание моделей computer vision на устройствах с ограниченной вычислительной мощностью, таких как мобильные или встраиваемые системы, требует тщательного выбора формата. Использование оптимизированного формата гарантирует, что даже устройства с ограниченными ресурсами смогут эффективно справляться со сложными задачами компьютерного зрения.
Экспорт в формат NCNN позволяет оптимизировать твои модели Ultralytics YOLO26 для легких приложений, работающих на устройствах. В этом руководстве рассматривается, как конвертировать модели в формат NCNN для повышения производительности на мобильных и встраиваемых устройствах.
Зачем экспортировать в NCNN?#
Фреймворк NCNN, разработанный Tencent, представляет собой высокопроизводительный вычислительный фреймворк для вывода neural network, оптимизированный специально для мобильных платформ, включая мобильные телефоны, встраиваемые системы и устройства IoT. NCNN совместим с широким спектром платформ, включая Linux, Android, iOS и macOS.
NCNN известна своей высокой скоростью обработки на мобильных CPU и обеспечивает быстрое развертывание моделей deep learning на мобильных платформах, что делает ее отличным выбором для создания приложений на базе искусственного интеллекта.
Ключевые особенности моделей NCNN#
Модели NCNN предоставляют несколько ключевых функций, которые обеспечивают machine learning непосредственно на устройствах, помогая разработчикам развертывать модели на мобильных, встраиваемых и периферийных устройствах:
-
Эффективность и высокая производительность: Модели NCNN легкие и оптимизированы для мобильных и встраиваемых устройств с ограниченными ресурсами, таких как Raspberry Pi, при этом сохраняется высокая accuracy в задачах компьютерного зрения.
-
Квантование: NCNN поддерживает квантование — технику, которая снижает precision весов модели и активаций для повышения производительности и уменьшения объема памяти.
-
Совместимость: Модели NCNN совместимы с популярными фреймворками глубокого обучения, включая TensorFlow, Caffe и ONNX, что позволяет разработчикам использовать существующие модели и рабочие процессы.
-
Простота использования: NCNN предоставляет удобные инструменты для преобразования моделей между форматами, обеспечивая плавную совместимость в различных средах разработки.
-
Ускорение GPU через Vulkan: NCNN поддерживает Vulkan для ускорения вывода на GPU от различных производителей, включая AMD, Intel и другие не-NVIDIA GPU, что позволяет добиться высокой производительности на широком спектре оборудования.
Варианты развертывания с NCNN#
Модели NCNN совместимы с множеством платформ развертывания:
-
Мобильное развертывание: Оптимизировано для Android и iOS, обеспечивая бесшовную интеграцию в мобильные приложения для эффективного вывода на самом устройстве.
-
Встраиваемые системы и устройства IoT: Идеально подходит для устройств с ограниченными ресурсами, таких как Raspberry Pi и NVIDIA Jetson. Если стандартный вывод на Raspberry Pi с помощью Ultralytics Guide оказывается недостаточным, NCNN может обеспечить значительное повышение производительности.
-
Развертывание на десктопах и серверах: Поддерживает развертывание на Linux, Windows и macOS для рабочих процессов разработки, обучения и оценки.
Ускорение GPU через Vulkan#
NCNN поддерживает ускорение GPU через Vulkan, обеспечивая высокопроизводительный вывод на широком спектре GPU, включая AMD, Intel и другие графические карты, не относящиеся к NVIDIA. Это особенно полезно для:
- Поддержка GPU различных производителей: В отличие от CUDA, которая ограничена GPU от NVIDIA, Vulkan работает на GPU разных производителей.
- Системы с несколькими GPU: Выбери конкретное устройство Vulkan в системах с несколькими GPU с помощью
device="vulkan:0",device="vulkan:1"и т.д. - Edge и десктопные развертывания: Используй ускорение GPU на устройствах, где CUDA недоступна.
Чтобы использовать ускорение Vulkan, укажи устройство Vulkan при запуске вывода:
from ultralytics import YOLO
# Load the exported NCNN model
ncnn_model = YOLO("./yolo26n_ncnn_model")
# Run inference with Vulkan GPU acceleration (first Vulkan device)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")
# Use second Vulkan device in multi-GPU systems
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")Убедись, что у тебя установлены драйверы Vulkan для твоего GPU. Большинство современных драйверов GPU поддерживают Vulkan по умолчанию. Ты можешь проверить доступность Vulkan с помощью таких инструментов, как vulkaninfo на Linux или Vulkan SDK на Windows.
Поддерживаемые задачи#
Экспорт NCNN поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только с YOLO26 — единственным семейством, в котором есть эти головы.
Экспорт в NCNN: преобразование твоей модели YOLO26#
Ты можешь расширить совместимость моделей и гибкость развертывания, преобразовав модели YOLO26 в формат NCNN.
Установка#
Чтобы установить необходимые пакеты, выполни:
# Install the required package for YOLO26
pip install ultralyticsПодробные инструкции и рекомендации см. в Ultralytics Installation guide. Если у тебя возникнут трудности, обратись к нашему руководству Common Issues guide за решениями.
Использование#
Все модели Ultralytics YOLO26 поддерживают экспорт из коробки, что позволяет легко интегрировать их в твой привычный рабочий процесс развертывания. Ты можешь посмотреть полный список поддерживаемых форматов экспорта и параметров конфигурации, чтобы выбрать оптимальную настройку для своего приложения.
Формат NCNN поддерживает режимы Export, Predict и Validate. Экспортируй свою модель, а затем загрузи ее для запуска вывода или проверки точности.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates '/yolo26n_ncnn_model'from ultralytics import YOLO
# Load the exported NCNN model
model = YOLO("./yolo26n_ncnn_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported NCNN model
model = YOLO("./yolo26n_ncnn_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Аргументы экспорта#
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'ncnn' | Целевой формат для экспортированной модели, определяющий совместимость с различными средами развертывания. |
imgsz | int или tuple | 640 | Желаемый размер изображения для входа модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для конкретных размеров. |
quantize | int или str | None | Точность квантования: 16 (FP16) уменьшает размер модели и может ускорить вывод; 32/не задано — это FP32. Заменяет устаревший флаг half. |
batch | int | 1 | Указывает размер пакета для пакетного инференса экспортированной модели или максимальное количество изображений, которые экспортированная модель будет обрабатывать одновременно в режиме predict. |
device | str | None | Указывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (device=mps). |
Дополнительную информацию о процессе экспорта см. на странице документации Ultralytics по экспорту.
Развертывание экспортированных моделей YOLO26 NCNN#
После экспорта моделей Ultralytics YOLO26 в формат NCNN ты можешь развернуть их с помощью метода YOLO("yolo26n_ncnn_model/"), как показано в примере использования выше. Инструкции по развертыванию для конкретных платформ см. в следующих ресурсах:
-
Android: Сборка и интеграция моделей NCNN для object detection в приложениях для Android.
-
macOS: Развертывание моделей NCNN в системах macOS.
-
Linux: Развертывание моделей NCNN на устройствах Linux, включая Raspberry Pi и аналогичные встраиваемые системы.
-
Windows x64: Развертывание моделей NCNN на Windows x64 с использованием Visual Studio.
Резюме#
В этом руководстве мы рассмотрели экспорт моделей Ultralytics YOLO26 в формат NCNN для повышения эффективности и скорости на устройствах с ограниченными ресурсами.
Дополнительные сведения см. в official NCNN documentation. Другие варианты экспорта см. на странице integration guide page.
FAQ#
Чтобы экспортировать твою модель Ultralytics YOLO26 в формат NCNN:
-
Python: Используй метод
exportиз класса YOLO.from ultralytics import YOLO # Load a YOLO26 model model = YOLO("yolo26n.pt") # Export to NCNN format model.export(format="ncnn") # creates '/yolo26n_ncnn_model' -
CLI: Используй команду
yolo export.yolo export model=yolo26n.pt format=ncnn # creates '/yolo26n_ncnn_model'
Подробные параметры экспорта см. в документации Export.
-
Экспорт твоих моделей Ultralytics YOLO26 в NCNN дает несколько преимуществ:
- Эффективность: Модели NCNN оптимизированы для мобильных и встраиваемых устройств, что обеспечивает высокую производительность даже при ограниченных вычислительных ресурсах.
- Квантование: NCNN поддерживает такие методы, как квантование, которые повышают скорость работы модели и сокращают использование памяти.
- Широкая совместимость: Ты можешь развертывать модели NCNN на различных платформах, включая Android, iOS, Linux и macOS.
- Ускорение GPU через Vulkan: Используй ускорение GPU на AMD, Intel и других не-NVIDIA GPU через Vulkan для более быстрого вывода.
Дополнительные сведения см. в разделе Why Export to NCNN?.
NCNN, разработанный Tencent, специально оптимизирован для мобильных платформ. Основные причины использовать NCNN включают:
- Высокая производительность: Разработан для эффективной и быстрой обработки на мобильных CPU.
- Кроссплатформенность: Совместимость с популярными фреймворками, такими как TensorFlow и ONNX, что упрощает конвертацию и развертывание моделей на разных платформах.
- Поддержка сообщества: Активная поддержка сообщества обеспечивает постоянные улучшения и обновления.
Дополнительную информацию см. в разделе Key Features of NCNN Models.
NCNN универсален и поддерживает различные платформы:
- Мобильные: Android, iOS.
- Встраиваемые системы и устройства IoT: Устройства, такие как Raspberry Pi и NVIDIA Jetson.
- Десктопы и серверы: Linux, Windows и macOS.
Для повышения производительности на Raspberry Pi рекомендуется использовать формат NCNN, как описано в нашем Raspberry Pi Guide.
Чтобы развернуть твои модели YOLO26 на Android:
- Сборка для Android: Следуй инструкциям в руководстве NCNN Build for Android.
- Интеграция с твоим приложением: Используй NCNN Android SDK для интеграции экспортированной модели в твое приложение для эффективного вывода на устройстве.
Подробные инструкции см. в разделе Deploying Exported YOLO26 NCNN Models.
Более продвинутые руководства и варианты использования см. в Ultralytics deployment guide.
NCNN поддерживает Vulkan для ускорения GPU на AMD, Intel и других не-NVIDIA GPU. Чтобы использовать Vulkan:
from ultralytics import YOLO # Load NCNN model and run with Vulkan GPU model = YOLO("yolo26n_ncnn_model") results = model("image.jpg", device="vulkan:0") # Use first Vulkan deviceДля систем с несколькими GPU укажи индекс устройства (например,
vulkan:1для второго GPU). Убедись, что для твоего GPU установлены драйверы Vulkan. Дополнительные сведения см. в разделе Vulkan GPU Acceleration.