YOLO-NAS#
Обрати внимание: Deci, первоначальные разработчики YOLO-NAS, была приобретена NVIDIA. Поэтому Deci больше не занимается активной поддержкой этих моделей. Ultralytics продолжает поддерживать их использование, но дальнейших обновлений от исходной команды не ожидается.
Обзор#
Разработанная Deci AI, YOLO-NAS — это новаторская базовая модель для обнаружения объектов. Она создана с применением передовой технологии поиска нейронных архитектур и тщательно спроектирована для устранения ограничений предыдущих моделей YOLO. Благодаря существенному улучшению поддержки квантования и компромисса между точностью и задержкой YOLO-NAS стала большим шагом вперёд в обнаружении объектов.
Обзор YOLO-NAS. В YOLO-NAS для достижения оптимальной производительности используются блоки с учётом квантования и выборочное квантование. При преобразовании модели в квантованную версию INT8 точность снижается минимально — это значительное улучшение по сравнению с другими моделями. Эти достижения позволили создать превосходную архитектуру с беспрецедентными возможностями обнаружения объектов и выдающейся производительностью.
Основные особенности#
- Базовый блок, удобный для квантования: YOLO-NAS представляет новый базовый блок, оптимизированный для квантования, что устраняет одно из существенных ограничений предыдущих моделей YOLO.
- Продвинутое обучение и квантование: YOLO-NAS использует передовые схемы обучения и квантование после обучения для повышения производительности.
- Оптимизация AutoNAC и предварительное обучение: YOLO-NAS использует оптимизацию AutoNAC и предварительно обучена на известных наборах данных, таких как COCO, Objects365 и Roboflow 100. Благодаря этому модель отлично подходит для последующего решения задач обнаружения объектов в производственной среде.
Предварительно обученные модели#
Оцени возможности обнаружения объектов нового поколения с предварительно обученными моделями YOLO-NAS от Ultralytics. Эти модели обеспечивают первоклассную скорость и точность. Выбирай из нескольких вариантов, созданных для разных задач:
| Модель | mAP | Задержка (мс) |
|---|---|---|
| YOLO-NAS S | 47.5 | 3.21 |
| YOLO-NAS M | 51.55 | 5.85 |
| YOLO-NAS L | 52.22 | 7.87 |
| YOLO-NAS S INT-8 | 47.03 | 2.36 |
| YOLO-NAS M INT-8 | 51.0 | 3.78 |
| YOLO-NAS L INT-8 | 52.1 | 4.78 |
Каждый вариант модели обеспечивает баланс между средней точностью (mAP) и задержкой, помогая оптимизировать задачи обнаружения объектов с учётом производительности и скорости.
Примеры использования#
Ultralytics упростила интеграцию моделей YOLO-NAS в приложения Python с помощью нашего пакета Python ultralytics. Пакет предоставляет удобный API Python, упрощающий этот процесс.
В примерах ниже показано, как использовать модели YOLO-NAS для инференса и валидации с пакетом ultralytics:
Примеры инференса и валидации#
В этом примере мы валидируем YOLO-NAS-s на наборе данных COCO8.
В этом примере приведён простой код для инференса и валидации YOLO-NAS. Информацию об обработке результатов инференса см. в режиме Predict. О других режимах работы с YOLO-NAS см. разделы Val и Export. Пакет ultralytics не поддерживает обучение YOLO-NAS.
Файлы предварительно обученных моделей *.pt для PyTorch можно передать классу NAS(), чтобы создать экземпляр модели в Python:
from ultralytics import NAS
# Загружаем предварительно обученную на COCO модель YOLO-NAS-s
model = NAS("yolo_nas_s.pt")
# Показать информацию о модели (необязательно)
model.info()
# Валидируем модель на демонстрационном наборе данных COCO8
results = model.val(data="coco8.yaml")
# Запускаем инференс моделью YOLO-NAS-s на изображении 'bus.jpg'
results = model("path/to/bus.jpg")Поддерживаемые задачи и режимы#
Мы предлагаем три варианта моделей YOLO-NAS: малую (s), среднюю (m) и большую (l). Каждый вариант предназначен для разных вычислительных ресурсов и требований к производительности:
- YOLO-NAS-s: оптимизирована для сред с ограниченными вычислительными ресурсами, где важна эффективность.
- YOLO-NAS-m: обеспечивает сбалансированный подход и подходит для универсального обнаружения объектов с более высокой точностью.
- YOLO-NAS-l: предназначена для сценариев, где требуется максимальная точность и вычислительные ресурсы не являются ограничением.
Ниже приведён подробный обзор каждой модели, включая ссылки на предварительно обученные веса, поддерживаемые задачи и совместимость с различными режимами работы.
| Тип модели | Предобученные веса | Поддерживаемые задачи | Обучение | Валидация | Инференс | Экспорт |
|---|---|---|---|---|---|---|
| YOLO-NAS-s | yolo_nas_s.pt | Обнаружение объектов | ❌ | ✅ | ✅ | ✅ |
| YOLO-NAS-m | yolo_nas_m.pt | Обнаружение объектов | ❌ | ✅ | ✅ | ✅ |
| YOLO-NAS-l | yolo_nas_l.pt | Обнаружение объектов | ❌ | ✅ | ✅ | ✅ |
Цитирование и благодарности#
Если ты используешь YOLO-NAS в исследовательской или инженерной работе, укажи SuperGradients в списке цитируемых источников:
@misc{supergradients,
doi = {10.5281/ZENODO.7789328},
url = {https://zenodo.org/records/7789328},
author = {Aharon, Shay and {Louis-Dupont} and {Ofri Masad} and Yurkova, Kate and {Lotem Fridman} and {Lkdci} and Khvedchenya, Eugene and Rubin, Ran and Bagrov, Natan and Tymchenko, Borys and Keren, Tomer and Zhilko, Alexander and {Eran-Deci}},
title = {Super-Gradients},
publisher = {GitHub},
journal = {GitHub repository},
year = {2021},
}Мы благодарим команду SuperGradients от Deci AI за создание и поддержку этого ценного ресурса для сообщества компьютерного зрения. Мы считаем, что благодаря инновационной архитектуре и превосходным возможностям обнаружения объектов YOLO-NAS станет важным инструментом для разработчиков и исследователей.
Часто задаваемые вопросы#
YOLO-NAS, разработанная Deci AI, — это современная модель обнаружения объектов, использующая передовую технологию поиска нейронных архитектур (NAS). Она устраняет ограничения предыдущих моделей YOLO благодаря таким особенностям, как базовые блоки, удобные для квантования, и продвинутые схемы обучения. Это значительно повышает производительность, особенно в условиях ограниченных вычислительных ресурсов. YOLO-NAS также поддерживает квантование и сохраняет высокую точность даже после преобразования в версию INT8, что делает её более подходящей для производственной среды. Подробнее см. в разделе Обзор.
Ты можешь легко интегрировать модели YOLO-NAS в приложение Python с помощью пакета
ultralytics. Ниже приведён простой пример загрузки предварительно обученной модели YOLO-NAS и выполнения инференса:from ultralytics import NAS # Загружаем предварительно обученную на COCO модель YOLO-NAS-s model = NAS("yolo_nas_s.pt") # Валидируем модель на демонстрационном наборе данных COCO8 results = model.val(data="coco8.yaml") # Запускаем инференс моделью YOLO-NAS-s на изображении 'bus.jpg' results = model("path/to/bus.jpg")Подробнее см. в разделе Примеры инференса и валидации.
YOLO-NAS предлагает несколько ключевых возможностей, благодаря которым она отлично подходит для обнаружения объектов:
- Базовый блок, удобный для квантования: усовершенствованная архитектура, которая повышает производительность модели с минимальным снижением точности после квантования.
- Продвинутое обучение и квантование: используются передовые схемы обучения и методы квантования после обучения.
- Оптимизация AutoNAC и предварительное обучение: используется оптимизация AutoNAC, а предварительное обучение проводится на известных наборах данных, таких как COCO, Objects365 и Roboflow 100.
Эти особенности обеспечивают высокую точность, эффективную работу и пригодность модели для развертывания в производственной среде. Подробнее см. в разделе Основные возможности.
Модели YOLO-NAS поддерживают различные задачи и режимы обнаружения объектов, например инференс, валидацию и экспорт. Обучение не поддерживается. К поддерживаемым моделям относятся YOLO-NAS-s, YOLO-NAS-m и YOLO-NAS-l, каждая из которых рассчитана на разные вычислительные возможности и требования к производительности. Подробный обзор см. в разделе Поддерживаемые задачи и режимы.
Да, Ultralytics предоставляет предварительно обученные модели YOLO-NAS, к которым можно получить прямой доступ. Эти модели предварительно обучены на таких наборах данных, как COCO, что обеспечивает высокую скорость и точность. Скачать эти модели можно по ссылкам в разделе Предварительно обученные модели. Вот несколько примеров: