Социальная сеть в реальном времени
Я увлекаюсь программированием лет с 15. Однажды у меня возникла идея создать программу, которая позволяла бы с помощью телефона распознавать любого встречного. Такая социальная сеть в реальном времени — наводишь смартфон на человека и узнаешь, как его зовут. Конечно, это нереализуемо с точки зрения закона и защиты персональных данных, но с точки зрения технологии — вполне.
Ради собственного интереса я стал думать над тем, как можно было бы выгрузить в единую базу фотографии из соцсетей, чтобы потом применять их для распознания лиц. Так появилась технология, а вскоре и идея применять её в законных и практических целях на разных объектах, где существует пропускная система и где требуется определять, кто попадает на территорию.
Я подумал, почему бы не сделать программу, которая позволяла бы и людям легко заходить, не предъявляя каждый раз пропуск, и охране не открывать постоянно шлагбаумы и турникеты.
Как это работает
Предположим, организация решает воспользоваться программным обеспечением. Она предоставляет мне фотографии всех своих сотрудников, которые я загружаю в базу. С помощью камер, снимающих каждого, кто заходит на территорию, технология позволяет легко и быстро определить личность, даже если в базе будет несколько сотен миллионов данных. Если человек посторонний и сведений о нем в базе нет, то охранникам подается сигнал, а они уже разбираются в чем дело.
По мере создания программы я изучал подобные готовые решения и выяснил, что все они работают только на дорогом графическом процессоре. Я же решил создать программное обеспечение для центрального процессора, который стоит в любом обычном компьютере, чтобы в конечном счете разработка была доступной. Причем я испытывал программу на домашнем двухъядерном компьютере, и даже на нем она справлялась со своей задачей очень быстро.
Всемогущая нейросеть
Само распознание лиц происходит через нейросеть. Сначала обрабатывается цветная фотография, которая обрезается до нужных размеров (то есть изначально это может быть необязательно портретное фото — нейросеть сама выделит только лицо), далее снимок анализируется в черно-белом формате, а в конечном счете от него остается только 128 точек лица. Сравнение данных, содержащихся в базе и только полученных с помощью камер наблюдения, происходит именно по этим контрольным точкам. Число 128 считается оптимальным, чтобы установить личность, и это в свое время подтверждалось научными исследованиями в Америке. Можно брать и больше точек, но тогда компьютер окажется перегружен.
Пробегаясь по всем лицам, а точнее по всем наборам точек, которые заложены в базе данных, программа по формуле рассчитывает значение схожести. Если оно выше минимального значения, установленного мной, то программа считает, что личность определена и что это конкретный человек, а не кто-то похожий. Сейчас нейросеть, работая таким образом, определяет людей верно в более чем 98% случаев.
Причем даже если лицо будет частично закрыто, вероятность точного анализа не исключается. Главное, чтобы было доступно 40-45% точек. Если лицо закрыто сильнее, и у нейросети окажется недостаточно данных, то она предположит, что человек потенциально опасен и даст сигнал для охраны.
Конечно же, я всячески испытывал свою программу. Например, для наглядности и эксперимента я скачал по 10 фото случайных пользователей Вконтакте и разработал простейшее мобильное приложение. С помощью всего этого я мог сфотографировать случайного человека и определить его личность, если данные о нем скачались в мою базу. И пусть этим мог пользоваться только я и только в научных целях, по сути, мне удалось реализовать свою идею о глобальной социальной сети в реальном времени.
От идеи к готовому продукту
Программу я продолжаю развивать, и ее функционал постоянно растет. В начале нейросеть могла понимать, человек на фото или нет, потом сравнивала несколько фотографий и определяла сходство, теперь же она разбирается в базе на несколько миллионов пользователей и моментально находит нужного.
Следующим этапом станет монетизация и упаковка. Пока программа существует в консольной версии, не имеет визуальной составляющей и веб-интерфейса. Доработать её мне поможет грант в 500 тысяч рублей, который я смог выиграть на конкурсе по программе «УМНИК» (в Красноярском крае конкурс проводит Красноярский региональный инновационно-технологический бизнес-инкубатор — прим.ред.). До этого я работал над проектом, используя только свои знания и вообще не привлекая финансового ресурса.
Тел.: +7 (391) 201-77-77
Сайт: kritbi.ru
Соцсети: vk.com/kritbi_krsk
О возможности получить грант я узнал в университете, сразу подал заявку, успешно защитился и в следующем году планирую полностью завершить продукт. Программным обеспечением сможет воспользоваться любая организация, не готовая тратить деньги на то, чтобы содержать графический процессор или с нуля писать код собственной подобной программы для охраны.
Как принять участие в программе «УМНИК»
По всем вопросам, касающимся участия в программе «УМНИК», подачи заявки и получения консультаций, можно обращаться в проектный офис Красноярского регионального инновационно-технологического бизнес-инкубатора: Юлия Грибанова — начальник проектного офиса, тел. (391) 201-77-77, почта gub@kritbi.ru. Группа программы в VK: vk.com/umnikras.
Кристина Иванова специально для интернет-газеты Newslab