Снежная слепота беспилотных авто

dajvljjbqlhlgkzymxu936l-b-o.jpeg

У природы нет плохой погоды, каждая погода благодать. Слова этой лирической песни можно понимать образно, интерпретировав погоду как отношения между людьми. Можно понимать и буквально, что также верно, ибо не было бы снежной и холодной зимы, мы бы не так ценили лето, и наоборот. Но беспилотные автомобили лишены лирических чувств и поэтического мироощущения, для них далеко не вся погода благодать, особенно зимняя. Одной из основных проблем, с которыми сталкиваются разработчики «робомобилей», это снижение точности датчиков, указывающих машине куда ей ехать, во время плохих погодных условий. Ученые из Мичиганского технологического университета создали базу данных погодных условий на дорогах «глазами» беспилотных авто. Эти данные были нужны дабы понять что нужно изменить или улучшить, чтобы зрение робомобилей во время снежной бури было не хуже, чем в ясный летний день. Насколько плохая погода влияет на датчики беспилотных авто, какой метод решения проблемы предлагают ученые, и насколько он эффективен? Ответы на эти вопросы мы найдем в докладе ученых. Поехали.

Основа исследования


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

Однако, если убрать из нашего образного уравнения переменную «пешеход», то все равно останется много потенциально опасных факторов. Погода является одним из них. Очевидно, что в плохую погоду (ливень или снежная буря) видимость может снизиться настолько, что порой приходится просто остановиться, ибо ехать нереально. Зрение автомобилей, конечно, сложно сравнить со зрением человека, но их датчики страдают от снижения видимости не меньше нас. С другой стороны у машин есть более широкий арсенал этих датчиков: камеры, радары диапазона миллиметровых волн (MMW), система глобального позиционирования (GPS), гиростабилизатор (IMU), система обнаружение и определение дальности с помощью света (LIDAR) и даже ультразвуковые системы. Несмотря на это многообразие «органов чувств», автономные машины все еще слепы во время плохой погоды.

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

При семантической сегментации вместо обнаружения объекта на изображении каждый пиксель классифицируется индивидуально и присваивается классу, который пиксель представляет лучше всего. Другими словами, семантическая сегментация — это классификация на уровне пикселей. Классическая семантическая сегментация — сверточная нейронная сеть (CNN от convolutional neural network) — состоит из кодирующей и декодирующей сетей.

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

Двумя ключевыми компонентами в декодирующих сетях являются так называемые слой MaxUnpooling и слой свертки Transpose. Слой MaxUnpooling (аналог слоя MaxPooling — операция пулинга с функцией максимума) необходим для снижения размерности обрабатываемых данных.

qtjvcpy6fyh3o7bwt_iykvhlpsy.jpeg
Пример операции MaxPooling.

Существует несколько методов распределения значений (т.е. пуллинга), которые имеют общую цель — сохранить местоположения максимальных значений в слое MaxPooling и использовать эти местоположения для размещения максимальных значений обратно в совпадающие местоположения в соответствующем слое MaxUnpooling. Этот подход требует, чтобы сеть кодирования-декодирования была симметричной, в которой каждый уровень MaxPooling в кодере имеет соответствующий уровень MaxUnpooling на стороне декодера.

Другой подход — разместить значения в заранее определенном месте (например, в верхнем левом углу) в области, на которую указывает ядро. Именно этот метод и был использован в моделировании, речь о котором пойдет немного позже.

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

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

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

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

Третий, но не менее важный, аспект это объединение датчиков. Под этим подразумевается буквальное объединение данных от нескольких датчиков для получения более полной картины и уменьшения вероятных погрешностей и неточностей в данных отдельных датчиков. Существует однородное и неоднородное объединение датчиков. Примером первого может быть использование нескольких спутников для уточнения местоположения по GPS. Примером второго является объединение данных камер, LiDAR и Radar для беспилотных авто.

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

-2dxcxq8wwau3tbtuoo2c8dg76e.png
Таблица преимуществ и недостатков датчиков, используемых в беспилотных авто.

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

Сбор данных


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

Для проведения дальнейших работ, включающих расчеты, моделирование и тестирование, необходимо было много данных. Чем больше, тем лучше, говорят сами ученые, и это вполне логично, когда речь идет о работе различных датчиков (камеры, LiDAR и Radar). Среди множества уже существующих наборов данных был выбран DENSE, которые охватывает большую часть необходимых для исследования нюансов.

DENSE также является проектом, нацеленным на решение проблем нахождения пути в суровых погодных условиях. Ученые, работавшие над DENSE, проехали порядка 10000 км по Северной Европе, записывая данные с нескольких камер, нескольких LiDAR, радаров, GPS, IMU, датчиков дорожного трения и тепловизионных камер. Набор полученных данных состоит из 12000 выборок, которые можно разбить на более мелкие подгруппы, описывающие конкретные условия: день+снег, ночь+туман, день+ясно и т.д.

Однако для правильной работы модели необходимо было провести коррекцию данных из DENSE. Исходные изображения камеры в наборе данных имеют размер 1920×1024 пикселей, их уменьшили до 480×256 для более быстрого обучения и тестирования модели.

Данные LiDAR хранятся в формате массива NumPy, который нужно было преобразовать в изображения, масштабировать (до 480×256) и нормализовать.

Данные радара хранятся в файлах JSON, по одному файлу для каждого кадра. Каждый файл содержит словарь обнаруженных объектов и несколько значений для каждого объекта, включая x-координаты, y-координаты, расстояние, скорость и т.д. Такая система координат параллельна плоскости автомобиля. Чтобы преобразовать ее в вертикальную плоскость, нужно учитывать только y-координату.

9w7dlppoyezkvd3tfufilzsxoms.png
Изображение №1: проецирование y-координаты на плоскость изображения (слева) и обработанный кадр радара (справа).

Полученные изображения подвергались масштабированию (до 480×256) и нормализации.

Разработка CNN модели


g4yuzwsgvb26cdzkk6m0v23gze8.png
Изображение №2: архитектура разработанной CNN модели.

Сеть была спроектирована так, чтобы быть как можно более компактной, так как глубокие сети кодирования-декодирования требуют немало вычислительных ресурсов. По этой причине сеть декодирования не была спроектирована с таким количеством уровней, как сеть кодирования. Сеть кодирования состоит из трех потоков: камера, LiDAR и радар.

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

Данные LiDAR не столь массивны, как данные от камер, потому его поток состоит из трех блоков. Точно так же поток Radar меньше, чем поток LiDAR, потому состоит всего из двух блоков.

Выходные данные от всех потоков изменяются и объединяются в одномерный вектор, который подключен к сети из трех скрытых слоев с ReLU активацией. Затем данные преобразуются в двумерный массив, который передается в сеть декодирования, состоящую из четырех последовательных этапов MaxUnpooling и транспонированной свертки для повышения дискретизации данных до размера ввода (480×256).

Результаты обучения/тестирования CNN модели


Обучение и тестирование проводились на Google Colab с использованием GPU. Подмножество данных, размеченных вручную, состояло из 1000 выборок данных камеры, LiDAR и радара — 800 для обучения и 200 для тестирования.

fy-afl_vyvxayg4isnjtx5vhef0.png
Изображение №3: потери в обучающих выборках во время фазы обучения.

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

pbbciol4d2c2szsc71nv8iwcixw.png
Изображение №4: точность в тестовых выборках во время фазы тестирования.

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

Однако этот показатель не является идеальным. В некоторых случаях определенный класс недостаточно представлен в выборке, от чего точность пикселей будет значительно выше (чем на самом деле) из-за того, что не хватает пикселей для тестирования модели для определенного класса. Посему было решено дополнительно использовать MIoU — среднее отношение области пересечения к области объединения.

ixsnnrbn03hcjcsr2j7on-ie5e8.png
Визуально представление IoU.

Подобно точности пикселей, точность по IoU вычисляется для каждого кадра, а конечный показатель точности — это среднее от этих значений. Однако MIoU рассчитывается для каждого класса отдельно.

c3iaxca6qwp_f2msbyyo99-rmi0.png
Таблица значений точности.

qfdy-kekgssee3exwooog1txgce.png
Изображение №5

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

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

Для более детального ознакомления с нюансами исследования рекомендую заглянуть в доклад ученых и дополнительные данные к нему.

Эпилог


Отношение к беспилотным автомобилям неоднозначное. С одной стороны, робомобиль нивелирует такие риски, как человеческий фактор: нетрезвый водитель, лихачество, безответственное отношение к ПДД, малый опыт вождения и т.д. Другими словами, робот не ведет себя как человек. Это хорошо, так ведь? И да, и нет. Во многом автономные транспортные средства превосходят водителей из плоти и крови, но далеко не во всем. Плохая погода тому яркий пример. Человеку, конечно, непросто ехать во время снежной бури, но для беспилотных авто это было практически нереально.

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

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

Благодарю за внимание, оставайтесь любопытствующими и хорошей всем рабочей недели, ребята. :)

Немного рекламы


Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас, оформив заказ или порекомендовав знакомым, облачные VPS для разработчиков от $4.99, уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5–2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps от $19 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

Dell R730xd в 2 раза дешевле в дата-центре Maincubes Tier IV в Амстердаме? Только у нас 2 х Intel TetraDeca-Core Xeon 2x E5–2697v3 2.6GHz 14C 64GB DDR4 4×960GB SSD 1Gbps 100 ТВ от $199 в Нидерландах! Dell R420 — 2x E5–2430 2.2Ghz 6C 128GB DDR3 2×960GB SSD 1Gbps 100TB — от $99! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5–2650 v4 стоимостью 9000 евро за копейки?

© Habrahabr.ru