YOLOv4: быстрое и точное обнаружение объектов#
Добро пожаловать на страницу документации Ultralytics по YOLOv4 — современной модели обнаружения объектов в реальном времени, выпущенной в 2020 году Алексеем Бочковским на https://github.com/AlexeyAB/darknet. YOLOv4 создана для оптимального баланса скорости и точности, поэтому подходит для множества приложений.
Схема архитектуры YOLOv4. На схеме показана сложная структура сети YOLOv4, включая компоненты backbone, neck и head, а также связанные между собой слои, обеспечивающие оптимальное обнаружение объектов в реальном времени.
Введение#
YOLOv4 — сокращение от You Only Look Once version 4. Это модель обнаружения объектов в реальном времени, разработанная для устранения ограничений предыдущих версий YOLO, таких как YOLOv3, и других моделей обнаружения объектов. В отличие от детекторов объектов на основе свёрточных нейронных сетей (CNN), YOLOv4 подходит не только для рекомендательных систем, но и для автономного управления процессами и сокращения участия человека. Работа на обычных графических процессорах (GPUs) делает массовое использование доступным по цене. Модель рассчитана на работу в реальном времени на обычном GPU, и для обучения ей нужен всего один такой GPU.
Архитектура#
YOLOv4 использует несколько инновационных компонентов, которые в совокупности повышают производительность. К ним относятся взвешенные остаточные соединения (WRC), частичные соединения между этапами (CSP), перекрёстная мини-пакетная нормализация (CmBN), самосостязательное обучение (SAT), функция активации Mish, мозаичная аугментация данных, регуляризация DropBlock и функция потерь CIoU. В совокупности эти компоненты позволяют добиваться результатов на уровне лучших современных методов.
Типичный детектор объектов состоит из нескольких частей: входного слоя, базовой сети, neck и head. Базовая сеть YOLOv4 предварительно обучена на ImageNet и используется для предсказания классов и ограничивающих рамок объектов. В качестве базовой сети могут использоваться различные модели, в том числе VGG, ResNet, ResNeXt и DenseNet. Neck детектора собирает карты признаков с разных этапов и обычно включает несколько путей снизу вверх и сверху вниз. Head формирует итоговые обнаружения и классификации объектов.
Набор бесплатных улучшений#
В YOLOv4 также применяются методы, известные как «набор бесплатных улучшений» (bag of freebies): они повышают точность модели во время обучения, не увеличивая стоимость инференса. Расширение данных — распространённый метод из этого набора, используемый при обнаружении объектов. Он повышает разнообразие входных изображений и улучшает устойчивость модели. Примеры расширения данных — фотометрические преобразования (изменение яркости, контрастности, оттенка, насыщенности и добавление шума к изображению) и геометрические преобразования (случайное масштабирование, обрезка, отражение и поворот). Благодаря этим методам модель лучше обобщает изображения разных типов.
Функции и производительность#
YOLOv4 разработана для оптимального соотношения скорости и точности при обнаружении объектов. В архитектуре YOLOv4 используются CSPDarknet53 в качестве базовой сети, PANet в качестве neck и YOLOv3 в качестве головы обнаружения. Благодаря этой архитектуре YOLOv4 обнаруживает объекты на впечатляющей скорости, поэтому подходит для приложений реального времени. YOLOv4 также отличается высокой точностью и показывает передовые результаты в тестах обнаружения объектов, таких как COCO.
По сравнению с другими моделями семейства YOLO, такими как YOLOv5 и YOLOv7, YOLOv4 сохраняет сильные позиции по балансу скорости и точности. Более новые модели могут иметь определённые преимущества, однако архитектурные инновации YOLOv4 по-прежнему актуальны для многих приложений, которым нужна производительность в реальном времени.
Примеры использования#
YOLOv4 — модель на основе Darknet, которая не поддерживается напрямую пакетом Ultralytics Python: предварительно обученные веса yolov4.pt не опубликованы в ultralytics/assets, а YAML-файлы ultralytics/cfg/models/v4/ отсутствуют. Эта страница сохранена в качестве архитектурного справочника. Если ты хочешь запускать YOLOv4, обратись напрямую к репозиторию YOLOv4 на GitHub за инструкциями по установке и использованию.
Вот краткий обзор основных шагов по использованию YOLOv4:
-
Перейди в репозиторий YOLOv4 на GitHub: https://github.com/AlexeyAB/darknet.
-
Следуй инструкциям по установке из файла README. Обычно для этого нужно клонировать репозиторий, установить необходимые зависимости и задать необходимые переменные среды.
-
После завершения установки ты можешь обучить модель и использовать её согласно инструкциям в репозитории. Обычно нужно подготовить набор данных, настроить параметры модели, обучить модель, а затем использовать обученную модель для обнаружения объектов.
Обрати внимание, что конкретные шаги могут различаться в зависимости от сценария использования и текущего состояния репозитория YOLOv4. Поэтому настоятельно рекомендуем обращаться непосредственно к инструкциям в репозитории YOLOv4 на GitHub.
Чтобы обучать модели и выполнять инференс в рамках экосистемы Ultralytics, смотри YOLO11 или YOLO26.
Заключение#
YOLOv4 — мощная и эффективная модель обнаружения объектов, сочетающая скорость и точность. Благодаря уникальным функциям и методам из набора бесплатных улучшений при обучении она отлично справляется с обнаружением объектов в реальном времени. YOLOv4 можно обучать и использовать на обычном GPU, поэтому модель доступна и практична для самых разных приложений, включая системы видеонаблюдения, автономные транспортные средства и промышленную автоматизацию.
Если ты хочешь реализовать обнаружение объектов в своих проектах, YOLOv4 остаётся достойным вариантом, особенно когда важна производительность в реальном времени. Сейчас Ultralytics сосредоточена на поддержке более новых версий YOLO, таких как YOLO11 и YOLO26, но архитектурные инновации YOLOv4 повлияли на разработку этих более поздних моделей.
Цитирование и благодарности#
Мы хотели бы поблагодарить авторов YOLOv4 за их значительный вклад в область обнаружения объектов в реальном времени:
@misc{bochkovskiy2020yolov4,
title={YOLOv4: Optimal Speed and Accuracy of Object Detection},
author={Alexey Bochkovskiy and Chien-Yao Wang and Hong-Yuan Mark Liao},
year={2020},
eprint={2004.10934},
archivePrefix={arXiv},
primaryClass={cs.CV}
}Оригинальную статью о YOLOv4 можно найти на arXiv. Авторы опубликовали свою работу в открытом доступе, а исходный код доступен на GitHub. Мы ценим их усилия по развитию этой области и стремление сделать результаты своей работы доступными широкому сообществу.
Часто задаваемые вопросы#
YOLOv4, сокращение от «You Only Look Once version 4», — современная модель обнаружения объектов в реальном времени, разработанная Алексеем Бочковским в 2020 году. Она обеспечивает оптимальный баланс скорости и точности, поэтому отлично подходит для приложений реального времени. В архитектуре YOLOv4 реализовано несколько инновационных функций, включая связи с взвешенными остаточными соединениями (WRC), частичные межэтапные соединения (CSP) и самоадверсариальное обучение (SAT), которые помогают добиться передовых результатов. Если тебе нужна высокопроизводительная модель, эффективно работающая на обычных GPU, YOLOv4 — отличный выбор.
Архитектура YOLOv4 включает несколько ключевых компонентов: базовую сеть, neck и head. Базовая сеть, например VGG, ResNet или CSPDarknet53, предварительно обучается предсказывать классы и ограничивающие рамки. Neck, построенный на PANet, объединяет карты признаков с разных этапов, обеспечивая комплексное извлечение данных. Наконец, head, использующий конфигурации YOLOv3, формирует итоговые обнаружения объектов. YOLOv4 также использует методы из «набора бесплатных улучшений», например мозаичное расширение данных и регуляризацию DropBlock, что дополнительно оптимизирует скорость и точность.
«Набор бесплатных улучшений» — это методы, повышающие точность YOLOv4 при обучении без увеличения стоимости инференса. К ним относятся различные виды расширения данных: фотометрические преобразования (например, изменение яркости и контрастности) и геометрические преобразования (масштабирование, обрезка, отражение и поворот). Увеличивая разнообразие входных изображений, эти методы помогают YOLOv4 лучше обобщать данные разных типов и тем самым повышают её устойчивость и точность без ущерба для производительности в реальном времени.
YOLOv4 оптимизирована по скорости и точности, поэтому идеально подходит для задач обнаружения объектов в реальном времени, где важны быстродействие и надёжность. Модель эффективно работает на обычных GPU, и для обучения и инференса достаточно одного GPU. Благодаря этому модель доступна и практична для самых разных приложений — от рекомендательных систем до автономного управления процессами. Это также избавляет от необходимости в сложной аппаратной инфраструктуре и делает YOLOv4 экономичным решением для обнаружения объектов в реальном времени.
Чтобы начать работу с YOLOv4, перейди в официальный репозиторий YOLOv4 на GitHub. Следуй инструкциям по установке из файла README: обычно нужно клонировать репозиторий, установить зависимости и задать переменные среды. После установки можно обучить модель: подготовь набор данных, настрой параметры модели и следуй инструкциям по использованию. Поскольку Ultralytics пока не поддерживает YOLOv4, рекомендуем обращаться непосредственно к репозиторию YOLOv4 на GitHub за самой актуальной и подробной информацией.