Искусственный Интеллект призван спасать жизни
Зима 2020 года, темная ночь. Мой друг ехал домой после тяжелого рабочего дня. Он прикрыл глаза на пару секунд, и проснулся от ужасной боли — его рука была сломана, а голова истекала кровью. Он больше не вел машину, потому что она разбилась где-то на обочине. Это была автокатастрофа — он просто уснул за рулем.
Благодаря подушкам безопасности и ремню мой друг выжил, но ДТП повлекло за собой 6 месяцев реабилитации, огромный стресс для него, его семьи и друзей, тысячи долларов на ремонт автомобиля и множество сорванных сделок на работе. Это был тот случай, когда всего несколько секунд оказали огромное влияние на жизнь человека.
Обо мне
В то время я работал над несколькими проектами в области автомобильных автопилотов для известных производителей автомобилей. На основе искусственного интеллекта и компьютерного зрения мы создавали функциональные возможности для безопасности водителей, которые могли бы предсказывать некоторые опасные действия на дороге. Все эти изобретения были предназначены для новейших дорогих автомобилей, поэтому для обычных граждан получить достаточную безопасность на дороге — пока что далекое будущее. Меня это выбивало из колеи и я долго думал над тем, как это можно изменить.
Автопилот
Немного об автопилоте и его классификации. Организация SAE International установила шесть уровней автономного вождения:
Уровень 0 — ADAS (Усовершенствованная система помощи водителю) не может управлять автомобилем и может только предоставлять информацию. Водитель получает уведомления и предупреждения во время поездки и должен все делать сам.
Уровень 1 — автомобиль ассистирует водителю с помощью автоматической навигации. Если вы когда-либо водили автомобиль, скорее всего, вы использовали адаптивный круиз-контроль, систему удержания полосы движения, парктроник, систему блокировки колес и т. д.
Уровень 2 — система может контролировать ускорение, торможение и управление автомобилем. Тем не менее, водитель должен следить за дорогой и быть готовым в любой момент взять управление на себя.
Уровень 3 — в пути можно заниматься своими делами, в то время как автомобиль берет на себя управление. Водитель все же должен быть готов перехватить управление в критических ситуациях.
Уровень 4 — автопилот может самостоятельно управлять машиной, но только в определенных районах, оборудованных для полного автопилота. Внимание водителя требуется тогда, когда автомобиль выходит за пределы специальной геолокации.
Уровень 5 — полноценный автопилот без необходимости управления, «роботизированное такси». Этот тип транспортного средства может управляться искусственным интеллектом в любых условиях.
Искусственный интеллект
Из-за высокой сложности задач, которые возлагаются на роботизированные системы, трудно предсказать и реализовать все возможные сценарии на дороге. Для того, чтобы имплементировать некоторые функции, нам понадобится нечто большее, чем традиционные языки программирования и алгоритмы. Система должна быть обучена на основе тысяч/миллионов реальных случаев, которые мы уже зафиксировали или смоделировали на дороге, уметь реагировать на них, подбирать широкий спектр потенциальных решений и в конце концов выбрать наилучший возможный из них.
Например, как машина может определить тип движущегося впереди объекта? Это машина или велосипед, пешеход или какое-либо животное?
Датчик. Система должна быть оснащена датчиками, такими как радар, лидар, ультразвуковые датчики, камера. Обычно это сочетание различных датчиков, которые работают вместе (sensor fusion), в зависимости от производителей автомобилей, их поставщиков, цен и качества решения. В нашем случае лучше всего использовать камеру.
Нейронная сеть. Существует множество инструментов и технологий для обучения системы, но в нашем случае наиболее эффективным будет использование сверточной нейронной сети, которая может работать с изображениями и решать задачи идентификации и классификации объектов.
Набор данных. Чтобы научить нейронную сеть идентифицировать транспортное средство на дороге, нам нужно «показать» ей список фотографий, на которых автомобиль выделен красным маркером. После обучения она сможет найти транспортное средство на любом другом новом снимке с разной степенью точности. Чем больше разнообразных данных мы используем для обучения, тем более точными будут результаты. Это касается и любого другого типа объектов, которые нам нужно идентифицировать и классифицировать: велосипеды, люди, дорожные знаки, ориентиры и т. д.
Аннотация данных. Обучение нейронной сети требует сбора большого количества данных и их аннотация. Аннотация — это выделение объектов с целью того, чтобы нейронная сеть смогла понять, какие объекты находятся где. Например: фиолетовый — велосипед, желтый — автомобиль, синий — дорожные знаки и т. д. Чаще всего это делается вручную, иногда может быть полуавтоматизировано. В любом случае, это огромный объем работы.
Обучение, интеграция и тестирование. Когда необходимый объем данных аннотирован, мы готовы к тренировочному процессу, который обычно требует много времени и вычислительных мощностей.
Когда нейронная сеть успешно обучена и показывает хорошие результаты во время тренировочного процесса, она готова к интеграции в рабочую среду с некоторыми датчиками. Например, на транспортное средство может быть установлена мощная плата с несколькими камерами — и можно начинать полевые испытания с помощью интегрированных систем вождения и отладки. Интересный и увлекательный процесс!
Можете ли вы себе представить, как много времени отнимает эта небольшая задача? Во многих технологиях искусственного интеллекта инженеры объединяют список алгоритмов машинного обучения и интегрируют их в одну систему. В автопилоте список таких функций огромен и требует специальных исследований и разработок: предотвращение столкновений, смена полосы движения, слияние датчиков, помощник по дорожным знакам и автомобильному свету, аварийная остановка, система мониторинга состояния водителя и т.д.
Мониторинг состояния водителя
Важно понимать: прежде чем достичь уровня автопилота 4, водитель должен следить за дорогой и быть готовым как можно скорее отреагировать в случае чрезвычайной ситуации. Это долгий путь: начиная с исследований и разработки всех необходимых деталей для автономных систем вождения и создания всей необходимой инфраструктуры, заканчивая сотрудничеством с правительством по законам и всем правилам для конечного пользователя.
А пока мы должны заботиться о водителе и его внимании на дороге, прогнозируя опасные действия и обучая водителя совершенствовать свое поведение, чтобы сделать окружающую среду вокруг себя безопасной и не ставить под угрозу безопасность других людей. Поэтому многие автомобильные компании работают над системами мониторинга состояния водителя, которые с помощью камеры реагируют на сонливость, потерю концентрации внимания и т. д. Некоторые системы мониторинга состояния водителя скоро станут частью дорогостоящей комплектации автомобилей, но что делать остальным людям? Как повысить безопасность для всех одновременно?
Мобильное приложение
Я задавал этот вопрос себе, своим коллегам и друзьям в течение прошлого года. Мы нашли ответ, который может быть потенциально полезным и простым в использовании для всех — мобильное приложение! Сейчас каждый водитель пользуется смартфоном, и почти каждое мобильное устройство имеет камеру для селфи. Исследования и разработка прототипов начались как можно скорее.
Мы уверены в нашем опыте в области искусственного интеллекта. Мы знаем, как работать с UI/UX и создавать мобильные приложения для iOS или Android, но самой сложной частью является интеграция нейронной сети — как она работает на разных устройствах с разными камерами?
Упорный труд дает хорошие результаты. За короткий промежуток времени мы успешно интегрировали нейронную сеть и создали на ее основе весь необходимый функционал для минимально жизнеспособного продукта. Более подробную информацию вы можете найти на нашем сайте.
Отслеживание черт лица
Приложение автоматически идентифицирует лицо водителя с помощью фронтальной камеры и запускает отслеживание основных точек лица, определяя состояние водителя.
Оповещение о сонливости
Приложение начинает отслеживать соотношение ширины и высоты глаз водителя постоянно измеряет его коэффициент. Когда он становится меньше определенного порога, приложение предупреждает вас о сонливости специальными звуковыми и визуальными сигналами.
Оповещение об отсутствии водителя
Когда вы исчезаете из зоны действия камеры, приложение уведомляет вас об отсутствии водителя. Оно автоматически продолжает отслеживание после того, как камера снова обнаружит ваше лицо.
Оповещение об отдыхе/остановке
Приложение предлагает делать 15-минутный перерыв каждые 2 часа непрерывной езды. Спустя 8 часов вождения мы уведомляем о сопутствующем риске и потенциальной опасности.
Статистика ваших поездок
Во время вашей поездки приложение собирает данные для определения безопасности поездки. В следующих релизах вы cможете просмотреть статистику онлайн или сразу после поездки. Информация о ваших поездках позволит вам понять, насколько безопасно вы ехали, и, таким образом, оградить вас от непредвиденных событий.
Последнюю версию приложения вы можете скачать для Android и iOS (Beta)
Небольшое устройство
Мы протестировали наше приложение на разных смартфонах с разными камерами, и большинство из них хорошо работали с нейронной сетью, которую мы интегрировали. Все описанные ранее функции показали ожидаемые результаты. Но мы обнаружили, что не все селфи-камеры могут справляться с плохим освещением и работать ночью. Грустно!
Мы не сдадимся, даже наоборот — мы будем бороться с этим еще усерднее. Мы начали работать над внешней камерой с инфракрасным светом, исследовали множество готовых решений и, наконец, создали прототип на базе Raspberry Pi, который работает во всех возможных условиях с высокой производительностью и точностью. Нам есть чем поделиться с вами — похоже, для этого нам нужна еще одна статья… С нетерпением ждем ваших отзывов о приложении и наших идеях!
Безопасного всем вождения!