Ранее мы рассказывали про детекцию курения посредством объектовой видеоаналитики. Попробуем теперь рассмотреть практические аспекты применения данных решений и конкретные отрасли внедрения, а также их преимущества для бизнеса.
На наш взгляд самой интересной сферой применения является транспорт, в частности – каршеринг, где уже сейчас предусмотрены меры наказания в виде штрафов за курение в салонах арендованных автомобилей. Сумма штрафа варьируется в зависимости от компании от 5 до 15 тысяч рублей. Возвращаясь к сравнению объектовой видеоаналитики и датчиков, датчики не улавливают вейпы и иные приспособления для курения смесей, а также практически не чувствительны при открытых окнах автомобиля. Но это не отменяет факт нарушения и, соответственно, законного наказания в виде штрафа в соответствии с договором.
Помимо этого, на транспорте можно каскадом (последовательно) применять несколько нейронных сетей, таких как детекция курения и детекция факта/времени использования мобильного телефона. Понятно, что дальше подобные системы должны масштабироваться, например, с интеграцией телематики и подключением к CAN-шине автомобиля для отслеживания использования телефонов только при движении ТС, но это уже детали интеграции.
Наглядный пример, что конкретно детектируем и что получаем в итоге:
Демонстрация на ботах в Телеграме (вход – картинка с камеры смартфона или из галереи, выход – вероятность):
Аппаратная составляющая
Если в первой статье мы говорили об Intel NUC и серверах на их основе, как вычислителях для инференса, то сейчас мы говорим об эксплуатации решения в транспортных средствах, то есть появляется влияние погодных условий (жара, холод, точка росы и т.д.). Хорошее решение оказалось у AAEON, VPC-3350S:
Конкретно наша версия – с процессором Intel Atom x5 E3940. Инференс – на MyriadX на плате расширения. FPS в инференсе:
Тесты декодера:
Чем хороша железка и почему наш выбор пал на нее?
Нам понравилось:
- Наличие встроенного LTE-модуля.
- Наличие возможности расширения VPU ускорителем Intel MyriadX.
- Встроенная графика Intel HD Graphics 500, на которой можно использовать аппаратные декодеры и энкодеры для обработки видеопотоков.
- Наличие множества LAN-портов для прямого подключения сетевых камер без необходимости установки коммутатора.
- Широкий эксплуатационный температурный диапазон (-20+70).
Как это работает?
- На автомобиле устанавливаются сетевые камеры с питанием по Ethernet, POE (одна на водителя или две: водитель, пассажир).
- Данные с камер поступают напрямую на вычислитель, в данном случае AAEON NVR 3350.
- На вычислителе выполняется декодирование и нарезка видеопотока на фреймы.
- Фреймы с заданным делителем кадровой частоты обрабатываются нейронной сетью.
- Нейронная сеть возвращает вероятность события (курение или наличие телефона в руках). Каждое изображение пропускается через эти нейронные сети последовательно. Если одна из них выдала вероятность выше, условно, 50%, то фотография и запись об этом фиксируется во временной таблице в базе данных (в памяти).
- На основе количества повторяющихся событий фиксируется время действия/нарушения.
- Если время действия превышает заданную константу (10 секунд), то происходит фиксация факта события в базе данных. Событие включает следующую информацию:
- дата, время
- фотография факта нарушения
- длительность события в сек.
- идентификатор ТС (статичный GUID)
- номер камеры (0, 1)
- тип события
- Данные о событиях по факту наличия 3G/LTE передаются на центральный сервер обработки данных с интеграцией с существующей информационной системой каршеринга для проведения билинговых операций.
Вместо резюме
В статье мы постарались поделиться опытом реализации и интеграции решений в области ИИ на примере транспортной инфраструктуры. Что самое главное, большинство объектов автоматизации уже оснащено камерами, и можно обрабатывать существующие потоки без какой-либо существенной модернизации.
Xo4y_3uMy
В случае малого замкнутого пространства (машина) что мешает просто загородить камеру листочком или зеркальцем?
ComBox Автор
Ничего не мешает, но возможна и скрытая установка камеры под зеркалом. Да и мало кому в голову придет такая манипуляция. Тогда уж проще выйти из машины и покурить на улице. Смысл мер в том, чтобы не курили там, где этого делать нельзя (в том числе в соответствии с договором, который заключается в каршеринге и прилагаемых к нему правилах).
Xo4y_3uMy
Курильщики очень изобретательны в реализации своих желаний.
Проще кинуть шапку в угол приборки, чем лезть на улицу под дождь. Ну и в пробке так просто не выйдешь подымить.
И еще, я тут подумал, а если человек будет семечки щёлкать? Очень уж похожа механика движения. Будет ли конечное решение принимать человек или сразу автоматически?
ComBox Автор
Способ решить или частично решить проблему много, например: скрытая установка камеры, дублирование камер, как источников данных (благо они — условно, расходный материал, так как снижением FPS на указанной модели AAEON можно обрабатывать до 4 потоков), детекция фактов перекрытия камер с информированием внутри мобильных приложений и т.д. Тут, условно, пойдет «изобретательность» одних на «изобретательность» других…
По семечкам, зубочисткам во рту и карандашам — не будет ничего. Нет дыма или пара, как обязательных признаков.
Изначально все пилоты запускаются под контролем людей. То есть используется частичная автоматизация. В зависимости от результатов планово идет переход в полностью автоматический режим.
Xo4y_3uMy
Ну не совсем. Допустим зимой в момент прогрева машины человек ест семечки и выдыхает пар, так как в машине всё еще дубак.
Вообще интересно посмотреть на конечную реализацию!
ComBox Автор
В кадре должна быть сигарета/вейп (предмет), лицо, дым и событие должно повторяться во времени. Экспериментов с семечками и выдыхаемым паром мы, конечно, не делали, но с высокой долей вероятности все будет хорошо. Но с наступлением зимы обязательно проверим такой сценарий…
Ссылка на демку с распознаванием по фото (бот в Телеге) указана в статье. Можно на ней экспериментировать. Мы со своей стороны, периодически будем обновлять сетку и улучшать параметры детекции и классификации.
Xo4y_3uMy
Потестил я бота. Сигарету он конечно находит.
Но вот на фото в анфас я держусь за ус. Т.е. в кадре лицо+рука, сигареты нет в принципе. Сеть говорит, что 99,92% я курю. То же самое проверил, съев тестовую семечку. Тоже выше 99% что курю…
На фото в профиль лицо и рука в 10см, со слегка отставленным большим пальцем (без сигареты) — 99.92% курю. Фото лицо + просто кулак на расстоянии более 20см — курю 99%
Пока процент захвата ложных целей очень высок ( Достаточно в кадре появится руке и всё. Сработало. Т.е. семечки пока есть на камеру у вас нельзя…
Да еще под подозрение попадает куча людей, которые в задумчивости теребят усы или просто в носу ковыряются…
Дым сеть тоже находит. И срабатывает на него. Т.е. я выдыхаю дым (в кадре нет ни сигареты, ни руки) — вероятность 100% что я курю. Непонятно, что будет зимой с паром от дыхания в холодной машине… Тут и пар и регулярность действия…
Головоломная задачка.
Короче, удачи!
ComBox Автор
Да, семечка нас подвела :) Посмотрели тестовые загруженные фото, часть из них неверно классифицируются после конвертации модели TF -> OpenVINO, но параметры конвертации можно подобрать. Посмотрим в эту сторону. Возможно, детекция по фото не столь показательна, как на потоке, когда действия повторяются и в них есть общая уверенность за счет анализа множества кадров. Суть в том, что одна ошибка на конкретном кадре не дает ошибки в анализе множества (потоке). Возможно, доработаем бота на тест с обработкой роликов. Благо, на это есть тестовый NUC и AAEON.
Xo4y_3uMy
И уверен, с леденцами на палочке или зубочистками вы тоже ещё намучаетесь… ))
ComBox Автор
Леденцы, карандаши и прочие подобные предметы мы проверили и отсекаем. И там нет дыма, как важного признака. Повторюсь, что анализируется лицо (OpenVINO face_detection 0001/0004 с расширение полигона), наличие сигареты/вейпа, дыма. Часто влияет освещение, что, в принципе, видно на примере работы бота, когда у всех разные камеры и условия съемки, но в рамках конкретных внедрений сетку можно (нужно) дообучать.
Xo4y_3uMy
Ну пока не работает (.
Я проверил палец в носу, большой строительный карандаш во рту и даже детский совочек в зубах. Везде вероятность выше 99.90%. А у совочка так вообще 100%. И, естественно, ни дыма, ни сигареты в кадре не было.
Можете в боте глянуть ) Выглядит просто эпично )
Правда на высунутый язык не сработало %)
Вот кстати, про освещение. Ночное скудное освещение с миганием от столбов (постоянно) и от встречных фар (не постоянно) будет сильно осложнять дело. Да еще резкая светотень…
Наверное, надо отлаживать прямо на машине. Установить во все машины сотрудников и пусть набивают базу. Кто семечки ест, кто чипсы, кто в носу ковыряется, а кто и курит украдкой…
По поводу видеопотока — согласен, процент ошибок будет значительно меньше, чем в статике. Но повторяющиеся движения могут всё подпортить… Я не зря семечки привел — частота поедания семян подсолнуха как раз примерно совпадает с частотой затяжек )
ComBox Автор
Так я, в принципе, это и написал. По отдельным фреймам с разным освещением без единого преобразования картинки, результаты так себе. При хорошем освещении они будут значительно лучше. Савочек станет савочком, а не сигаретой или вейпом, хотя внешнее сходство у них и есть :) А на потоке с адаптацией под условия эксплуатации — минимизируются ошибки ложных срабатываний. Плюс практический опыт и частота появления совочков в реальных условиях тоже сильно помогает. Думаю, что на следующей неделе попробуем показать потоки с живых авто с детектором (по согласованию с водителями, разумеется) и дадим возможность в бот загружать видео, чтобы детекция была полноценной, а не по отдельному фрейму, вырванному из контекста.
cloudix
В одном каршеринге мне поддержка разрешила курить в машине (очень долго ждала эвакуатор), но я редко это делала. А сейчас их совсем запретили. Думаю что лучше разрешить курение в машинах, просто плашку передвигаешь в приложении, списывают 100 и все.
ComBox Автор
Это уже вопрос условий самой компании, владельца сервиса. Но так как есть некурящие и им не приятно сидеть в машинах, где прокурено предыдущим водителем, то вряд ли такая схема будет массово применяться. В крайнем случае, сами автомобили можно делить как для курящих и не курящих. Но машин ещё не так много, чтобы их разделять на два непересекающихся пула. И на уровне государства мы всё-таки боремся с курением (рестораны, номера в отелях и т.д.). Поэтому в машинах вряд ли дадут сделать исключение, даже если это будет востребовано.