Не знаю, как считаете вы, но я убеждён, что любая работа обязывает человека к непрерывному изучению нового. А уж что говорить, когда ты работаешь в ИТ? Здесь чуть ли не каждый день кто-то что-то да придумает. Придерживаясь своего правила «вечной учебы», я решил, что будет большим упущением не пройти курс по созданию продукта. Давайте будем честны: ещё будучи детьми, мы постоянно что-то изобретаем в своей голове. Я работаю в компании НОРБИТ, которая входит в группу ЛАНИТ, и мне выпала возможность принять участие в акселераторе идей ЛАНИТ Product Manager. Здесь я решил совместить свою тягу к знаниям и изобретательству.
В конце марта 2022 года обучение было завершено, и в качестве «экзамена» все участники курса представляли свои продукты перед наставниками, коллегами и зрителями. Я занял первое место с AI-сервисом контроля состояния пожилых людей Digital Guardian.
В акселератор я уже шёл с готовой идеей, однако путь мой оказался тяжёлым, но очень интересным. На Хабре уже вышла статья, в которой подробно описывается процесс обучения в акселераторе и его методология, поэтому в этом посте я сосредоточусь только на своём продукте и его развитии.
Как я пришёл к идее продукта
Начнем со статистики: каждые 13 секунд в мире падает один человек, а каждые 20 минут ― умирает. В США только за год страховые компании выплачивают порядка 67 миллионов долларов в виде компенсации за подобные падения. Безусловно, падать и травмироваться никому не хочется, вне зависимости от возраста. Но больше всего эта проблема затрагивает именно пожилых людей. По оценке ВОЗ, в год фиксируется около 684 тысяч смертельных падений, большая часть из которых происходит с людьми старше 60 лет.
Очевидно, что я не первый, кто узнал эти данные и задумался о решении проблемы. Уже давно можно приобрести различные устройства для «слежки» за своим пожилым родственником: кольца, фитнес-браслеты и др. Ну и, конечно, можно нанять сиделку. Правда, судя по тому, что статистика не особо движется в положительном направлении, все эти способы не очень эффективны. Давайте разбираться почему.
Во-первых, всякого рода девайсы нужно заряжать. И что он вам покажет? Пульс и количество шагов. Этой информации явно будет недостаточно, а вы так и будете продолжать нервничать.
Если говорить о сиделке, то и здесь не всё так просто. «Государственная» выделяется, как правило, на не более чем 3-6 часов в неделю. Для понимания ― в неделе 168 часов. Если вам позволяет финансовое состояние, всегда можно нанять «частную» сиделку, но и это не залог успеха. Сиделка ― прежде всего человек. У неё есть такие потребности, как сон и еда. Да и никто не застрахован от простуды и недомогания.
Так в мою голову и пришла идея о том, что было бы здорово иметь «электронного смотрителя», который работает 24/7.
Принцип работы и техническая реализация
Моя основная идея заключается в том, что Digital Guardian не вносит никаких изменений в жизнь и привычки пользователя. По сути, в доме появляется устройство (камера + умная колонка), с которым можно коммуницировать и задавать разные вопросы. При этом оно непрерывно следит, что с вами или вашим родственником все в порядке. Девайс стоит в комнате и напоминает человеку о том, что пора, например, принять лекарства или размяться, анализирует деятельность, понимает тип активности и формирует её зоны. Например, устройство понимает, спите вы или же заняты готовкой.
Благодаря системе компьютерного зрения, которая взята за основу моего продукта, можно отслеживать состояние родственника. Например, если он упал, то вам придёт оповещение на смартфон. Дополнительно можно изучить статистику за неделю: узнать, как много человек спит или как часто выполняет зарядку по утрам. При этом, повторюсь, остаётся его полная конфиденциальность, т.е. никто не может в режиме живого времени смотреть видеопоток с камеры устройства.
Для подтверждения концепции своего решения я взял часть системы, отвечающую за детектирование падения с последующим оповещением родственников в мобильном приложении. Сейчас ведётся работа по разработке алгоритма автоматического анализа активности человека, её типовым зонам, а также детекции падений при помощи ML-моделей.
Проверка качества и скорости определения падения человека была выполнена благодаря трем различным подходам.
Выделение при помощи boundary box. В данном варианте на фотографии находится прямоугольник, изображение в котором больше всего похоже на человека. Если ширина больше длины, то фиксируется падение.
Сегментация человека. Каждому пикселю изображения задаётся определённый класс таким образом, что человек выделяется по контуру.
Pose estimation построение «скелета». На изображении выделяются определённые точки частей тела человека и сопоставляются между собой. После построения ключевых точек проводится вектор от носа до пяток и раз в секунду анализируется изменение угла наклона и длины вектора.
Поскольку необходимо анализировать разницу положения тела человека в пространстве, то количество информации, которую можно получить, должно быть максимальным. Скорость же работы переходит на второй план. Поэтому наилучшим вариантом является модель pose estimation. В данный момент работает пороговое определение падения, где оно детектируется после изменения угла наклона на определённое значение. В дальнейшем планируется использовать алгоритм градиентного бустинга для более точной детекции.
Для реализации этого алгоритма я выбрал алгоритм mmpose от OpenMMLab.
Вместо изменения угла наклона человека можно было использовать и другие методы, например, вычисление скорости изменения его координат или изменение из положения стоя в положение лежа, но в данном проекте я решил использовать именно изменение угла наклона, поскольку, на мой взгляд, это несет наибольшее количество информации о падении человека.
В результате тестирования модели на датасете, собранном с Youtube, и собственных экспериментах, была рассчитана точность (precision) определения падения человека, которая составила 77%. Всё ещё остаются проблемы с определением долгих падений или падений ровно назад.
К задаче определения зон активности я подходил как к классической задаче детекции объектов, где алгоритм CV находит знакомые ему предметы и выделяет их четырёхугольником. Были проведены тесты с использованием различных архитектур нейронных сетей, где я тестировал точность и качество детекции объектов. Лучшей моделью в моем рейтинге оказалась YOLO v4.
Для её обучения я использовал датасет с изображениями различных комнат (1043 фотографии) и при помощи методов аугментации (применения эффектов отражения, шума и тд) увеличил исходный датасет в 3 раза. В первой версии модели требовалось выделять только кровати, диваны и стулья на изображении, поэтому при помощи инструмента разметки Roboflow удалось разметить и другие особенности изображения (отражение по вертикали, изменение яркости, поворот и добавление шума).
Пока на этом всё. Во второй части я расскажу про подходы к классификации типов активностей, распознаванию людей в кадре и более надежные алгоритмы фиксации падений.
Выводы и планы на будущее
Мне как победителю второго потока акселератора ЛАНИТ Product Manager дали возможность выступить с презентацией своего продукта перед первым лицом нашей группы компаний для получения финансирования.
Сейчас я нахожусь на стадии Proof of concept (PoC). Это проверка концепции. При запуске продуктов PoС нужен, чтобы подтвердить или опровергнуть работоспособность гипотезы, оценить её эффективность. Для этого необходимо протестировать Digital Guardian на определённой фокус-группе.
Анализируя свой путь, я прихожу к выводу, что обучение в рамках акселератора идей помогло мне избежать многих ошибок. Самое важное и ценное, что я вынес для себя ― это новый подход к поиску реальной проблемы у клиентов. До момента разработки обязательно должен быть этап, где собирается информация у потенциальных покупателей, так называемый customer development. В ходе обучения в акселераторе я понял, почему так важно не пропускать этот этап. Сейчас я смело могу заявить, что понимание целевой аудитории ― пожалуй, самый важный критерий успеха стартапа.