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

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

Обо мне

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

Автопилот

Немного об автопилоте и его классификации. Организация SAE International установила шесть уровней автономного вождения:

Уровень 0 — ADAS (Усовершенствованная система помощи водителю) не может управлять автомобилем и может только предоставлять информацию. Водитель получает уведомления и предупреждения во время поездки и должен все делать сам.

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

Уровень 2 — система может контролировать ускорение, торможение и управление автомобилем. Тем не менее, водитель должен следить за дорогой и быть готовым в любой момент взять управление на себя. 

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

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

Уровень 5 — полноценный автопилот без необходимости управления, “роботизированное такси”. Этот тип транспортного средства может управляться искусственным интеллектом в любых условиях. 

Искусственный интеллект

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

Например, как машина может определить тип движущегося впереди объекта? Это машина или велосипед, пешеход или какое-либо животное?

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

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

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

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

  • Обучение, интеграция и тестирование. Когда необходимый объем данных аннотирован, мы готовы к тренировочному процессу, который обычно требует много времени и вычислительных мощностей.

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

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

Мониторинг состояния водителя

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

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

Мобильное приложение

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

Мы уверены в нашем опыте в области искусственного интеллекта. Мы знаем, как работать с UI/UX и создавать мобильные приложения для iOS или Android, но самой сложной частью является интеграция нейронной сети — как она работает на разных устройствах с разными камерами?

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

  1. Отслеживание черт лица

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

  2. Оповещение о сонливости

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

  3. Оповещение об отсутствии водителя

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

  4. Оповещение об отдыхе/остановке

    Приложение предлагает делать 15-минутный перерыв каждые 2 часа непрерывной езды. Спустя 8 часов вождения мы уведомляем о сопутствующем риске и потенциальной опасности.

  5. Статистика ваших поездок

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

Последнюю версию приложения вы можете скачать для Android и iOS(Beta)

Небольшое устройство

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

Мы не сдадимся, даже наоборот — мы будем бороться с этим еще усерднее. Мы начали работать над внешней камерой с инфракрасным светом, исследовали множество готовых решений и, наконец, создали прототип на базе Raspberry Pi, который работает во всех возможных условиях с высокой производительностью и точностью. Нам есть чем поделиться с вами — похоже, для этого нам нужна еще одна статья… С нетерпением ждем ваших отзывов о приложении и наших идеях!

Безопасного всем вождения!

Комментарии (22)


  1. Komrus
    06.12.2021 14:59
    -1

    За статью Вам большое спасибо.
    А вот приложение, идеологически - мне как-то очень слабо нравится.
    Опять некая электронная хрень сущность, которая командует человеком.

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


    1. Rsa97
      06.12.2021 17:08

      В том числе — и риск моей гибели.
      Если только вашей — то ещё полбеды. А риск гибели пешехода, вышедшего на свой зелёный свет, и сбитого вашим автомобилем? А риск водителя на встречке, куда вылетел ваш автомобиль? За эти риски кто будет отвечать?


      1. Eyez Автор
        06.12.2021 17:58
        +1

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


        1. Komrus
          06.12.2021 18:20
          +1

          Весь этот функционал дико полезен, когда после детекции коллизии отрабатывается торможение. А это возможно только внутри автомобильного софта.
          /оффтопик
          Экзамен по вождению в Грузии. Экзаменатор — ученику:
          — Едэшь ти и вдруг перед табой двэ дэвушка — старый и молодой. Кады давыть будэшь?
          — Канэчно, старый!
          — Тормоз, тормоз давыть надо!


          1. Eyez Автор
            06.12.2021 18:45
            +1

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


        1. shadrap
          08.12.2021 12:24

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

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

          Я не знаю, кому нужно предупреждение раз в 2 часа, сделать перерыв... мне кажется 2 часа это вообще не срок, даже для не очень свежего водителя...

          Вот что б я сделал , это по мимо лица - изучил паттерны наклона головы (засыпание - кивание) и тп.


      1. Komrus
        06.12.2021 18:15
        +1

        За эти риски кто будет отвечать?
        В каком сценарии?
        Когда машину ведёт автопилот (уровня 5), а я имею право легально спать на заднем сидении (сценарий, который я всячески приветствую) — ответственность несёт производитель автопилота.
        Когда я за рулём — ответственность за всё несу я.
        Когда я за рулём, а какая-то софтинка бубнит что-то мне в ухо — всё равно ответственность несу я…
        А софтинка на смартфоне (которая по определению не может взаимодействовать с системой управления автомобилем) только создает ненужный шумофой фон. В лучшем случае. В худшем — иллюзию безопасности…


        1. sundmoon
          07.12.2021 01:20
          +1

          Да и без смартфона… Покупая новую тачку, проверяйте неотключаемый сигнал предупреждения о пересечении сплошной.


          Иначе оно выест вам и вашим пассажирам мозг, особенно в миллионниках.


          1. Komrus
            07.12.2021 10:47

            Хм, спасибо за информацию...
            Что бывают неотключаемые функции старт-стоп двигателя - это я знал. Я что ещё и о сплошной "заботится" о тебе машина - это что-то новенькео :)


            1. Eyez Автор
              07.12.2021 12:19

              У Тесла есть фича (она отключается) - управление сопротивляется пересекать сплошную и возвращает машину назад в полосу если не включен поворот


              1. sundmoon
                07.12.2021 12:25

                Camry 2020 года — просто бесит писком, и именно на сплошные.


    1. Eyez Автор
      06.12.2021 17:54

      Спасибо за коментарий! Нам очень важно понимать актуальность проблематики и потребность в помоще тем кто нуждается. Может Вам будет достаточно статистики чтобы самому потом делать выводи?


  1. warhamster
    06.12.2021 15:19

    А будет оно работать, если водитель в темных очках? Хотя бы частично прозрачных. Да или даже в обычных очках, которые все равно будут бликовать и искажать.

    А как оно сочетается с запущенной навигацией и плеером - умеет ли работать в фоне, хватает ли среднему телефону ресурсов на все сразу? И что будет, если громкость уведомлений и/или медиа убрана до нуля?


    1. Eyez Автор
      06.12.2021 18:08

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

      Относительно навигации и фонового режима:
      - Android версия сворачивается в маленкое окошко на фоне, что позволяет использовать навигатор и другие приложения
      - iOS версия работает с CarPlay


  1. alexyr
    06.12.2021 18:08

    как дополнительная мера безопасности — возможно. но среднестатистический телефон не справится, и время реакции будет недостаточно быстрое. но возможно я предвзят ибо работаю в этой области… в любом случае, удачи!


    1. Eyez Автор
      06.12.2021 18:50

      Последние версии смартфонов имеют неплохой запас вичислительных мощностей и неплохие камеры - все в погоне за хорошим фото/видео контентом. Спасибо за Фидбэк!


  1. Vito_Z
    06.12.2021 22:56

    Круто, интересно когда ожидать полноценный релиз?


    1. Eyez Автор
      06.12.2021 23:03

      Хотим добавить несколько фичей в следующем году по работе с основной камерой смартфона, которая будет смотреть на дорогу, потом девайс на Raspberry Pi - в следующей статье раскажем детали


  1. Heheami
    06.12.2021 22:56

    Как будете доказывать, что ловите сонливость и засыпание?


    1. Eyez Автор
      06.12.2021 23:05

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


      1. Heheami
        07.12.2021 20:08

        получается, что никакой оценки точности вы предложить пользователю не сможете. Т.е. в реальности утомление не распознается. Звучит так, что пользователь еще должен какую-то дополнительную работу делать, чтобы поставить свои лейблы для на события.


  1. cepera_ang
    07.12.2021 18:10

    Звучит прям как comma.ai, только они ещё и машину вести пытаются, не только мониторят водителя (толку-то с этого? Если он уже спит — мало утешит, что твой телефон это заметил за пару секунд до того, как ты въехал в столб. Хотя и придётся покупать отдельный телефон (в корпусе с вентилятором).