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

Ключевые особенности моделей NCNN#

Модели NCNN обладают рядом ключевых особенностей, которые позволяют выполнять машинное обучение непосредственно на устройстве и помогают разработчикам развёртывать модели на мобильных, встраиваемых и периферийных устройствах:

  • Эффективность и высокая производительность: модели NCNN компактны и оптимизированы для мобильных и встраиваемых устройств с ограниченными ресурсами, например Raspberry Pi, при этом они обеспечивают высокую точность в задачах компьютерного зрения.

  • Квантование: NCNN поддерживает квантование — метод снижения точности весов и активаций модели, который повышает производительность и уменьшает потребление памяти.

  • Совместимость: модели NCNN совместимы с популярными фреймворками глубокого обучения, включая TensorFlow, Caffe и ONNX, что позволяет разработчикам использовать существующие модели и рабочие процессы.

  • Простота использования: NCNN предоставляет удобные инструменты для преобразования моделей между форматами, обеспечивая совместную работу в разных средах разработки.

  • Ускорение на GPU через Vulkan: NCNN поддерживает Vulkan для ускорения инференса на GPU разных производителей, включая AMD, Intel и других, кроме 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

# Загрузить экспортированную модель NCNN
ncnn_model = YOLO("./yolo26n_ncnn_model")

# Запуск инференса с ускорением на GPU через Vulkan (первое устройство Vulkan)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")

# Использование второго устройства Vulkan в системах с несколькими GPU
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

# Загрузи модель YOLO26
model = YOLO("yolo26n.pt")

# Экспортировать модель в формат NCNN
model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'
Предсказание
from ultralytics import YOLO

# Загрузить экспортированную модель NCNN
model = YOLO("./yolo26n_ncnn_model")

# Выполнить инференс
results = model("https://ultralytics.com/images/bus.jpg")
Проверка
from ultralytics import YOLO

# Загрузить экспортированную модель NCNN
model = YOLO("./yolo26n_ncnn_model")

# Проверить точность на наборе данных COCO8
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
      
      # Загрузи модель YOLO26
      model = YOLO("yolo26n.pt")
      
      # Экспорт в формат NCNN
      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 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 AMD, Intel и других производителей, кроме NVIDIA. Чтобы использовать Vulkan:

    from ultralytics import YOLO
    
    # Загрузка модели NCNN и запуск с GPU через Vulkan
    model = YOLO("yolo26n_ncnn_model")
    results = model("image.jpg", device="vulkan:0")  # Использование первого устройства Vulkan

    Для систем с несколькими GPU укажи индекс устройства (например, vulkan:1 для второго GPU). Убедись, что для GPU установлены драйверы Vulkan. Подробнее смотри в разделе «Ускорение на GPU через Vulkan».

Комментарии