Пробуем YOLO-World на практике
Узнай о YOLO-World — модели обнаружения объектов с открытым словарём, работающей в реальном времени и находящей объекты по текстовым запросам, а также о её применении и простом примере кода.
Abirami Vina7 мин. чтения
В проектах компьютерного зрения часто приходится тратить много времени на разметку данных и обучение моделей обнаружения объектов. Но вскоре это может измениться. 31 января 2024 года лаборатория ИИ Tencent выпустила YOLO-World — модель обнаружения объектов в реальном времени с открытым словарём. YOLO-World — это модель обнаружения без примеров, то есть ты можешь запускать инференс для обнаружения объектов на изображениях без предварительного обучения модели.
Модели с обучением без примеров способны изменить наш подход к применению компьютерного зрения. В этой статье мы разберём, как работает YOLO-World, расскажем о возможных сценариях применения и приведём практический пример кода, с которого ты сможешь начать.
Знакомство с YOLO-World#
Передай модели YOLO-World изображение и текстовый запрос с описанием нужных объектов. Например, если на фотографии нужно найти «человека в красной рубашке», YOLO-World получит этот запрос и начнёт обработку.
Уникальная архитектура модели объединяет три основных компонента:
- Детектор на основе модели обнаружения объектов Ultralytics YOLOv8, который анализирует визуальное содержимое изображения.
- Текстовый энкодер, предварительно обученный с помощью CLIP от OpenAI и специально разработанный для понимания твоего текстового запроса.
- Сеть Re-parameterizable Vision-Language Path Aggregation Network (RepVL-PAN), которая объединяет обработанные данные изображений и текстовые данные.
Детектор YOLO сканирует входное изображение и определяет возможные объекты. Текстовый энкодер преобразует описание в формат, понятный модели. Затем эти два потока информации объединяются с помощью RepVL-PAN посредством многоуровневого межмодального слияния. Это позволяет YOLO-World точно обнаруживать и локализовать на изображении объекты, описанные в запросе.

Пример результатов работы YOLO-World.
Преимущества YOLO-World#
Одно из главных преимуществ YOLO-World — модель не нужно обучать для конкретного класса. Она уже обучилась на парах изображений и текстов, поэтому умеет находить объекты по описаниям. Тебе не придётся часами собирать и размечать данные, обучать модель на дорогих GPU и выполнять другие подобные задачи.
Вот ещё несколько преимуществ YOLO-World:
- Работа в реальном времени — YOLO-World, как и исходная архитектура YOLO, поддерживает обработку в реальном времени. Она идеально подходит для задач, требующих мгновенного обнаружения объектов, например для автономных транспортных средств и систем видеонаблюдения.
- Сегментация экземпляров — оригинальная версия YOLO-World включает варианты с сегментацией; в пакете Ultralytics YOLO-World выполняет обнаружение, а YOLOE добавляет сегментацию экземпляров с открытым словарём.
- Эффективность — YOLO-World сочетает высокую точность с вычислительной эффективностью, что делает её практичным решением для реальных задач. Упрощённая архитектура обеспечивает быстрое обнаружение объектов без чрезмерной нагрузки на вычислительные ресурсы.
Применение YOLO-World#
Модели YOLO-World можно использовать для самых разных задач. Рассмотрим некоторые из них.
Контроль качества на производстве#
Изделия, изготовленные на сборочной линии, визуально проверяют на наличие дефектов перед упаковкой. Часто дефекты ищут вручную, что занимает время и может привести к ошибкам. Такие ошибки могут вызвать дополнительные расходы, необходимость ремонта или отзыва продукции. Для решения этой задачи разработаны специальные камеры машинного зрения и системы ИИ, выполняющие проверку.
Модели YOLO-World — значительный шаг вперёд в этой области. Благодаря возможностям обнаружения без примеров они находят дефекты продукции, даже если не обучались решать конкретно эту задачу. Например, на фабрике по производству бутылок для воды YOLO-World может отличить бутылку с правильно закрученной крышкой от бутылки с отсутствующей или бракованной крышкой.

Пример проверки крышек на бутылках.
Робототехника#
Модели YOLO-World помогают роботам взаимодействовать с незнакомой средой. Даже без обучения на конкретных объектах, которые могут находиться в помещении, они способны определять, какие объекты там есть. Например, робот попадает в незнакомую комнату. Модель YOLO-World всё равно распознает и определит такие объекты, как стулья, столы или лампы, хотя её специально не обучали на этих предметах.
Помимо обнаружения объектов, YOLO-World также может определять их состояние благодаря функции «сначала запрос, затем обнаружение». Например, в сельскохозяйственной робототехнике модель можно использовать для обнаружения спелых и неспелых фруктов, задав соответствующую задачу роботу.
ИИ в автомобильной промышленности#
В автомобильной промышленности множество движущихся частей, и YOLO-World можно применять для разных задач, связанных с автомобилями. Например, при техническом обслуживании полезна способность YOLO-World распознавать самые разные объекты без ручной разметки или длительного предварительного обучения. YOLO-World можно использовать для определения деталей автомобиля, которые нужно заменить. Модель также может автоматизировать проверку качества новых автомобилей, обнаруживая дефекты и отсутствующие детали.
Ещё один вариант применения — обнаружение объектов без примеров в беспилотных автомобилях. Благодаря этой возможности YOLO-World может повысить способность автономного транспортного средства в реальном времени обнаруживать и классифицировать объекты на дороге, например пешеходов, дорожные знаки и другие автомобили. Это помогает выявлять препятствия и предотвращать аварии, делая поездки безопаснее.

Пример обнаружения объектов на дороге.
Управление запасами в розничных магазинах#
Распознавание объектов на полках в розничных магазинах важно для отслеживания запасов, поддержания наличия товаров и автоматизации процессов. Обнаружение объектов с открытым словарём в Ultralytics YOLO-World также полезно для управления запасами.
Например, при управлении запасами YOLO-World может быстро обнаруживать товары на полке и классифицировать их, например различать энергетические напитки разных брендов. Розничные магазины могут точнее учитывать товары, эффективно управлять запасами и оптимизировать работу цепочек поставок.
Все эти сценарии уникальны и показывают, насколько широко можно применять YOLO-World. Теперь давай перейдём к практике и рассмотрим пример кода для YOLO-World.
Разбор примера кода#
Как мы уже упоминали, YOLO-World можно использовать для обнаружения разных деталей автомобиля при техническом обслуживании. Приложение компьютерного зрения для выявления необходимости ремонта должно сфотографировать автомобиль, определить его детали, проверить каждую деталь на наличие повреждений и рекомендовать ремонт. В каждом компоненте такой системы использовались бы разные методы и подходы ИИ. В этом разборе кода сосредоточимся на обнаружении деталей автомобиля.
С помощью YOLO-World ты можешь обнаружить разные детали автомобиля на изображении менее чем за 5 минут. Ты также можешь доработать этот код и опробовать другие сценарии применения YOLO-World. Для начала установим пакет Ultralytics с помощью pip, как показано ниже.
pip install ultralyticsПодробные инструкции и рекомендации по установке смотри в руководстве Установка Ultralytics. Если при установке необходимых пакетов для YOLOv8 возникнут трудности, загляни в руководство Распространённые проблемы, чтобы найти решения и полезные советы.
После установки нужного пакета можно скачать из Интернета изображение, на котором мы выполним инференс. Используем изображение ниже.

Наше входное изображение.
Затем импортируем нужный пакет, инициализируем модель и зададим классы объектов, которые будем искать на входном изображении. Нас интересуют следующие классы: автомобиль, колесо, дверь автомобиля, зеркало автомобиля и номерной знак.
Затем мы используем метод predict, передавая путь к изображению и параметры: максимальное число обнаружений, пороги пересечения над объединением (IoU) и уверенности (conf). После этого запускаем инференс на изображении. В завершение обнаруженные объекты сохраняются в файл с именем result.jpg.
from ultralytics import YOLOWorld
# Инициализируем модель YOLO-World
model = YOLOWorld("yolov8s-worldv2.pt")
# Задаём пользовательские классы для обнаружения
model.set_classes(["car", "wheel", "car door", "car mirror", "license plate"])
# Запускаем инференс, задав максимальное число обнаружений и пороги IoU и уверенности
results = model.predict("path/to/image.jpg", max_det=100, iou=0.5, conf=0.25)
# Сохраняем результат с аннотациями
results[0].save("result.jpg")Следующее выходное изображение будет сохранено в твоих файлах.

Наше выходное изображение.
Если ты хочешь посмотреть, на что способен YOLO-World, не написав ни строчки кода, перейди на страницу демонстрации YOLO-World, загрузи входное изображение и введи собственные классы.
Прочитай документацию по YOLO-World, чтобы узнать, как сохранить модель с пользовательскими классами и использовать её в дальнейшем без повторного ввода этих классов.
Ты заметил, что двери автомобиля не обнаружились?#
Если ещё раз посмотреть на выходное изображение, можно заметить, что пользовательский класс «дверь автомобиля» не обнаружен. Несмотря на впечатляющие результаты, у YOLO-World есть определённые ограничения. Чтобы справиться с ними и эффективно использовать модель YOLO-World, важно правильно формулировать текстовые запросы.
Вот несколько советов:
- Для точных предсказаний YOLO-World может не требоваться высокий порог уверенности, поэтому его снижение может повысить частоту обнаружения объектов.
- Добавь классы, которые тебя не интересуют. Это поможет улучшить обнаружение основных объектов за счёт сокращения числа ложных срабатываний для второстепенных объектов.
- Сначала обнаруживай крупные объекты, а затем переходи к мелким деталям — это может повысить точность обнаружения.
- Указывай цвета в названиях классов, чтобы обнаруживать объекты по цветовым признакам.
- Описание размеров объектов в запросах также может помочь YOLO-World точнее определять нужные объекты.
- Методы постобработки, например фильтрация предсказаний по размеру или настройка порогов уверенности для каждого класса, могут дополнительно повысить качество обнаружения объектов.
Возможности безграничны#
В целом модели YOLO-World могут стать мощным инструментом благодаря передовым возможностям обнаружения объектов. Они обеспечивают высокую эффективность и точность и помогают автоматизировать различные задачи в самых разных областях, например обнаружение деталей автомобиля, которое мы рассмотрели на практическом примере.
Загляни в наш репозиторий GitHub, чтобы узнать больше о нашем вкладе в компьютерное зрение и ИИ. Если тебе интересно, как ИИ меняет такие отрасли, как технологии здравоохранения, посмотри страницы с нашими решениями. YOLO-World открывает множество новых возможностей для ИИ в области компьютерного зрения.
Автор
Комментарии
Задай вопрос, поделись результатами или помоги кому-нибудь.










