Поиск по сайту Поиск

Как ИИ отслеживает небезопасное поведение водителей

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

Все автомобилисты так или иначе сталкиваются с пробками на дорогах. Монотонное движение побуждает лишний раз достать смартфон и написать в чат о своих проблемах, полистать новостную ленту или отвлечься разговором. Невинные на первый взгляд занятия могут стоить человеческой жизни. В США по этим причинам происходят 20% аварий. В русскоязычной терминологии проблема носит название «рассеянное вождение».

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

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

Рассмотрим, как создать отслеживающую рассеянных водителей нейросеть с помощью Python, Keras и Tensorflow. Если раньше вы не работали с этими инструментами, рекомендуем сначала ознакомиться с нашей статьёй «Как начать работу с Keras, Deep Learning и Python». В конце материала можно скачать и посмотреть исходный код.

Импортируем библиотеки

В качестве бэкэнда нейросети будем использовать Keras и Tensorflow. Импортируем необходимые библиотеки:

Строка 3 устанавливает tensorflow как бэкэнд для keras, а строка 4 скрывает все логи.

Импорт набора данных

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

https://cdn-images-1.medium.com/max/800/1*ByrPGJEuWD8xkz8hRgyCpA.png

Первые 5 строк набора данных

Обзор изображений

Перед обработкой изображений полезно хотя бы частично просмотреть датасет, поэтому отобразим по одной фотографии из каждого класса. Метки classname не содержат никакого информативного описания. Чтобы понимать, что означают классы c0, c1 и так далее, создадим словарь и добавим заголовки к каждому из них:

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

Строка 10 выводит 10 изображений, организованных в коллаж (5 по вертикали и 2 по горизонтали). image_count определяет число отображаемых фотографий в диапазоне от 1 до 10.

https://cdn-images-1.medium.com/max/800/1*bb_x6o9QZMh4y4D-Mg4AkA.png

Различное поведение водителей

Строим модель

Создадим свёрточную нейронную сеть с тремя слоями Conv2D (за каждым располагается слой MaxPooling2D), 1 слоем Flatten и 3 слоями Dense. Поскольку проблема является многоклассовой, последний слой Dense содержит 10 нейронов, а потери определяются с помощью categorical_crossentropy (категориальной кроссэнтропии).


Модель классификатора


Создаём обучающую выборку

Дополним обучающую выборку с помощью функции ImageDataGenerator. Также используем метод flow_from_directory, чтобы считывать соответствующие каждому классу изображения из нужной папки. Разделяем данные на обучающие и тестовые в соотношении 80% и 20%. Обратите внимание, что все изображения масштабируются в вещественный диапазон [0…1] (rescale).

Теперь обучим модель и посчитаем точность и потери.

Обучаем модель

Используем функцию fit_generator:

Модель достигает точности в 97%.

Заключение 

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

Исходный код и датасет находятся здесь (размер архива ~4 ГБ).

С оригинальной статьёй можно ознакомиться на портале towardsdatascience.com. Другие решения можно посмотреть в соревновании от Kaggle.

Domains weekly: самые опасные зоны, проблемы доменов для взрослых и недоступный Whois

Domains weekly: самые опасные зоны, проблемы доменов для взрослых и недоступный Whois

В сегодняшней подборке расскажем, в каких доменных зонах больше всего ботнетов, как коронавирус повлиял на индустрию для взрослых, что стало...
Read More
Поведенческие факторы ранжирования и их влияние на SEO: взгляд изнутри

Поведенческие факторы ранжирования и их влияние на SEO: взгляд изнутри

Редакция блога продолжает цикл образовательных SEO-статей. Сегодня вместе с SEO-специалистом REG.RU Евгением Сметаниным мы расскажем, что такое поведенческие факторы ранжирования,...
Read More
Безвозмездно, то есть даром: что можно получить бесплатно в REG.RU

Безвозмездно, то есть даром: что можно получить бесплатно в REG.RU

В REG.RU мы постоянно работаем над развитием и улучшением сервисов, и на первое место всегда ставим заботу о клиентах. У...
Read More
Domains weekly: неудавшийся захват Domovoy.ru, гранты от ICANN и домен, приносящий богатство

Domains weekly: неудавшийся захват Domovoy.ru, гранты от ICANN и домен, приносящий богатство

Сегодня поделимся новостями о том, как сеть супермаркетов не смогла заполучить желаемый домен, почему в Китае ценятся числовые адреса и...
Read More
Шпаргалка по Python для Django

Шпаргалка по Python для Django

В Python очень много полезных функций, библиотек и других элементов, перечислить которые в одном материале очень сложно. Мы поделимся базовой...
Read More
Domains weekly: безопасное инвестирование, открытие зоны .NEW и блокчейн‑домены

Domains weekly: безопасное инвестирование, открытие зоны .NEW и блокчейн‑домены

Дайджест домейнера с новостями о безопасном способе инвестирования в домены, политике ICANN в отношении доменных споров, открытии общедоступной регистрации .NEW...
Read More
Как подготовить и провести вебинар на любую тему: стратегия из 8 шагов от REG.RU

Как подготовить и провести вебинар на любую тему: стратегия из 8 шагов от REG.RU

Харизматичный спикер, интересная тема, качественная презентация, внимательные слушатели — что же ещё нужно для хорошего вебинара? В этом материале мы...
Read More
Domains weekly: популярные ccTLDs в России, 17‑летняя ошибка Microsoft и уязвимости аукционных доменов

Domains weekly: популярные ccTLDs в России, 17‑летняя ошибка Microsoft и уязвимости аукционных доменов

Сегодня расскажем о том, как изменился рынок доменных имён в 2019 году, какие национальные домены кроме .RU и .РФ используют...
Read More
10 фишек Облачных серверов REG.RU

10 фишек Облачных серверов REG.RU

Если вы выбрали для своего проекта VPS, то наверняка знаете об их особенностях. Но что, если мы скажем, что Облачные...
Read More
Настраиваем шифрование жесткого диска, чтобы избежать утечек данных

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

В каждой компании есть сотрудники, которые хранят на рабочем компьютере конфиденциальную информацию, и её утечка может оказаться катастрофой. Среди таких...
Read More