Экспорт Ultralytics YOLO в NCNN#
Развертывание моделей компьютерного зрения на устройствах с ограниченной вычислительной мощностью, таких как мобильные или встраиваемые системы, требует тщательного выбора формата. Использование оптимизированного формата позволяет даже устройствам с ограниченными ресурсами эффективно выполнять сложные задачи компьютерного зрения.
Экспорт в формат NCNN позволяет оптимизировать модели Ultralytics YOLO26 для приложений на устройствах с ограниченными ресурсами. В этом руководстве описывается преобразование моделей в формат NCNN для повышения производительности на мобильных и встраиваемых устройствах.
Зачем экспортировать в NCNN?#
Фреймворк NCNN, разработанный Tencent, представляет собой высокопроизводительный фреймворк вычислений для инференса нейронных сетей, оптимизированный специально для мобильных платформ, включая мобильные телефоны, встраиваемые устройства и устройства IoT. NCNN совместим с широким спектром платформ, включая Linux, Android, iOS и macOS.
NCNN известен высокой скоростью обработки на мобильных CPU и обеспечивает быстрое развертывание моделей глубокого обучения на мобильных платформах, что делает его отличным выбором для создания приложений на базе AI.
Ключевые особенности моделей NCNN#
Модели NCNN обладают рядом ключевых возможностей, обеспечивающих машинное обучение непосредственно на устройстве и помогающих разработчикам развертывать модели на мобильных, встраиваемых и периферийных устройствах:
-
Эффективность и высокая производительность: модели NCNN отличаются компактностью и оптимизированы для мобильных и встраиваемых устройств, таких как Raspberry Pi, с ограниченными ресурсами, сохраняя при этом высокую точность в задачах компьютерного зрения.
-
Квантизация: NCNN поддерживает квантизацию — метод, который снижает точность весов и активаций модели для повышения производительности и уменьшения объема используемой памяти.
-
Совместимость: модели NCNN совместимы с популярными фреймворками глубокого обучения, включая TensorFlow, Caffe и ONNX, что позволяет разработчикам использовать существующие модели и рабочие процессы.
-
Простота использования: NCNN предоставляет удобные инструменты для преобразования моделей между форматами, обеспечивая беспроблемное взаимодействие между различными средами разработки.
-
Ускорение GPU через Vulkan: NCNN поддерживает Vulkan для ускорения инференса на GPU различных производителей, включая AMD, Intel и другие GPU, не относящиеся к NVIDIA, обеспечивая высокопроизводительное развертывание на более широком спектре оборудования.
Варианты развертывания с NCNN#
Модели NCNN совместимы с различными платформами развертывания:
-
Развертывание на мобильных устройствах: оптимизировано для Android и iOS, что обеспечивает бесшовную интеграцию в мобильные приложения для эффективного инференса непосредственно на устройстве.
-
Встраиваемые системы и устройства IoT: идеально подходит для устройств с ограниченными ресурсами, таких как Raspberry Pi и NVIDIA Jetson. Если стандартного инференса на Raspberry Pi с руководством Ultralytics недостаточно, 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"и т. д. - Развертывание на периферийных и настольных устройствах: используй ускорение 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")Убедись, что для твоего GPU установлены драйверы Vulkan. Большинство современных драйверов GPU по умолчанию поддерживают Vulkan. Проверить доступность Vulkan можно с помощью таких инструментов, как vulkaninfo в Linux или Vulkan SDK в Windows.
Поддерживаемые задачи#
Экспорт NCNN поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только в YOLO26 — единственном семействе, поставляемом с такими головами.
| Задача | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Детекция | ✅ | ✅ | ✅ |
| Сегментация | ✅ | ✅ | ✅ |
| Семантическая сегментация | ❌ | ❌ | ✅ |
| Оценка глубины | ❌ | ❌ | ✅ |
| Классификация | ✅ | ✅ | ✅ |
| Поза | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Экспорт в NCNN: преобразование модели YOLO26#
Ты можешь расширить совместимость модели и гибкость развертывания, преобразовав модели YOLO26 в формат NCNN.
Установка#
Чтобы установить необходимые пакеты, выполни:
# Install the required package for YOLO26
pip install ultralyticsПодробные инструкции и рекомендации приведены в руководстве по установке Ultralytics. Если у тебя возникнут трудности, обратись к руководству по распространенным проблемам, чтобы найти решения.
Использование#
Все модели Ultralytics YOLO26 изначально поддерживают экспорт, поэтому их легко интегрировать в предпочитаемый тобой рабочий процесс развёртывания. Ты можешь просмотреть полный список поддерживаемых форматов экспорта и параметров конфигурации, чтобы выбрать оптимальную настройку для своего приложения.
Формат NCNN поддерживает режимы экспорта, предсказания и валидации. Экспортируй модель, затем загрузи экспортированную модель, чтобы выполнить инференс или проверить ее точность.
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, которые среда выполнения NCNN на CPU по умолчанию по-прежнему вычисляет в FP16, если это поддерживается оборудованием. Заменяет устаревший флаг 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 для обнаружения объектов в приложениях Android.
-
macOS: разверни модели NCNN в системах macOS.
-
Linux: разверни модели NCNN на устройствах Linux, включая Raspberry Pi и аналогичные встраиваемые системы.
-
Windows x64: разверни модели NCNN в Windows x64 с помощью Visual Studio.
Итоги#
В этом руководстве описан экспорт моделей Ultralytics YOLO26 в формат NCNN для повышения эффективности и скорости на устройствах с ограниченными ресурсами.
Дополнительные сведения приведены в официальной документации NCNN. Другие варианты экспорта смотри на нашей странице руководства по интеграциям.
Часто задаваемые вопросы#
Чтобы экспортировать модель 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'
Подробные сведения о параметрах экспорта приведены в документации по экспорту.
-
Экспорт моделей Ultralytics YOLO26 в NCNN дает несколько преимуществ:
- Эффективность: модели NCNN оптимизированы для мобильных и встраиваемых устройств, обеспечивая высокую производительность даже при ограниченных вычислительных ресурсах.
- Квантизация: NCNN поддерживает такие методы, как квантизация, которые повышают скорость работы модели и снижают потребление памяти.
- Широкая совместимость: ты можешь развертывать модели NCNN на нескольких платформах, включая Android, iOS, Linux и macOS.
- Ускорение GPU через Vulkan: используй ускорение GPU на GPU AMD, Intel и других производителей, не относящихся к NVIDIA, через Vulkan для более быстрого инференса.
Подробнее смотри в разделе Зачем экспортировать в NCNN?.
NCNN, разработанный Tencent, специально оптимизирован для мобильных платформ. К основным причинам использовать NCNN относятся:
- Высокая производительность: разработан для эффективной и быстрой обработки на мобильных CPU.
- Кроссплатформенность: совместим с популярными фреймворками, такими как TensorFlow и ONNX, что упрощает преобразование и развертывание моделей на различных платформах.
- Поддержка сообщества: активное сообщество обеспечивает постоянные улучшения и обновления.
Дополнительную информацию смотри в разделе Ключевые особенности моделей NCNN.
NCNN отличается универсальностью и поддерживает различные платформы:
- Мобильные: Android, iOS.
- Встраиваемые системы и устройства IoT: такие устройства, как Raspberry Pi и NVIDIA Jetson.
- Настольные компьютеры и серверы: Linux, Windows и macOS.
Для повышения производительности на Raspberry Pi рассмотри использование формата NCNN, как описано в нашем руководстве по Raspberry Pi.
Чтобы развернуть модели YOLO26 на Android:
- Сборка для Android: следуй руководству Сборка NCNN для Android.
- Интеграция с приложением: используй Android SDK NCNN, чтобы интегрировать экспортированную модель в приложение для эффективного инференса непосредственно на устройстве.
Подробные инструкции приведены в разделе Развертывание экспортированных моделей YOLO26 NCNN.
Дополнительные руководства и примеры использования смотри в руководстве Ultralytics по развертыванию.
NCNN поддерживает Vulkan для ускорения GPU на GPU AMD, Intel и других производителей, не относящихся к NVIDIA. Чтобы использовать 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. Подробнее смотри в разделе Ускорение GPU через Vulkan.