Это 23-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления
Подобное одноэтапное обнаружение цели YOLO также используется в Tesla, и я также хочу воспользоваться этой возможностью, чтобы рассмотреть его. Так что же такое одноэтапное обнаружение цели, то есть генерация блоков-кандидатов, предсказание цели и регрессия ограничивающей рамки выполняются сетью.
Сегодня поговорим и напишем о YOLOv1, YOLOv1 должен быть уникальным в обнаружении целей, немного похожим на состояние веб-интерфейса vue сегодня. И это продолжало нас удивлять по пути. YOLO — это аббревиатура You Only Look Once, Как следует из названия, это одноэтапная структура обнаружения целей и сквозная структура обнаружения целей. YOLOV1 успешно преобразовал проблему обнаружения объектов в проблему регрессии. В Интернете есть много статей и видеороликов о YOLO, и я надеюсь, что мои статьи могут принести вам различный контент и помочь вам лучше понять текущую популярную систему обнаружения нескольких целей YOLO.
ввод и вывод
Обычно мы знаем модель нейронной сети.Так называемая модель нейронной сети представляет собой функцию.Когда данные вводятся в функцию, функция выдает результат. В YOLOv1 на вход подается изображение, а на выходе — структурированные данные, содержащие информацию о том, какие цели появляются на изображении и местонахождении целей. В следующей статье все цели, которые мы хотим обнаружить в различных категориях, будут вместе называтьсяперспектива.
Входные данные имеют размер 448 x 448 x 3. Поскольку два полносвязных слоя должны быть соединены в конце сети, полносвязный слой требует входных данных фиксированного размера, поэтому размер входных данных необходимо изменить.
Последний слой FC получает вывод 1470 x 1, повторно обработайте этот вывод, чтобы получить тензор 7 x 7 x 30, то есть каждая ячейка, наконец, имеет 30-мерный вывод, представляющий результат прогнозирования.
- Выходной вектор представляет результат прогнозирования
- Представляет информацию о местоположении, которая является центральной точкой ограничивающей рамки, а также шириной и высотой ограничивающей рамки соответственно.
- Какова вероятность, что это передний план, и его нужно умножать на ИоУ, зачем мне его умножать на ИоУ? рамка переднего плана ближе к реальной ограничивающей рамке цели. .
- Категория, обнаруженная как передний план, так называемый передний план означает, что в этой сетке имеется целевая категория, которая используется для вывода категории, к которой принадлежит обнаруженная цель. По формуле это условная вероятность, поэтому вероятность можно выразить как
- Каждая сетка отвечает за обнаружение объектов
Как выходное значение нейронной сети сопоставляется с изображением для вывода и сравнения с реальным значением?В сети YOLOv1 ширина и высота вывода представляют собой десятичные числа от 0 до 1, которые необходимо умножить на реальную ширину и высоту изображения
Точно так же центральная точка ограничительной рамки также представлена масштабом, но ее необходимо вычислять в сочетании с положением сетки.
сетевая структура
Сначала на ImageNet предварительно обучаются первые 20 слоев в сети, а затем после этих 20 слоев для обучения подключаются 4 слоя свертки и 2 слоя полносвязных слоев. Итак, первые 20 слоев инициализируются предварительно обученной сетью, а последние 6 слоев инициализируются случайным образом и обновляют веса в процессе обучения. Кроме того, поскольку обнаружение требует больше информации о деталях изображения, во время обучения размер входного изображения равномерно изменяется отнастроить на.
YOLOv1 — это в основном 24-слойная сверточная структура, представляющая собой сетевую структуру, состоящую из сверточных слоев и полностью связанных слоев. Вместо использования Maxpooling в качестве понижающей дискретизации используется свертка с размером ядра 1x1 и шагом 2. Функции активации, используемые в середине, все LeakyReLU.В эпоху YOLOv1 нет пакетной нормализации.После извлечения признаков с помощью свертки будет получен вектор признаков, а после свертки будет получена матрица 7 x 7 x 3.
функция потерь
Фактически, для YOLO это может включать не только YOLO, но и многоцелевые среды обнаружения, такие как FastRCNN, Чтобы по-настоящему понять эти структуры, вам необходимо полностью понять функцию потерь. Итак, сегодня мы подробно объясним функцию потерь YOLOv1. Для значения потерь при обнаружении целей, таких как проблемы регрессии и классификации, которые мы делали в прошлом, достаточно рассмотреть только одну или простую потерю.Здесь нам нужно измерить потерю с нескольких аспектов, включая потерю локализации, цель потеря обнаружения и потеря классификации 3 части
Потеря местоположения
- Квадрат разницы можно использовать в качестве функции потерь для вычисления отклонения прогнозируемого ограничивающего прямоугольника и положения центра между прямоугольниками, а также отклонения ширины и высоты.
- Представляет j-ю ограничивающую рамку в i-й сетке, 1, если она отвечает за прогнозирование, в противном случае 0, мы учитываем только значение потерь при обнаружении объектов с сетками переднего плана.
В соответствии с приведенной выше формулой мы рассчитали значение потерь двух целей с большими различиями в пропорции.Для двух целей существует только разница между прогнозом высоты и фактическим результатом.Преимущество этого заключается в том, что его легко мера. Это также связано с тем, что эти значения выражаются в соотношениях при расчете значения потерь, это связано с тем, что значения между 0 и 1 легко усваиваются нейронной сетью. То есть именно такой способ выражения приносит некоторые проблемы, и он не может корректно реагировать на ошибку объектов меньшего масштаба. Итак, чтобы устранить эту проблему, возьмите корневой знак длины и ширины, чтобы решить проблему.
целевая потеря
i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | |
0.1 | 0.1 | 0.1 | 0.1 | 0.6 | 0.1 | 0.6 | 0.1 | 0.1 | |
0.1 | 0.1 | 0.1 | 0.1 | 0.4 | 0.1 | 0.4 | 0.1 | 0.1 |
Потому что на практике в YOLOv1 49 сеток 7 x 7 x 2, и каждая сетка предоставляет 2 поля предсказания, так что всего 98 полей, и среди них проблема в том, что значение потери цели не обнаружено. в потерях приходится относительно большая доля. То есть в процессе обучения больше внимания будет уделяться фоновой части, игнорируя при этом изучение основной части.
Здесь дизайнер YOLOv1 напрямую дает коэффициент для баланса изучения переднего и заднего планов, обычно этот коэффициент согласно экспериментам равен 0,5.
Потеря классификации
В основном для каждой сетки, метод расчета, центр объекта будет изучаться, когда центр объекта находится в определенной сетке.
В конце мы суммируем три потери как общие потери, и в процессе обучения цель состоит в том, чтобы узнать минимальное значение общих потерь. При суммировании необходимо добавить коэффициент перед потерями позиционирования, который представляет собой лямбда.Это числовое значение также является эмпирическим значением 5. Цель состоит в том, чтобы в процессе обучения больше внимания уделялось точности позиционирования.
Существующие проблемы
- Когда две цели появляются в одной и той же сетке, в обучении YOLOv1 возникнут некоторые проблемы.Центральная точка автомобиля и человека, как показано на рисунке, попадают в одну и ту же сетку, и YOLOv1 не может давать правильные прогнозы.На самом деле, там по-прежнему много случаев, поэтому этот недостаток - это проблема, которую необходимо решить для YOLOv1.Когда позже будут представлены YOLOv2 и YOLOv3, вы увидите, как разработчики YOLO решают эту проблему шаг за шагом.
- Каждая сетка может обнаруживать не более одного объекта, поэтому даже если центры нескольких объектов одной категории попадают в одну и ту же сетку, YOLOv1 все равно сложно обнаружить.
- На самом деле все эти проблемы связаны с конструкцией YOLOv1, поэтому их нельзя решить регулировкой параметров
- YOLOv1 требует много данных для обучения, особенно для записи соотношений сторон ограничительной рамки, которые YOLOv1 не видел в учебных материалах, для которых эффект обнаружения цели будет хуже
- Судя по фоновой ошибке на приведенном выше рисунке, частота ошибок YOLOv1 из-за неправильной оценки фона как переднего плана намного ниже, чем у Fast R-CNN. Почему такой результат, ведь в YOLOv1 всего 98 сеток для тестирования, а в Fast R-CNN около 2000 сеток для детектирования, поэтому нетрудно понять, почему Fast R-CNN прост в использовании на переднем плане. задний план.
- Что касается способности обнаружения переднего плана, YOLOv1 немного ниже, чем Fast R-CNN, что то же самое, что и выше, потому что Fast R-CNN использует гораздо больше кадров-кандидатов для обнаружения целей, чем YOLOv1, поэтому эффект обнаружения должен быть лучше.
- С точки зрения точности позиционирования это означает, что классификация верна.Количество IoU между прогнозируемой ограничивающей рамкой этих правильно классифицированных объектов и реальной ограничивающей рамкой составляет от 0,1 до 0,5.Чем выше число, тем хуже точность позиционирования. , YOLOv1 Требует больше усилий, чем Fast R-CNN с точки зрения точности локализации.
Мы смотрим на результаты тестирования Faster R-CNN и YOLOv1 на наборе данных PASCAL VOC 2007 для сравнения. Производительность YOLO в секунду намного больше, чем производительность Faster R-CNN при 18 кадрах в секунду, поэтому с точки зрения скорости и производительности YOLO в то время имеет абсолютное преимущество.