Выявление областей интереса

ВСТУПЛЕНИЕ

В прошлом году Университет Кеттеринга был одним из восьми университетов мира, отобранных для участия в конкурсе AutoDrive Challenge Общества автомобильных инженеров (SAE) - соревновании по автономным автомобилям. Цель конкурса - самостоятельно пройти курс городского вождения в течение трех лет. Введение конкурса вызвало массу исследований в области автономного вождения.

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

Эта статья - первая из трех частей, посвященных наглядному руководству по моему собственному решению для распознавания светофора. Цель этой серии - познакомить с концепциями компьютерного зрения и машинного обучения и показать их прямое применение в распознавании светофора. Все тесты и демонстрации выполняются на общедоступной базе данных Bosch Small Traffic Lights Datase t, и все программное обеспечение будет вскоре выпущено на моем личном GitHub. Прежде чем мы начнем, краткий обзор предстоящей серии.

ОБЗОР СЕРИИ

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

Сериал будет разбит на три части.

  • Выявление областей интереса
  • Обучение классификатора
  • Отслеживание и оптимизация

В изображениях городских сцен много чего происходит. Есть автомобили, пешеходы, дорожные знаки и целый ряд информации, которую нужно обрабатывать с большой скоростью. Обнаружение ограничивает объем информации, которую необходимо проанализировать, гораздо меньшими областями интереса (ROI). В нашем случае ROI представляет собой список потенциальных кандидатов на светофор. При правильном обращении обнаружение должно улучшить скорость и производительность системы.

Раздвижные окна

Любой, кто знаком с проблемами распознавания изображений, может удивиться, почему я просто не использую скользящее окно и не пропускаю весь процесс обнаружения. В скользящих окнах прямоугольник «скользит» по изображению, и через каждый интервал классификатор проверяет, является ли содержимое внутри окна светофором (или лицом, как в примере ниже). Раздвижные окна просты, интуитивно понятны и просты в использовании. Так зачем возиться с процессом обнаружения?

Хотя раздвижные окна являются жизнеспособным вариантом, они требуют больших вычислительных ресурсов для этой задачи. Цель ROI - ограничить работу, которую должен выполнять классификатор. Если бы мы использовали этот подход, нам потребовались бы относительно небольшие окна, чтобы ловить светофор. Кроме того, чтобы справиться с диапазоном размеров светофора, нам пришлось бы запускать подход скользящего окна несколько раз с разными размерами окон или строить пирамиду изображений.

МЕТОДЫ ОБНАРУЖЕНИЯ

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

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

Пороговое значение цвета

Светофоры светятся одним из трех цветов - красным, желтым или зеленым. Основная идея установления порога цвета заключается в том, чтобы ограничить изображение тем, где присутствуют эти цвета. Любой участок изображения, кроме красного, желтого или зеленого, устанавливается в ноль (черный). Чтобы эффективно изолировать интересующие нас цвета, необходимо учесть несколько ключевых моментов: цветовое пространство, пороговое значение и вариации освещения.

Обычно изображения представлены в цветовом пространстве RGB. Однако RGB смешивает информацию о цвете и интенсивности по всем каналам. Это делает формат RGB чувствительным к изменениям освещения. Если наша цель - обнаруживать светофор, мы не можем иметь различия в освещении (например, солнечное, дождливое, облачное и т. Д.), Чтобы наш порог не мог выбрать правильные цвета. Чтобы бороться с этим, многие предпочитают преобразовывать в цветовые пространства, которые отделяют цветность или информацию о цвете от яркости или интенсивности изображения. Некоторые известные примеры, которые хорошо представлены в литературе, - это HSV, HSL, CIELab и YCbCr.

В приведенном ниже примере я сохранил изображение в RGB, но выполнил нормализацию, чтобы уменьшить эффекты освещения.

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

BLOB-анализ и морфологические фильтры

BLOB обозначает большой двоичный объект и относится к группам связанных пикселей в изображении. На изображении ниже темные соединенные области представляют собой капли.

Другой пример - изображение сверху с красной пороговой полосой. Каждый красный объект на изображении можно рассматривать как большой двоичный объект с такими важными свойствами, как размер и форма.

В методах на основе цвета и BLOB обычно используются морфологические фильтры для уточнения информации в сцене. Морфология - это широкий набор операций обработки изображений, которые обрабатывают изображения на основе форм. Эрозия и расширение - две основные морфологические операции. При расширении объект на переднем плане увеличивается, а при эрозии стирается граница объекта переднего плана.

Расширение отлично подходит для соединения сломанных частей объекта, а эрозия пригодится на более поздних этапах для устранения шума. Другой распространенной морфологической операцией является заливка. Всякий, кто раньше использовал краску Microsoft, знаком с этой концепцией, потому что она аналогична ведру заполнения. Нажмите на замкнутую фигуру, и все будет окрашено в цвет.

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

Анализ больших двоичных объектов также может помочь отфильтровать не светофоры, сравнивая свойства большого двоичного объекта с ожидаемыми свойствами светофора. Светофоры должны быть круглыми (за исключением поворотников) и никогда не занимать большую часть изображения.

Мы выбираем большие двоичные объекты округлой формы и не слишком большого размера. Конечный продукт - это набор кандидатов на светофор, который соответствует нашим критериям формы и размера.

Обнаружение точечного света

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

Метод обнаружения точечного света устойчив к изменениям освещенности, поскольку элемент структурирования (ядро) применяется локально. Это означает, что неравномерное фоновое освещение не является проблемой.

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

НАШЕ РЕШЕНИЕ ДЛЯ ОБНАРУЖЕНИЯ

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

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

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

Начните с заполнения каждой изолированной долины водой разного цвета (этикетки). По мере подъема воды, в зависимости от ближайших пиков, вода из разных долин - очевидно, разного цвета - начнет сливаться. Чтобы этого избежать, постройте барьеры в местах слияния воды. Продолжайте заполнять воду и строить преграды, пока все вершины не окажутся под водой. Затем созданные барьеры дают окончательный результат сегментации.

В нашем случае начальные маркеры - это обнаруженные нами прожекторы. Когда маркеры начнут заливаться, фоновые объекты на изображении вырастут в более крупные области, в то время как свет, излучаемый светофорами, останется примерно того же размера.

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

Конечным результатом является ограниченное количество окон, передаваемых классификатору. Чтобы представить ситуацию в перспективе, если бы мы запустили окно 64x32 через приведенное выше изображение размером 400x1080 с размером шага 16x16, классификатор мог бы оценить ~ 1500 окон (это не включает окна, обрезанные по краю изображения). изображение) по сравнению с 18, найденными на изображении выше.

РЕЗЮМЕ

Распознавание светофора - важная и часто упускаемая из виду часть автономного вождения, которая сопряжена с множеством проблем. Объекты, которые мы пытаемся обнаружить, маленькие и очень шумные (стоп-сигналы, уличные фонари и т. Д.)

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

Мой метод обнаружения можно резюмировать в следующих шагах

1. Отрежьте нижнюю часть изображения
2. Преобразуйте изображение в оттенки серого
3. Примените морфологию белого цилиндра
4. Выберите яркие точки как маркеры
5. Примените алгоритм роста области (водораздел)
6. Выберите яркие точки, которые не являются частью более крупного объекта.

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

Обнаружение при правильном обращении - отличный способ ускорить работу и уменьшить количество ложных срабатываний. В следующем посте я расскажу об извлечении признаков и обучении классификаторам.