Первый взгляд на модель мира Yolo (YOLO-World)

31 января 2024 года была выпущена модель YOLO-World - модель обнаружения объектов с открытым словарем в реальном времени. Git:

https://github.com/AILab-CVC/YOLO-World

Аннотация с сайта:

Модель YOLO-World Model представляет собой продвинутую, работающую в режиме реального времени Ultralytics YOLOv8-подход к решению задач по обнаружению открытых словарей. Эта инновация позволяет обнаружить любой объект на изображении на основе описательных текстов. Благодаря значительному снижению вычислительных требований при сохранении конкурентоспособной производительности, YOLO-World становится универсальным инструментом для множества приложений, основанных на зрении.

https://docs.ultralytics.com/ru/models/yolo-world/

Т.е. другими словами, Yolo-world - это Zero-Shot модель, позволяющая начать использование модели детектирования объектов без тренировки. Если взглянуть на быстродействие модели, по сравнению с текущими моделями подобного назначения, то оно впечатляет:

2024-02-20_15-11-51

Общая архитектура YOLO-World:

2024-02-20_15-15-07

По сравнению с традиционными детекторами YOLO, YOLO-World как детектор открытого словаря принимает текст в качестве входных данных. Кодировщик текста сначала кодирует вложения входного текста. Затем Image Encoder кодирует входное изображение в многомасштабные функции изображения, а предлагаемый RepVL-PAN использует многоуровневое кросс-модальное слияние как для изображений, так и для текстовых функций. Наконец, YOLO-World прогнозирует  ограничивающие рамки и встраивания объектов для соответствия категориям или существительным, появившимся во входном тексте.

Конечно не надо думать, что данная модель распознает прямо всё. Датасеты, на которых обучалась модель: Objects365 - 365 классов объектов;  но потом увеличиваю с GoldG и с CC3M-Lite. Т.е. по сути в Yolov8, обученной на COCO, стандартные веса предоставляются для 80 объектов. А здесь объектов больше.  Плюс они, как и в языковых моделях, могут обучаться на комбинациях ембендингов. Т.е. две главные особенности:

  • можно комбинировать ембендинги - например, Golden dog, person with a white shirt и т.п. Т.е. можно уточнять объекты, добавляя какие-то характеристики (естественно из тех, которые были поддержаны обучением);
  •  уменьшая количество детектируемых классов, увеличивается качество работы моделей. 

Задавая пользовательские подсказки, пользователи могут по сути направлять внимание модели на интересующие их объекты, повышая релевантность и точность результатов обнаружения

https://docs.ultralytics.com/ru/models/yolo-world/

Это последняя особенность довольно интересна, но никак не подтверждена экспериментальными данными в статье:

https://arxiv.org/pdf/2401.17270.pdf

Попробуем, как это работает (можно на Colab). Устанавливаем ultralitics:

!pip install ultralytics

Загружаем тестовую картинку:

# Загрузить картинку

!wget https://media.wired.com/photos/63d06d8db478ca5c4a95f64e/1:1/w_1920,h_1920,c_limit/Bike-Bus-Gear-0G3A1248.jpg

Последовательно комментируя и раскомментируя пробуем 3 варианта:

from ultralytics import YOLO

 

# Initialize a YOLO-World model

model = YOLO('yolov8s-world.pt'# or choose yolov8m/l-world.pt

 

# Define custom classes

#model.set_classes(["person"])

#model.set_classes(["bike"])

model.set_classes(["red bike"])

 

 

# Execute prediction for specified categories on an image

results = model.predict('Bike-Bus-Gear-0G3A1248.jpg')

 

# Show results

results[0].show()

Выводим картинку:

from ultralytics.utils.plotting import Annotator

import cv2

img = cv2.imread('Bike-Bus-Gear-0G3A1248.jpg')

annotator = Annotator(img) 

for r in results[0]:         

  boxes = r.boxes

  for box in boxes:     

      b = box.xyxy[0]  # get box coordinates in (left, top, right, bottom) format

      c = box.cls

      annotator.box_label(b, model.names[int(c)])

 

img = annotator.result()

img = cv2.cvtColor(img,cv2.COLOR_RGB2BGR)

 

import matplotlib.pyplot as plt

 

fig, axes = plt.subplots(1, 1, figsize=(30, 15))

axes.imshow(img)

axes.axis('off')

plt.show()

Велосипеды

Велосипеды

Люди

Люди

Красные велосипеды

Красные велосипеды

Видно, что красных велосипедов нашлось много лишних - на комбинациях фраз пока работает далеко от идеала.