Перейти к содержимому

YOLO-Модель мира

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

YOLO-Обзор архитектуры модели мира

Обзор

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

Основные характеристики

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

  2. Эффективность и производительность: YOLO-World снижает требования к вычислениям и ресурсам без ущерба для производительности, предлагая надежную альтернативу таким моделям, как SAM , но с меньшими вычислительными затратами, что позволяет использовать приложения в реальном времени.

  3. Inference with Offline Vocabulary: YOLO-World представляет стратегию "prompt-then-detect", использующую оффлайн-словарь для дальнейшего повышения эффективности. Этот подход позволяет использовать пользовательские подсказки, вычисленные apriori, включая подписи или категории, которые кодируются и хранятся как вкрапления офлайн-словаря, что упрощает процесс обнаружения.

  4. Powered by YOLOv8: Built upon Ultralytics YOLOv8YOLO-World использует последние достижения в области обнаружения объектов в реальном времени, чтобы обеспечить обнаружение открытых словарей с непревзойденной точностью и скоростью.

  5. Превосходство в бенчмарках: YOLO-World превосходит существующие детекторы открытых словарей, включая MDETR и серию GLIP, по скорости и эффективности в стандартных бенчмарках, демонстрируя превосходство YOLOv8 на одном графическом процессоре NVIDIA V100.

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

Доступные модели, поддерживаемые задачи и режимы работы

В этом разделе подробно описаны доступные модели с их конкретными предварительно обученными весами, задачи, которые они поддерживают, и их совместимость с различными режимами работы, такими как Inference, Validation, Training и Export, обозначенными ✅ для поддерживаемых режимов и ❌ для неподдерживаемых режимов.

Примечание

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

Тип модели Предварительно обученные веса Поддерживаемые задачи Заключение Валидация Тренировка Экспорт
YOLOv8s-world yolov8s-world.pt Обнаружение объектов
YOLOv8s-worldv2 yolov8s-worldv2.pt Обнаружение объектов
YOLOv8m-world yolov8m-world.pt Обнаружение объектов
YOLOv8m-worldv2 yolov8m-worldv2.pt Обнаружение объектов
YOLOv8l-world yolov8l-world.pt Обнаружение объектов
YOLOv8l-worldv2 yolov8l-worldv2.pt Обнаружение объектов
YOLOv8x-world yolov8x-world.pt Обнаружение объектов
YOLOv8x-worldv2 yolov8x-worldv2.pt Обнаружение объектов

Передача нуля на наборе данных COCO

Тип модели mAP mAP50 mAP75
yolov8s-world 37.4 52.0 40.6
yolov8s-worldv2 37.7 52.2 41.0
yolov8m-world 42.0 57.0 45.6
yolov8m-worldv2 43.0 58.4 46.8
yolov8l-world 45.7 61.3 49.8
yolov8l-worldv2 45.8 61.3 49.8
yolov8x-world 47.0 63.0 51.2
yolov8x-worldv2 47.1 62.8 51.4

Примеры использования

Модели YOLO-World легко интегрировать в твои Python-приложения. Ultralytics предоставляет удобный Python API и CLI-команды, чтобы упростить разработку.

Использование поезда

Наконечник

Мы настоятельно рекомендуем использовать yolov8-worldv2 Модель для пользовательского обучения, потому что она поддерживает детерминированное обучение, а также легко экспортируется в другие форматы, например onnx/tensorrt.

Обнаружение объектов легко осуществляется с помощью train метод, как показано ниже:

Пример

PyTorch предварительно обученный *.pt модели, а также конфигурации *.yaml файлы могут быть переданы в YOLOWorld() класс, чтобы создать экземпляр модели в python:

from ultralytics import YOLOWorld

# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld('yolov8s-worldv2.pt')

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data='coco8.yaml', epochs=100, imgsz=640)

# Run inference with the YOLOv8n model on the 'bus.jpg' image
results = model('path/to/bus.jpg')
# Load a pretrained YOLOv8s-worldv2 model and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov8s-worldv2.yaml data=coco8.yaml epochs=100 imgsz=640

Предсказать использование

Обнаружение объектов легко осуществляется с помощью predict метод, как показано ниже:

Пример

from ultralytics import YOLOWorld

# Initialize a YOLO-World model
model = YOLOWorld('yolov8s-world.pt')  # or select yolov8m/l-world.pt for different sizes

# Execute inference with the YOLOv8s-world model on the specified image
results = model.predict('path/to/image.jpg')

# Show results
results[0].show()
# Perform object detection using a YOLO-World model
yolo predict model=yolov8s-world.pt source=path/to/image.jpg imgsz=640

Этот сниппет демонстрирует простоту загрузки предварительно обученной модели и выполнения предсказания на изображении.

Использование вала

Проверка модели на наборе данных проходит следующим образом:

Пример

from ultralytics import YOLO

# Create a YOLO-World model
model = YOLO('yolov8s-world.pt')  # or select yolov8m/l-world.pt for different sizes

# Conduct model validation on the COCO8 example dataset
metrics = model.val(data='coco8.yaml')
# Validate a YOLO-World model on the COCO8 dataset with a specified image size
yolo val model=yolov8s-world.pt data=coco8.yaml imgsz=640

Примечание

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

Установите подсказки

YOLO-Обзор имен классов оперативной связи в мире

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

Например, если в твоем приложении требуется обнаружить только объекты типа "человек" и "автобус", ты можешь указать эти классы напрямую:

Пример

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", "bus"])

# Execute prediction for specified categories on an image
results = model.predict('path/to/image.jpg')

# Show results
results[0].show()

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

Пример

Сначала загрузи модель YOLO-World, установи для нее пользовательские классы и сохрани ее:

from ultralytics import YOLO

# Initialize a YOLO-World model
model = YOLO('yolov8s-world.pt')  # or select yolov8m/l-world.pt

# Define custom classes
model.set_classes(["person", "bus"])

# Save the model with the defined offline vocabulary
model.save("custom_yolov8s.pt")

После сохранения модель custom_yolov8s.pt ведет себя так же, как и любая другая предварительно обученная модель YOLOv8, но с ключевым отличием: теперь она оптимизирована для обнаружения только тех классов, которые ты определил. Такая настройка может значительно повысить производительность и эффективность обнаружения для твоих конкретных сценариев применения.

from ultralytics import YOLO

# Load your custom model
model = YOLO('custom_yolov8s.pt')

# Run inference to detect your custom classes
results = model.predict('path/to/image.jpg')

# Show results
results[0].show()

Преимущества экономии с помощью пользовательского словаря

  • Эффективность: Упрощает процесс обнаружения, фокусируясь на релевантных объектах, снижая вычислительные затраты и ускоряя вывод.
  • Гибкость: Позволяет легко адаптировать модель к новым или нишевым задачам обнаружения без необходимости обширного переобучения или сбора данных.
  • Простота: Упрощает развертывание, избавляя от необходимости многократно указывать пользовательские классы во время выполнения, делая модель непосредственно пригодной для использования с ее встроенным словарем.
  • Производительность: Повышает точность обнаружения заданных классов, фокусируя внимание и ресурсы модели на распознавании определенных объектов.

Такой подход дает мощное средство для настройки современных моделей обнаружения объектов под конкретные задачи, делая продвинутый ИИ более доступным и применимым для более широкого спектра практических приложений.

Воспроизведи официальные результаты с нуля(Экспериментально)

Подготовь наборы данных

  • Данные о поезде
Набор данных Тип Образцы Коробки Файлы с аннотациями
Объекты365v1 Обнаружение 609k 9621k objects365_train.json
GQA Заземление 621k 3681k final_mixed_train_no_coco.json
Flickr30k Заземление 149k 641k final_flickr_separateGT_train.json
  • Вал данных
Набор данных Тип Файлы с аннотациями
Лвис минивал Обнаружение minival.txt

Начни обучение с нуля

Примечание

WorldTrainerFromScratch очень хорошо настроен и позволяет тренировать yolo-world модели одновременно на наборах данных обнаружения и заземления. Более подробную информацию можно найти на сайте ultralytics.model.yolo.world.train_world.py.

Пример

from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch
from ultralytics import YOLOWorld

data = dict(
    train=dict(
        yolo_data=["Objects365.yaml"],
        grounding_data=[
            dict(
                img_path="../datasets/flickr30k/images",
                json_file="../datasets/flickr30k/final_flickr_separateGT_train.json",
            ),
            dict(
                img_path="../datasets/GQA/images",
                json_file="../datasets/GQA/final_mixed_train_no_coco.json",
            ),
        ],
    ),
    val=dict(yolo_data=["lvis.yaml"]),
)
model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch)

Цитаты и благодарности

Мы выражаем благодарность центру компьютерного зрения Tencent AILab за их новаторскую работу по обнаружению объектов с открытой лексикой в реальном времени с помощью YOLO-World:

@article{cheng2024yolow,
title={YOLO-World: Real-Time Open-Vocabulary Object Detection},
author={Cheng, Tianheng and Song, Lin and Ge, Yixiao and Liu, Wenyu and Wang, Xinggang and Shan, Ying},
journal={arXiv preprint arXiv:2401.17270},
year={2024}
}

Для дальнейшего чтения оригинальная статья YOLO-World доступна на arXiv. Исходный код проекта и дополнительные ресурсы доступны через их репозиторий GitHub. Мы ценим их стремление развивать эту область и делиться своими ценными знаниями с сообществом.



Создано 2024-02-14, Обновлено 2024-04-17
Авторы: glenn-jocher (3), Burhan-Q (1), Laughing-q (4)

Комментарии