Вот как я приступил к выполнению проекта по обнаружению транспортных средств (P5) в семестре 1 программы Udacity's Self Driving Car Nanodegree. Цели / шаги этого проекта следующие:

  • Выполните извлечение функции гистограммы ориентированных градиентов (HOG) на помеченном обучающем наборе изображений и обучите классификатор Linear SVM classifier
  • При желании вы также можете применить преобразование цвета и добавить бинированные цветовые функции, а также гистограммы цвета к вашему вектору признаков HOG.
  • Примечание. Для первых двух шагов не забудьте нормализовать свои функции и рандомизировать выбор для обучения и тестирования.
  • Реализуйте технику скользящего окна и используйте обученный классификатор для поиска транспортных средств на изображениях.
  • Запустите свой конвейер на видеопотоке (начните с test_video.mp4, а затем реализуйте на полном project_video.mp4) и создайте тепловую карту повторяющихся обнаружений кадр за кадром, чтобы отбросить выбросы и следовать за обнаруженными транспортными средствами.
  • Оцените ограничивающую рамку для обнаруженных транспортных средств.

В этой статье будут рассмотрены первые два шага.

Визуализация данных

Первый шаг всегда - увидеть, что у нас есть. А вот данные от Udacity. Некоторые примеры автомобилей и неавтомобилей, которые у нас есть

Здесь следует отметить, что каждое изображение имеет размер 64x64. И изображений каждого типа около 8к. Что, учитывая, что фоновый класс - это почти все, кроме автомобиля, я думаю, это довольно небольшой набор изображений.

Особенности изображения

Курс предлагает использовать сочетание нескольких функций изображения. И снова мы делаем это обнаружение, используя традиционные методы CV, а не современные архитектуры CNN, такие как YOLO / SSD.

Итак, у нас есть следующие функции изображения вместе со следующими параметрами для каждой функции изображения.

  • Пространственное объединение (функции, извлекаемые непосредственно из пикселей изображения): цветовое пространство изображения (часто используется и для других функций); Размер изображения для объединения
  • Цветная гистограмма: количество интервалов гистограммы.
  • Гистограмма ориентированных градиентов (HOG): используемый канал, ориентация, количество пикселей на ячейку, количество ячеек на блок.

Выбор параметров

Что касается выбора параметров, у нас есть два основных аргумента. Один из них - скорость, мы не хотим ждать целую вечность, пока классификация состоится, и в лучшем случае мы хотим, чтобы это происходило в режиме реального времени. Другой - точность. Таким образом, выбор параметров - это компромисс между этими двумя атрибутами.

Визуализация параметров

Еще раз, ярлык - визуализировать параметры, чтобы получить интуитивное представление о том, как они работают.

Мы видим, что для цветового пространства RGB все 3 канала дают нам очень разный спектр на гистограмме. Так что это выглядит хорошо.

Здесь канал Y дает хорошую разницу, но каналы Cb и Cr выглядят почти одинаково. Так что не похоже на хороший выбор.

Здесь мы видим приличную разницу в канале S и V, но не большую разницу в канале H. Так что, возможно, с точки зрения цветовой гистограммы, RGB и канал S&V HSV выглядят хорошо.

Большой! Теперь давайте визуализируем параметры HOG.

Здесь используются следующие комбинации:

  1. Ориентации = 8, пикселей на ячейку = (8,8), ячеек на блок = 2
  2. Ориентации = 9, пикселей на ячейку = (8,8), ячеек на блок = 2
  3. Ориентации = 8, пикселей на ячейку = (16,16), ячеек на блок = 2
  4. Ориентации = 9, пикселей на ячейку = (16,16), ячеек на блок = 2
  5. Ориентации = 8, пикселей на ячейку = (8,8), ячеек на блок = 1
  6. Ориентации = 9, пикселей на ячейку = (8,8), ячеек на блок = 1
  7. Ориентации = 8, пикселей на ячейку = (16,16), ячеек на блок = 1
  8. Ориентации = 9, пикселей на ячейку = (16,16), ячеек на блок = 1

Первый вариант отлично смотрится! Хорошая четкая маркировка для изображения автомобиля и четкая разница между изображением автомобиля и неавтомобиля.

Теперь давайте посмотрим на цветовые пространства в HOG.

Мы получаем почти тот же результат, что и на цветовой гистограмме, что является отличным подтверждением данных. YCbCr дает отличную производительность только для канала Y. В то время как все 3 канала в RGB дают нам разницу. Оттенок в HSV почти аналогичен, но S и V показывают хорошую разницу.

Обучение классификатора

Перед тем, как начать обучение, мы должны убедиться, что все функции нормализованы. Мы можем использовать StandardScaler в sklearn, чтобы заставить его работать легко.

Давайте фактически обучим SVM и проверим точность SVM, чтобы убедиться, что она соответствует данным, которые мы получили. В следующем эксперименте я установил ориентацию свинца на 8, количество пикселей на ячейку - 8, а количество ячеек на блок - 2. Я также установил размер пространственного разбиения на 16x16, а интервалы цветовой гистограммы - на 16.. только вариации - это цветовое пространство.

  • Y-канал YCbCr (без пространственного биннинга или цветовой графики): 93,53%
  • RGB (все 3) (без пространственного биннинга или цветовой гаммы): 96,07%
  • Канал SV HSV (без пространственного биннинга или цветовой истории): 95,97%
  • Канал SV HSV (с пространственным биннингом или цветовой историей): 98,51%
  • HSV (все 3) (с пространственным объединением или цветовой историей): 98,86%
  • RGB (все 3) (с пространственным объединением или цветовой историей): 97,73%

Потрясающие. Итак, у нас есть победители. Это HSV, где H-канал является необязательным (соотношение скорости и точности). Итак, это охватывает часть извлечения функций из Обнаружения транспортных средств.

В качестве альтернативы вы также можете посмотреть на стандартный CNN как на средство для извлечения функций.