Обнаружение объектов — сложная задача, но она становится все более важной по мере того, как мы движемся в мир, где машины должны понимать окружающий их мир. Я уверен, что многие из вас наверняка слышали о знаменитом алгоритме YOLO (You Only Look Once), если вы знакомы с миром компьютерного зрения. Теперь у нас есть YOLO-NAS — новая модель обнаружения объектов, более эффективная и точная, чем предыдущие версии YOLO. Он работает с использованием метода поиска нейронной архитектуры (NAS) для автоматического проектирования сетевой архитектуры. Это означает, что YOLO-NAS может найти лучшую сетевую архитектуру для конкретной задачи без вмешательства человека. Думайте об этом как о YOLO на стероидах, с дополнительной каплей магии. Как будто YOLO решил пойти в спортзал, выучить несколько новых трюков и вернуться еще сильнее, быстрее и умнее, чем когда-либо прежде.

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

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

В этом сообщении блога мы более подробно рассмотрим YOLO-NAS и посмотрим, как он работает.

Версии YOLO-NAS:

YOLO-NAS — это новая модель обнаружения объектов, представленная в трех размерах: S, M и L. Размер модели определяет ее точность и эффективность. Версия S — самая маленькая и эффективная, но и наименее точная. Версия M — это хороший баланс между точностью и эффективностью. Версия L является самой большой и точной, но и наименее эффективной.

В дополнение к трем основным версиям существуют также квантованные версии YOLO-NAS. Квантованные модели меньше и быстрее, чем неквантованные модели, но они могут иметь немного более низкую точность.

Давайте попробуем лучше понять квантизацию.
Квантизация — это полезный метод для развертывания моделей глубокого обучения на устройствах с ограниченными ресурсами, таких как мобильные телефоны, встроенные системы или устройства IoT. Это позволяет модели быть более легкой, уменьшая объем памяти и обеспечивая вывод в реальном времени на устройствах с ограниченной вычислительной мощностью.

  1. Модель YOLO без квантования. В контексте машинного обучения и нейронных сетей квантование означает процесс преобразования высокоточных чисел с плавающей запятой (обычно 32-битных) в менее точные числа с фиксированной запятой или целочисленные представления. Когда мы говорим о модели YOLO без квантования, это означает, что параметры модели, активации и вычисления представлены с полной точностью (обычно 32-битные числа с плавающей запятой). Это приводит к более точной, но потенциально более крупной и ресурсоемкой модели.
  2. Модель YOLO с квантованием. С другой стороны, модель YOLO с квантованием применяет технику квантования к параметрам и активациям модели. Используя представления с более низкой точностью (например, 8-битное представление с фиксированной точкой или даже двоичное), модель становится более эффективной с точки зрения использования памяти и быстрее в вычислительном отношении. Однако недостатком квантования является то, что оно может привести к небольшому ухудшению точности модели по сравнению с аналогом полной точности.

Использование AutoNAC в YOLO-NAS:

В YOLO-NAS AutoNAC используется для проектирования сетевой архитектуры. AutoNAC означает автоматизированное построение нейронной архитектуры. Это метод, который использует машинное обучение для автоматического проектирования архитектуры нейронных сетей. Это сложная задача, поскольку существует огромное количество возможных архитектур на выбор. AutoNAC решает эту проблему, используя алгоритм обучения с подкреплением для поиска лучшей архитектуры для конкретной задачи.

Использование AutoNAC в YOLO-NAS имеет несколько преимуществ. Во-первых, это позволяет YOLO-NAS найти более эффективную сетевую архитектуру, чем те, которые могут быть разработаны людьми. Во-вторых, использование AutoNAC позволяет YOLO-NAS найти более масштабируемую сетевую архитектуру.

В целом использование AutoNAC является значительным улучшением по сравнению с предыдущими версиями YOLO. Это делает YOLO-NAS мощным инструментом для приложений обнаружения объектов.

Кроме того, YOLO-NAS предварительно обучен на известных наборах данных, таких как COCO, Objects365 и Roboflow 100. Предварительное обучение YOLO-NAS на большом наборе данных изображений позволяет ему изучать характеристики, общие для объектов. Это делает его более точным при обнаружении объектов на новых изображениях.

Внедрение YOLO-NAS:

Шаг 1: Чтобы опробовать YOLO-NAS, нам нужно установить библиотеку суперградиентов, которая представляет собой библиотеку компьютерного зрения Deci на основе Pytorch.

pip install super-gradients

Шаг 2: Импортируйте библиотеку Super-Gradients и извлеките модель, используя версию в соответствии с вашими требованиями. Здесь мы будем использовать версию yolo_nas_l.

from super_gradients.training import models
#Retrieve the model
yolo_nas_l = models.get("yolo_nas_l", pretrained_weights="coco")

Шаг 3: Делайте выводы по изображениям. Я использовал следующие коды для вывода.

#Infer on an image
url = 'https://www.heart.org/-/media/Images/News/2022/April-2022/0406WalkingSpeedHealth_SC.jpg'
yolo_nas_l.predict(url).show()

url_2 = 'https://www.cultofmac.com/wp-content/uploads/2021/11/Setup-Cypher_27-Reddit-Nov-4-2021-1536x1152.jpg'
yolo_nas_l.predict(url_2).show()

url_3 = 'https://ggsc.s3.amazonaws.com/images/made/images/uploads/The_Emotional_Life_of_Animals_And_What_It_Means_for_Us_600_399_int_c1-2x.png'
yolo_nas_l.predict(url_3).show()

Вот выходные изображения, созданные моделью:

Как вы можете видеть в Результате №1, даже фоновые объекты, такие как паркомат и пожарный гидрант, обнаруживаются моделью. Это доказывает работоспособность модели.

#БОНУСНЫЙ СОВЕТ:

Во время установки YOLO-NAS у меня возникли трудности с установкой суперградиентов в моей среде. У него было несколько ошибок, таких как:
ошибка: не удалось построить колеса для pycocotools, что необходимо для установки проектов на основе pyproject.toml’

Если вы столкнулись с подобными проблемами, попробуйте загрузить инструменты сборки Visual Studio по ссылке ниже:
https://visualstudio.microsoft.com/downloads/

После завершения загрузки выберите инструменты, как показано на изображении ниже, и завершите настройку, установив их. Надеюсь, после этого установка суперградиентов заработает, как у меня.

Заключение:

В этом сообщении блога мы рассмотрели модель обнаружения объектов YOLO-NAS. Мы видели, как YOLO-NAS использует AutoNAC для автоматического проектирования архитектур нейронных сетей. Мы также видели, как Super Gradients можно использовать для обучения и развертывания YOLO-NAS.

В целом, YOLO-NAS — это мощный инструмент, который можно использовать для создания эффективных и точных приложений для обнаружения объектов.
Некоторые дополнительные мысли:

  1. YOLO-NAS по-прежнему является относительно новой моделью, так что есть куда совершенствоваться. Тем не менее, он уже подает большие надежды и может произвести революцию в области обнаружения объектов.
  2. Использование поиска по нейронной архитектуре — быстро развивающаяся область, и помимо Super Gradients доступно множество других библиотек NAS. Если вы хотите узнать больше о NAS, я рекомендую вам ознакомиться с некоторыми другими доступными библиотеками.

Спасибо, что дочитали до конца. Вот мой LinkedIn, если вы хотите подключиться!
https://www.linkedin.com/in/rania-syed-89596a21a/

Использованная литература:

https://medium.com/codex/decis-yolo-nas-next-generation-model-for-object-detection-8ccb7f2013a7

https://docs.ultralytics.com/models/yolo-nas/