YOLO-Модель мира
Модель YOLO-World Model представляет собой продвинутую, работающую в режиме реального времени Ultralytics YOLOv8-подход к решению задач по обнаружению открытых словарей. Эта инновация позволяет обнаружить любой объект на изображении на основе описательных текстов. Благодаря значительному снижению вычислительных требований при сохранении конкурентоспособной производительности, YOLO-World становится универсальным инструментом для множества приложений, основанных на зрении.
Смотри: YOLO Всемирный процесс обучения на пользовательском наборе данных
Обзор
YOLO-World решает проблемы, с которыми сталкиваются традиционные модели обнаружения открытой лексики, которые часто опираются на громоздкие модели трансформеров, требующие больших вычислительных ресурсов. Зависимость этих моделей от заранее определенных категорий объектов также ограничивает их полезность в динамических сценариях. YOLO-World возрождает фреймворк YOLOv8 с возможностями обнаружения объектов с открытым словарем, используя моделирование языка зрения и предварительное обучение на обширных наборах данных, чтобы с непревзойденной эффективностью идентифицировать широкий спектр объектов в сценариях с нулевыми кадрами.
Основные характеристики
-
Решение в реальном времени: Используя скорость вычислений CNN, YOLO-World обеспечивает быстрое решение для обнаружения открытого словаря, удовлетворяя отрасли, нуждающиеся в немедленных результатах.
-
Эффективность и производительность: YOLO-World снижает требования к вычислениям и ресурсам без ущерба для производительности, предлагая надежную альтернативу таким моделям, как SAM , но с меньшими вычислительными затратами, что позволяет использовать приложения в реальном времени.
-
Inference with Offline Vocabulary: YOLO-World представляет стратегию "prompt-then-detect", использующую оффлайн-словарь для дальнейшего повышения эффективности. Этот подход позволяет использовать пользовательские подсказки, вычисленные apriori, включая подписи или категории, которые кодируются и хранятся как вкрапления офлайн-словаря, что упрощает процесс обнаружения.
-
Powered by YOLOv8: Built upon Ultralytics YOLOv8YOLO-World использует последние достижения в области обнаружения объектов в реальном времени, чтобы обеспечить обнаружение открытых словарей с непревзойденной точностью и скоростью.
-
Превосходство в бенчмарках: YOLO-World превосходит существующие детекторы открытого словаря, включая MDETR и серию GLIP, по скорости и эффективности на стандартных бенчмарках, демонстрируя YOLOv8'превосходные возможности на одном NVIDIA V100 GPU.
-
Универсальные приложения: 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")
Предсказать использование
Обнаружение объектов легко осуществляется с помощью 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()
Этот сниппет демонстрирует простоту загрузки предварительно обученной модели и выполнения предсказания на изображении.
Использование вала
Проверка модели на наборе данных проходит следующим образом:
Пример
Использование трека
Отслеживание объектов с помощью YOLO- модели мира на видео/изображениях упрощается следующим образом:
Пример
Примечание
Модели YOLO-World, предоставляемые сайтом Ultralytics , поставляются с предварительно настроенными категориями из набора данных COCO в качестве части их автономного словаря, что повышает эффективность для немедленного применения. Эта интеграция позволяет моделям YOLOv8-World напрямую распознавать и предсказывать 80 стандартных категорий, определенных в наборе данных COCO, не требуя дополнительной настройки или кастомизации.
Установите подсказки
Фреймворк 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, но с ключевым отличием: теперь она оптимизирована для обнаружения только тех классов, которые ты определил. Такая настройка может значительно повысить производительность и эффективность обнаружения для твоих конкретных сценариев применения.
Преимущества экономии с помощью пользовательского словаря
- Эффективность: Упрощает процесс обнаружения, фокусируясь на релевантных объектах, снижая вычислительные затраты и ускоряя вывод.
- Гибкость: Позволяет легко адаптировать модель к новым или нишевым задачам обнаружения без необходимости обширного переобучения или сбора данных.
- Простота: Упрощает развертывание, избавляя от необходимости многократно указывать пользовательские классы во время выполнения, делая модель непосредственно пригодной для использования с ее встроенным словарем.
- Производительность: Повышает точность обнаружения заданных классов, фокусируя внимание и ресурсы модели на распознавании определенных объектов.
Такой подход дает мощное средство для настройки современных моделей обнаружения объектов под конкретные задачи, делая продвинутый ИИ более доступным и применимым для более широкого спектра практических приложений.
Воспроизведи официальные результаты с нуля(Экспериментально)
Подготовь наборы данных
- Данные о поезде
Набор данных | Тип | Образцы | Коробки | Файлы с аннотациями |
---|---|---|---|---|
Объекты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 import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch
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:
Для дальнейшего чтения оригинальная статья YOLO-World доступна на arXiv. Исходный код проекта и дополнительные ресурсы доступны через их репозиторий GitHub. Мы ценим их стремление развивать эту область и делиться своими ценными знаниями с сообществом.
ВОПРОСЫ И ОТВЕТЫ
Что такое модель YOLO-World и как она работает?
Модель YOLO-World - это продвинутый подход к обнаружению объектов в реальном времени, основанный на Ultralytics YOLOv8 фреймворк. Она отлично справляется с задачами обнаружения объектов с открытым словарем, идентифицируя объекты на изображении на основе описательных текстов. Используя моделирование языка зрения и предварительное обучение на больших наборах данных, YOLO-World достигает высокой эффективности и производительности при значительно сниженных вычислительных требованиях, что делает его идеальным для приложений реального времени в различных отраслях.
Как YOLO-World обрабатывает умозаключения с пользовательскими подсказками?
YOLO-World поддерживает стратегию "подскажи - потом обнаружи", которая использует оффлайн-словарь для повышения эффективности. Пользовательские подсказки, такие как подписи или конкретные категории объектов, предварительно кодируются и хранятся в виде вкраплений офлайн-словаря. Такой подход упрощает процесс обнаружения без необходимости переобучения. Ты можешь динамически задавать эти подсказки внутри модели, чтобы адаптировать ее к конкретным задачам обнаружения, как показано ниже:
from ultralytics import YOLOWorld
# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-world.pt")
# Define custom classes
model.set_classes(["person", "bus"])
# Execute prediction on an image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()
Почему я должен выбрать YOLO-World, а не традиционные модели обнаружения открытой лексики?
YOLO-World обеспечивает несколько преимуществ по сравнению с традиционными моделями обнаружения открытого словаря:
- Производительность в реальном времени: Он использует вычислительную скорость CNN, чтобы предложить быстрое и эффективное обнаружение.
- Эффективность и низкая требовательность к ресурсам: YOLO-World сохраняет высокую производительность при значительном снижении требований к вычислениям и ресурсам.
- Настраиваемые подсказки: Модель поддерживает динамическую настройку подсказок, что позволяет пользователям задавать пользовательские классы обнаружения без переобучения.
- Превосходство в бенчмарках: Он превосходит другие детекторы открытых словарей, такие как MDETR и GLIP, как по скорости, так и по эффективности на стандартных бенчмарках.
Как обучить модель YOLO-World на своем наборе данных?
Обучить модель YOLO-World на твоем наборе данных очень просто с помощью предоставленного API Python или команд CLI . Вот как начать обучение с помощью Python:
from ultralytics import YOLOWorld
# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld("yolov8s-worldv2.pt")
# Train the model on the COCO8 dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
Или воспользуйся сайтом CLI:
Какие существуют предварительно обученные модели YOLO-World и поддерживаемые ими задачи?
Ultralytics предлагает несколько предварительно обученных моделей 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 | Обнаружение объектов | ✅ | ✅ | ✅ | ✅ |
Как воспроизвести официальные результаты YOLO-World с нуля?
Чтобы воспроизвести официальные результаты с нуля, тебе нужно подготовить наборы данных и запустить тренировку, используя предоставленный код. Процедура тренировки включает в себя создание словаря данных и запуск программы train
метод с пользовательским тренером:
from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch
data = {
"train": {
"yolo_data": ["Objects365.yaml"],
"grounding_data": [
{
"img_path": "../datasets/flickr30k/images",
"json_file": "../datasets/flickr30k/final_flickr_separateGT_train.json",
},
{
"img_path": "../datasets/GQA/images",
"json_file": "../datasets/GQA/final_mixed_train_no_coco.json",
},
],
},
"val": {"yolo_data": ["lvis.yaml"]},
}
model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch)