Добро пожаловать, чтобы обратить внимание на мой личный публичный аккаунт WeChat: маленькие конфетти
В июне 2015 года родился YOLOv1, ознаменовавший наступление эры одноэтапных алгоритмов обнаружения объектов.В декабре того же года родился классический одноэтапный алгоритм обнаружения объектов SSD, превзошедший гордый YOLOv1 как по точности, так и по скорости. . После года исследований, в декабре 2016 года, автор YOLOv1 Джозеф Редмон выпустил YOLOv2 в попытке вернуть себе город.
На рисунке ниже показана веха алгоритма обнаружения объектов в эпоху глубокого обучения, и вы можете увидеть относительное положение серии YOLO.
Эффект
Эффект YOLOv2 можно назвать очень идеальным (кажется, что результаты без статей не идеальны...), как показано на рисунке ниже, точность набора данных VOC достигла SOTA (современный ) в то время, не говоря уже о скорости, YOLOv2 определенно это бесподобная поездка, и другие модели трудно найти.
Десять трюков
Как это сделал автор? Без него только фокусы. Автор использует десять трюков для улучшения производительности.На следующем рисунке приведен сравнительный тест каждого трюка, приведенного автором, и он искренне сетует на важность трюков.
1. норма партии
Повышение 2,4 мПа Пакетная нормализация в основном используется для решения проблемы сдвига внутренней ковариации, что может ускорить обучение и сходимость, а также имеет определенный эффект регуляризации. В целом производительность тоже можно улучшить, здесь она увеличилась на 2,4 мПа, что очень много. Сейчас это в основном стандарт для CV, но отсев используется реже.
2. классификатор высокого разрешения
Повышение 3,7 мПа
На приведенном выше рисунке показана сетевая структураYOLOv1.Сеть извлечения признаков обучается на ImageNet.Здесь классификатор относится к сети извлечения признаков. YOLOv1 обучает классификатор только с разрешением 224x224, но входное изображение для обнаружения объектов имеет разрешение 448x448, и есть несоответствие разрешения, поэтому стратегия обучения, используемая YOLOv2, заключается в том, чтобы сначала обучать разрешение 224x224, а последние 10 эпох - с разрешением 448x448. обучение. Производительность улучшена на 3,7 мПа, что является значительным улучшением.
3. Сверточный и 4. Якорный ящики
Увеличение -0,3 мПа, но отзыв увеличился с 81% до 87%.
1) сверточный
Из сетевой структуры YOLOv1 видно, что вход YOLOv1 — 448x448x3, выход — 7x7x30, а слои обнаружения объектов перед выходом YOLOv1 — это два полносвязных слоя. Однако очевидная структура 7x7x30 согласуется с выходной формой свертки, поэтому для реализации удобнее использовать свертку, то есть два полносвязных слоя на приведенном выше рисунке можно напрямую изменить на слои свертки. Полная реализация свертки также имеет очень большое преимущество: размер входного изображения больше не является фиксированным и может быть изменен произвольно, если он больше, чем общий размер шага. В этом также заключается суть компромисса YOLOv2 между точностью и скоростью. Когда разрешение изображения высокое, выходное разрешение также высокое, что, как правило, является более точным, но объем вычислений также больше, а скорость будет ниже. Когда разрешение изображения меньше, выходное разрешение также меньше, и точность снижается, но объем вычислений меньше, а скорость выше. После перехода на реализацию полной свертки разрешение входного изображения также изменено с 448x448 на 418x418, размер шага уменьшения общего разрешения изменен с 64 до 32, улучшена семантика местоположения, а также изменено соответствующее выходное разрешение с 7x7. до 13x13, больше ящиков для вывода.
2) анкерные ящики
YOLOv1 не использует блок привязки, заимствованный из Faster R-CNN и SSD, YOLOv2 также использует блок привязки, 3 коэффициента, 3 шкалы, всего 9 блоков привязки, чтобы повысить разнообразие обучения и уменьшить сложность обучения. Конечный результат YOLOv2 — 13x13x9x25. Реализованная с использованием свертки и якорного ящика, итоговая точность уменьшилась на 0,3 мАд, но отзыв увеличился с 81% до 87%, что заложило основу для других трюков для повышения точности.
5. новая сеть
Увеличение 0,4 мАп Опираясь на преимущества сетевых моделей, таких как Inception, VGG и Network in Network, автор переработал сеть извлечения признаков Darknet19. Структура сети показана на рисунке ниже.
Итоговая точность улучшена на 0.4mAP, что немного, но скорость сети выше, что и является основной целью автора.
6. априорные измерения и 7. предсказание местоположения
Повышение 4,8 мАп
1) размеры приоры
В четвертом трюке автор использует 3 фиксированных отношения и 3 фиксированных масштаба, всего 9 якорных блоков, чтобы улучшить разнообразие блока. Поле привязки на самом деле является априорным полем, и сеть, наконец, возвращает разницу между полем привязки и GT Очевидно, что если поле привязки близко к GT, сложность обучения будет меньше. Распространенным методом является кластеризация реальных GT для создания блоков привязки. Приоритеты измерения предназначены для создания размера поля привязки посредством кластеризации. При кластеризации обычно используется евклидово расстояние для расстояния от каждой выборки до центральной точки, но это не подходит для регрессии размера априорного кадра, потому что кластеризация априорного кадра заключается в нахождении центра точка с наибольшей средней IOU из всех кадров выборки, а также То есть центральная точка с наименьшей 1-IOU. Поэтому автор определяет расстояние кластеризации по следующей формуле: d(box, control) = 1 - IOU(box, control) Соотношение между итоговым средним IOU и количеством кластеров выглядит следующим образом:
2) предсказание местоположения
Более быстрый R-CNN предсказывает координаты центральной точки относительно длины и ширины поля привязки.
Прирост от этих двух улучшений чрезвычайно значителен: производительность увеличилась на 4,8 мАд.
8. Проходной
Увеличить 1,0 мАп SSD использует вывод с несколькими разрешениями, а YOLOv2 использует другую идею для объединения функций высокого разрешения в карту функций разрешения, используемого для вывода. На самом деле это очень близко к FPN, где функции низкого разрешения объединены с функциями высокого разрешения, а жаль. Как это сделать? Как показано ниже
Измените форму последней карты объектов 26x26x512 на 13x13x2048, а затем соедините ее с последней картой объектов 13x13x1024. Затем выполните обнаружение объектов.
Окончательная производительность улучшена на 1.0mAP.
9. Мультимасштаб
Повышение 1,4 мАп При обучении обнаружению объектов (на VOC или COO, а не на ImageNet) разрешение входного изображения не фиксируется, а выбирается случайным образом из {320, 352, …, 608}. Таким образом, вся сеть имеет возможность адаптироваться к разрешению и избежать переобучения одному разрешению.
10. Детектор высокого разрешения
Повышение 1,8 мАп Из-за реализации полной свертки разрешение ввода YOLOv2 можно регулировать произвольно.Чем выше разрешение ввода, тем выше точность. Таким образом, детектор с высоким разрешением также может улучшить производительность.
Производительность на COCO
К сожалению, YOLOv2 плохо работает на COCO, не так хорошо, как SSD300.
Основная причина в том, что YOLOv2 недостаточно силен для обнаружения мелких объектов, а магистраль недостаточно надежна. Эта проблема была улучшена в YOLOv3, но ее все еще не хватает.
Но это не имеет значения, это быстро и точно, а сцена производственной среды не так сложна, как COCO.
в заключении
YOLOv2 в полной мере демонстрирует огромную энергию, накопленную каждым трюком. Покажите нам, не стоит недооценивать роль любой маленькой хитрости. Производительность YOLOv2 на COCO по-прежнему неудовлетворительна, главным образом потому, что YOLOv2 недостаточно силен для обнаружения мелких объектов, а магистраль недостаточно сильна. Очень надеетесь увидеть быстрый и точный YOLOv4?