Рубрики
Без рубрики

Обнаружение транспортных средств с помощью камер для самоуправляемых автомобилей

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

Автор оригинала: David Clark.

Проект № 5 в самодвижущемся автомобиле Udacity Nanodegree

Проект № 5 в программе Udacity self-driving car включает в себя создание конвейера для обнаружения других транспортных средств на дороге на изображениях, снятых с приборной панели автомобиля.

Мой код для этого проекта находится в открытом доступе и может быть найден здесь .

Это часть серии. Вы также можете прочитать о моих первых , |/вторых , | третьих и | четвертых | проектах, если вы их пропустили!

Обзор

  1. Извлечение функций
  2. Обучение классификатора
  3. Поиск в скользящем окне
  4. Обнаружение транспортных средств и тепловые карты

Извлечение функций

Чтобы идентифицировать транспортные средства на изображении, нам нужно представление о том, что именно мы ищем — нам нужна подпись транспортного средства”.” Эта подпись в конечном счете должна исходить из самих значений пикселей, потому что это вся информация, которой мы располагаем. Чтобы создать подпись транспортного средства, я извлек три различных набора функций:

  1. Пространственные особенности
  2. Особенности цветовой гистограммы
  3. HOG (Гистограмма ориентированных градиентов) Особенности

Пространственные особенности

Пространственные объекты-это, по сути, сами значения пикселей. Изображение изменяется по размеру (я использовал 16×16) и сглаживается в одномерный массив, и эти значения используются непосредственно в “подписи.” Я использовал изображения RGB для этого набора функций.

Особенности цветовой гистограммы

Цветовая гистограмма суммирует количество значений пикселей, которые попадают в равномерно распределенные ячейки для цветового спектра изображения. Это, по сути, говорит нам о таких вещах, как “много темно-красного” или “не так много светло-зеленого” (когда используются изображения RGB). Эти итоги “цветного ящика” добавляются к подписи транспортного средства. Я решил использовать 32 цветовых ячейки и изображения в цветовом пространстве HSV для этого набора функций. Хотя объяснение цветовых пространств здесь было бы неуместно, приведенное ниже сравнение изображений должно дать вам краткое представление о том, о чем я говорю.

Изображение RGB (слева) и визуализация канала S (справа) для изображения HSV. S — для насыщения в ВПГ-вы можете видеть, как сильно выделяется линия слева.

HOG (Гистограмма ориентированных градиентов) Особенности

Функции HOG в основном можно рассматривать как “цвета изменяются на величину X в направлении Y” (следовательно, “ориентированные градиенты”). Подробные учебные пособия широко доступны в Интернете, если вы хотите знать тонкости. Функции HOG составляют основную часть подписи автомобиля и являются наиболее ценными собранными функциями. Я также использовал изображения HSV для этого набора функций.

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

Для каждого изображения, на котором мы хотим обучить классификатор машинного обучения, функции, описанные выше, извлекаются и объединяются вместе, чтобы сформировать подпись транспортного средства изображения.” Я обучил линейный классификатор SVM (машина опорных векторов) на более чем 17 000 изображениях (половина из которых содержала транспортные средства). Объекты были нормализованы перед передачей в классификатор. К счастью, результаты испытаний показали точность более 99%!

Ниже приведен пример изображения транспортного средства, на котором был обучен классификатор, а также необработанные и нормализованные объекты, извлеченные для этого изображения. Нормализация важна для более быстрого обучения и повышения точности!

Пример изображения “транспортное средство”, на котором был обучен классификатор. Необработанные функции должны быть нормализованы, чтобы помочь классификатору лучше учиться.

Поиск в скользящем окне

Обученный классификатор не принесет никакой пользы, если вы не дадите ему аналогичную информацию, на которой он был обучен. Я обучил SVM на изображениях размером 64×64 пикселя, поэтому мне нужен был способ передать ему вырезы размером 64×64 больших изображений, поступающих с приборной панели. В частности, я хочу, чтобы SVM передавал вырезы 64×64 частей изображения, которые имеют транспортные средства , чтобы их можно было идентифицировать. Самое близкое, что я могу получить, чтобы узнать, где будут находиться транспортные средства на изображении без использования классификатора, – это примерно нижняя половина. Таким образом, я выполнил поиск скользящего окна (с перекрытием) в нижней половине изображения, чтобы получить окна, которые будут проверены, чтобы увидеть, содержат ли они транспортное средство.

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

Обнаружение транспортных средств и тепловые карты

Поиск по скользящему окну создает много окон — потенциально сотни! Каждое из этих окон представляет собой изображение, которое будет проверено с помощью классификатора, что означает, что для каждого окна должны быть извлечены функции. Это главное узкое место трубопровода.

Тем не менее, как только объекты извлекаются для каждого изображения окна и классифицируются, окна, содержащие транспортные средства, остаются. К сожалению, эти окна обычно не создают хороших, одиночных ограничительных рамок вокруг транспортных средств, как мы хотим. Чтобы достичь одной ограничительной рамки для каждого транспортного средства, реализуется тепловая карта, и вокруг “горячих” областей рисуется новая ограничительная рамка. Результаты до и после тепловой карты показаны ниже.

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

Конечный результат — транспортные средства на изображении идентифицируются по одному ограничивающему прямоугольнику каждый!

Применение конвейера к видео

Как и в других моих проектах, в то время как конвейер обрабатывает отдельные изображения, его можно легко применить для обработки видео, разделив видео на кадры и обработав каждый кадр по отдельности.

Здесь вы можете посмотреть мое финальное видео проекта:

Финальное видео проекта — обнаружение автомобиля с помощью видеорегистратора.