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

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

Традиционные методы

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

Методы машинного обучения

Благодаря последним разработкам в области машинного обучения эти вероятностные методы, основанные на данных, работают очень хорошо по сравнению с традиционными методами. Вместо функций, созданных вручную, автоматическое извлечение функций на основе данных. В основном это извлечение признаков выполняется с использованием Deep Neural Network. Есть несколько способов сформулировать эту проблему, и решение может быть построено с использованием различных типов нейронных сетей, таких как CNN, RNN, кодировщики и т. Д.

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

Предложенное решение

Похожая работа

В задаче обнаружения полосы движения алгоритм должен обнаруживать полосы на дороге и обеспечивать точное местоположение и форму каждой линии. Несоответствие полос движения, форма полосы движения, разнообразный рисунок полос движения и т. д. значительно усложняют обнаружение. В работе LaneNet [1] Ze Wang, Weiqiang Ren и Qiang Qiu эта проблема решается с использованием двух разных сетей: сети предложений Lane Edge и сети локализации линий Lane.

Данные

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

Обнаружение переулка

Эта сеть имеет два класса: lane и background. Каждый пиксель изображения прогнозируется между этими двумя классами. Эта сеть сегментации обучается с использованием стандартной функции кросс-энтропийных потерь.

Сетевая архитектура

Основываясь на работе сети обучения деконволюции для семантической сегментации, мы можем использовать предварительно обученную сеть VGG для извлечения представления изображения для семантической сегментации. Сетевая архитектура основана на сети кодер-декодер (ENet), упомянутой в приведенной выше работе. Эта сеть обучена для генерации одноканальных (бинарных) изображений меток в конце.

Обучение

Набор данных

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

Клонировать URL-адрес Git

https://github.com/ishwarsawale/lane_detection.git

Настройка конвейера ввода

Создание записей TF для данных обучения и проверки

python data_provider/data_feed_pipline.py  --dataset_dir data/training_data_example/ --tfrecords_dir ./data/training_data_example/tfrecords

Предварительная обработка данных

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

  1. Нормализуйте изображения, используя среднее значение ImageNet
  2. Нормализуйте изображения бинарных меток
  3. Увеличение данных горизонтального отражения

Начать обучение

python tools/train_binary_seg.py  --net vgg  --dataset_dir ./data/training_data_example

Тестирование

python tools/test_lanenet.py --weights_path weights/binary_lane_bdd_vgg/binary_lane_bdd_vgg_2019-12-04-23-00-04.ckpt-751--image_path image-path

Результаты

Введите изображение

Созданные ярлыки

Ссылки

  1. LaneNet: сети обнаружения полосы движения в реальном времени для автономного вождения

Связанная реализация

Набор данных и справочный код вдохновлен MaybeShewill-CV Engineer из Baidu && TJCVRS.