Ultralytics YOLO27:

Экспорт Ultralytics YOLO в NCNN#

Развертывание моделей компьютерного зрения на устройствах с ограниченной вычислительной мощностью, таких как мобильные или встраиваемые системы, требует тщательного выбора формата. Использование оптимизированного формата позволяет даже устройствам с ограниченными ресурсами эффективно выполнять сложные задачи компьютерного зрения.

Экспорт в формат NCNN позволяет оптимизировать модели Ultralytics YOLO26 для приложений на устройствах с ограниченными ресурсами. В этом руководстве описывается преобразование моделей в формат NCNN для повышения производительности на мобильных и встраиваемых устройствах.

Зачем экспортировать в NCNN?#

NCNN high-performance neural network inference framework

Фреймворк 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 при запуске инференса:

Инференс 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 установлены драйверы Vulkan. Большинство современных драйверов 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. Если у тебя возникнут трудности, обратись к руководству по распространенным проблемам, чтобы найти решения.

Использование#

Все модели 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'
Predict
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")

Аргументы экспорта#

АргументТипПо умолчаниюОписание
formatstr'ncnn'Целевой формат экспортированной модели, определяющий совместимость с различными средами развёртывания.
imgszint или tuple640Требуемый размер изображения для входных данных модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для указания конкретных размеров.
quantizeint или strNoneТочность квантизации: 16 (FP16) уменьшает размер экспортированных весов вдвое; 32/неуказанный параметр экспортирует веса FP32, которые среда выполнения NCNN на CPU по умолчанию по-прежнему вычисляет в FP16, если это поддерживается оборудованием. Заменяет устаревший флаг half.
batchint1Задаёт размер пакета при инференсе экспортированной модели или максимальное количество изображений, которые экспортированная модель будет обрабатывать одновременно в режиме predict.
devicestrNoneУказывает устройство для экспорта: 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:

    1. Сборка для Android: следуй руководству Сборка NCNN для Android.
    2. Интеграция с приложением: используй 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.

Комментарии