YOLOv3 и YOLOv3u#
Обзор#
В этом документе представлен обзор трёх тесно связанных моделей обнаружения объектов: YOLOv3, YOLOv3-Ultralytics и YOLOv3u.
-
YOLOv3: третья версия алгоритма обнаружения объектов You Only Look Once (YOLO). Разработанная Джозефом Редмоном, YOLOv3 превосходит предшественников благодаря таким нововведениям, как многомасштабные предсказания и три размера ядер обнаружения.
-
YOLOv3-Ultralytics: реализация YOLOv3 на PyTorch от Ultralytics, поддерживаемая в репозитории ultralytics/yolov3. Она сохраняет исходную архитектуру на основе якорей, добавляя больше предварительно обученных моделей и упрощая настройку.
-
YOLOv3u: обновлённая версия YOLOv3-Ultralytics, в которой используется безъякорная, не учитывающая objectness раздельная голова, применяемая в моделях YOLOv8. YOLOv3u сохраняет ту же архитектуру основной сети и шеи, что и YOLOv3, но использует обновлённую голову обнаружения из YOLOv8.

Основные особенности#
-
YOLOv3: использует три масштаба обнаружения и три размера ядер обнаружения: 13x13, 26x26 и 52x52. Это значительно повысило точность обнаружения объектов разных размеров. Кроме того, в YOLOv3 появились такие возможности, как предсказание нескольких меток для каждого ограничивающего прямоугольника и улучшенная сеть извлечения признаков.
-
YOLOv3u: эта обновлённая модель использует безъякорную, не учитывающую objectness раздельную голову из YOLOv8. Благодаря отказу от заранее заданных якорных прямоугольников и оценок objectness такая конструкция головы обнаружения может повысить способность модели находить объекты разного размера и формы. Это делает YOLOv3u более устойчивой и точной при решении задач обнаружения объектов.
Поддерживаемые задачи и режимы#
YOLOv3 разработана специально для задач обнаружения объектов. Ultralytics поддерживает три варианта YOLOv3: yolov3u, yolov3-tinyu и yolov3-sppu. Буква u в названии указывает на то, что в этих моделях используется безъякорная голова из YOLOv8, в отличие от исходной архитектуры на основе якорей. Эти модели известны своей эффективностью в различных реальных сценариях и сочетают точность со скоростью. Каждый вариант имеет свои особенности и оптимизации, поэтому подходит для разных задач.
Все три модели поддерживают широкий набор режимов, обеспечивая гибкость на разных этапах развёртывания модели и разработки. К ним относятся Inference, Validation, Training и Export, предоставляя пользователям полный набор инструментов для эффективного обнаружения объектов.
| Тип модели | Предобученные веса | Поддерживаемые задачи | Обучение | Валидация | Инференс | Экспорт |
|---|---|---|---|---|---|---|
| YOLOv3(u) | yolov3u.pt | Обнаружение объектов | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-Tiny(u) | yolov3-tinyu.pt | Обнаружение объектов | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-SPP(u) | yolov3-sppu.pt | Обнаружение объектов | ✅ | ✅ | ✅ | ✅ |
В этой таблице кратко представлены возможности каждого варианта YOLOv3, показаны их универсальность и пригодность для различных задач и режимов работы в процессах обнаружения объектов.
Примеры использования#
В этом примере показаны простые примеры обучения и инференса YOLOv3. Полную документацию по этим и другим режимам см. на страницах документации Predict, Train, Val и Export.
Предобученные модели *.pt на базе PyTorch, а также файлы конфигурации *.yaml можно передать классу YOLO(), чтобы создать экземпляр модели в Python:
from ultralytics import YOLO
# Загрузить предварительно обученную на COCO модель YOLOv3u
model = YOLO("yolov3u.pt")
# Показать информацию о модели (необязательно)
model.info()
# Обучить модель на демонстрационном наборе данных COCO8 в течение 100 эпох
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Запустить инференс с моделью YOLOv3u на изображении 'bus.jpg'
results = model("path/to/bus.jpg")Цитирование и благодарности#
Если ты используешь YOLOv3 в своих исследованиях, укажи в цитировании оригинальные статьи о YOLO и репозиторий Ultralytics YOLOv3:
@article{redmon2018yolov3,
title={YOLOv3: An Incremental Improvement},
author={Redmon, Joseph and Farhadi, Ali},
journal={arXiv preprint arXiv:1804.02767},
year={2018}
}Спасибо Джозефу Редмону и Али Фархади за разработку оригинальной YOLOv3.
Часто задаваемые вопросы#
YOLOv3 — третья версия алгоритма YOLO (You Only Look Once) для обнаружения объектов, разработанного Джозефом Редмоном. Модель известна сочетанием точности и скорости; для обнаружения она использует три масштаба: 13x13, 26x26 и 52x52. YOLOv3-Ultralytics — адаптация YOLOv3 от Ultralytics, которая поддерживает больше предварительно обученных моделей и упрощает настройку моделей. YOLOv3u — улучшенный вариант YOLOv3-Ultralytics с безъякорной, не учитывающей objectness раздельной головой из YOLOv8, что повышает устойчивость и точность обнаружения объектов разных размеров. Подробнее о вариантах см. в серии YOLOv3.
Обучить модель YOLOv3 с помощью Ultralytics просто. Ты можешь обучить модель с помощью Python или CLI:
Примерfrom ultralytics import YOLO # Загрузить предварительно обученную на COCO модель YOLOv3u model = YOLO("yolov3u.pt") # Обучить модель на демонстрационном наборе данных COCO8 в течение 100 эпох results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Больше вариантов и рекомендаций по обучению см. в документации по режиму Train.
YOLOv3u улучшает YOLOv3 и YOLOv3-Ultralytics за счёт безъякорной, не учитывающей objectness раздельной головы, используемой в моделях YOLOv8. Это обновление устраняет необходимость в заранее заданных якорных прямоугольниках и оценках objectness, повышая способность модели точнее обнаруживать объекты разного размера и формы. Поэтому YOLOv3u лучше подходит для сложных и разнообразных задач обнаружения объектов. Подробнее см. в разделе «Ключевые особенности».
Ты можешь выполнять инференс с моделями YOLOv3 с помощью скриптов Python или команд CLI:
Примерfrom ultralytics import YOLO # Загрузить предварительно обученную на COCO модель YOLOv3u model = YOLO("yolov3u.pt") # Запустить инференс с моделью YOLOv3u на изображении 'bus.jpg' results = model("path/to/bus.jpg")Подробнее о запуске моделей YOLO см. в документации по режиму Inference.
YOLOv3, YOLOv3-Tiny и YOLOv3-SPP в первую очередь предназначены для обнаружения объектов. Эти модели можно использовать на разных этапах развёртывания и разработки, например для инференса, валидации, обучения и экспорта. Полный список поддерживаемых задач и подробную информацию см. в нашей документации по задачам обнаружения объектов.
Если ты используешь YOLOv3 в своих исследованиях, укажи в цитировании оригинальные статьи о YOLO и репозиторий Ultralytics YOLOv3. Пример цитирования в формате BibTeX:
Цитата@article{redmon2018yolov3, title={YOLOv3: An Incremental Improvement}, author={Redmon, Joseph and Farhadi, Ali}, journal={arXiv preprint arXiv:1804.02767}, year={2018} }Подробнее о цитировании см. в разделе «Цитирование и благодарности».