Технологии машинного обучения и компьютерного зрения (далее — ML и CV) прочно вошли в технологические тренды. Эксперты в отрасли считают, что сегодня инвестиции в ML можно сравнить с инвестициями в мобильную отрасль с десяток лет назад. Одна из причин хайпа в том, что если еще пять лет назад такие технологии были доступны только крупным компаниям, то сегодня даже небольшой стартап или энтузиаст-одиночка могут воспользоваться облачными вычислениями и быстро развернуть пилотный проект в сфере ML и CV.
Но не все представляют до конца, что это такое, как применять технологии ML и CV, какие результаты такие технологии могут дать в реальной жизни. Сегодня на рынке существует несколько ключевых направлений применения ML и CV — фановый контент, бизнес и медицина.
Направление № 1: развлечения и фановый контент
Фановый контент — распространенный способ применения ML и CV. Сюда относится применение хитроумных фильтров, наложение масок, часть AR-проектов, и так далее. Самое простое — дополненная реальность, доступная через смартфон. Если пользователь находится на станции метро, он может навести смартфон на QR-код, — и перед ним оживет 3D-сценка. Но это из совсем простого, а есть вещи и посложнее.
Одна из самых популярных технологий в машинном обучении и нейросетях — Style Transfer. Она позволяет перенести стиль фотографии с образца на оригинал и получить на выходе фотореалистичную картинку. Например, на фотографию можно перенести стиль одного из художников (Ван Гог, Моне и так далее). По сути, мы подаем на вход картинку с контентом C и картинку со стилем S. Задача сетки — выдать такую картинку, чтобы она как можно меньше отличалась по содержанию (деталям) от картинки C и как можно меньше отличалась по стилю от картинки S. За счет такого «равновесия» и достигается перенос стиля. Появилась технология примерно в 2015 году. Загадывать ее будущее довольно сложно, но есть все шансы, что ее будут использовать при создании видеороликов или фильмов, изменяя освещение, фоны и что-то еще.
Пример работы Style Transfer:
В ИТ-компании Junto работали над проектом для западного стартапа, который позволял на базе «исходников» от пользователя создать целый альбом кадров с подменными стилями и распечатать стилизованные фото в красиво сверстаном альбоме. Вместо офисного помещения люди по клику могли с достаточной степенью фотореалистичности оказаться на итоговых снимках в новом окружении: под водой, в сцене из мультфильма. После того, как нейросеть сделала свою работу, можно распечатать альбом со всеми фото и получить, например, кастомизированный комикс или альбом-книжку. Чтобы обучить такую нейросеть, нужно загрузить хотя бы сотню разных картинок, после чего она начнет быстро переносить стили.
Война скриптов — искусственный интеллект против навязчивой рекламы
Здесь нейросети помогают персонализировать контент. Не нужен отдельный дизайнер, а временные затраты сводятся к минимуму, потому что пользователь может сам зайти на сайт или в приложение, посмотреть, какие стили ему нравятся больше, и сразу увидеть итоговый результат. После — выбрать лучшие дубли, сделать заказ и распечатать альбом. Очевидно, что персонализированный контент намного интереснее конечному потребителю, чем шаблонные заготовки, и за таким контентом будущее.
Более «модный» вариант работы с персонализацией — не перенос стилей, а создание реалистичных скетчей. Пользователь загружает свои фотографии, нейросеть ищет на снимках лица и выделяет для каждого характерные черты и контуры (нос, глаза, брови, рот — так называемые face landmarks). По этим характерным чертам и линиям создается схематичный скетч. После этого скетч можно распечатать, например, в формате стикеров на ноутбук или машину. В США обклеивать машину стикерами — очень популярная история, и персонализированные стикеры пользуются у американцев большим спросом.
Направление № 2: бизнес
Кроме фанового контента, очевидное развитие для ML- и CV-технологий — применение в бизнесе. Скажем, в сфере HR или в документообороте. Для разработчика основное отличие этого направления в возрастающих рисках. Одно дело — ошибка с фильтром для стикеров, а другое — если мы неправильно считаем данные с загруженного скана паспорта. В бизнес-секторе требуется намного больше точности, и, как правило, требования совсем другие.
- Умные видеоинтервью. Один из кейсов применения нейросети для видео в бизнесе — помощь в организации HR-видеоинтервью. Если воронка кандидатов большая, то часто работодатель просит выслать видеоинтервью. Но для непрофессионалов в съемке это может стать проблемой. Во время записи фоном может пробежать кошка или сам фон будет отвлекать какими-то деталями вроде бабушкиного сервиза. Достаточно вспомнить легендарное интервью на BBC и виртуозное решение проблемы в новой версии Skype.
Нейросеть сегментирует человека в кадре, причем делает это для каждого нового кадра. Обеспечив плавность перехода, можно отделить человека от фона. В одном из проектов Junto для российского HR-стартапа были учтены и другие потенциальные проблемы при видеоинтервью. Например, человек не всегда при записи видео понимает, как именно его снимает камера, под каким углом она его видит. Нейросеть можно обучить покадрово отслеживать положение головы. Если человек смотрит не ровно в камеру, то пользователю выдается рекомендация сменить положение. Плюс в начале и конце видео, когда человек настраивает камеру или, наоборот, уже закончил интервью, софт сам плавно обрезает видео. Все это помогает интервьюеру со стороны компании не тратить время на лишнюю информацию.
- Блюр паспортных данных. Еще один прикладной случай использования CV — работа с паспортными данными. Так, в одном из проектов (в банковском секторе) требовалось в автоматическом режиме замазывать определенные данные в сканах паспортов, которые присылали пользователи — серию и номер паспорта и данные о прописке. Получив такое решение, бизнесу не придется больше заниматься ретушью вручную, можно сократить расходы на ФОТ.
- Распознавание товаров. При работе с компьютерным зрением часто нужно распознать не человека, а товары, которые он покупает. Один из кейсов — работа вендингового автомата или холодильника с продуктами. Покупатель может просто взять нужные продукты, а система автоматически рассчитает их стоимость. Изначально на каждый товар клеилась RFID-метка и стоял сканер, который считывал эту метку и так понимал, какие именно товары взял из холодильника пользователь. По сути, это была радиочастотная идентификация. Есть ридер и метка, ридер посылает сигнал, и если метка находится в зоне действия, а сигнал доходит до нее, то метка посылает обратно информацию — ту, которая записывается на метку. Похоже на считывание штрих-кода, только с меньшим количеством ограничений и без необходимости подносить метку близко к ридеру. С RFID-метками работают магазины одежды, которые размагничивают их при покупке.
Цес Снук, QUVA: мы не хотим зависеть от крупных компаний, которые владеют всеми данными
Но клеить на каждый товар RFID-метку — было неоправданно дорого для еды (≈10 рублей), поэтому RFID-метки заменили на DataMatrix коды. По сути, это те же QR-коды, но занимают меньше места, так как у них ориентация распознается не по квадратам в углах, а по двум перпендикулярным сплошным линиям.
Они наносятся на упаковку, а специальные камеры на холодильнике считывают состояние до и после открытия дверцы. В итоге можно быстро понять, что изменилось, какие продукты забрал покупатель, и выставить на них счет.
Направление № 3: медицина и биометрия
Когда дело доходит до медицинской информации, то чаще требуется не компьютерное зрение, а анализ данных в более удобоваримом, например, табличном виде. Довериться компьютеру по-прежнему сложно в визуальной диагностике, хотя рак кожи нейросети уже определяют в 72% случаев против точности в 66% у врачей. Но бывают и кейсы, когда без применения компьютерного зрения в современных реалиях действительно сложно.
Паскаль Фуа, EPFL, — о ключевых точках, глубоких нейросетях и эпиполярной геометрии
Более приземленный вариант использования нейросетей — биометрия и идентификация. Чаще всего такая идентификация связана с лицом человека (как в iPhone X), но иногда требуется идентификация по сетчатке глаза, отпечатку пальца или голосу.
- Пронумеровать зубы. Один из популярных кейсов работы компьютерного зрения в медицине — помощь медперсоналу в рутинных вещах. Например, создается алгоритм, который по рентгеновскому снимку может распознать все зубы в соответствии с врачебной классификацией, присвоить каждому зубу номер и обвести его в bounding box. Обучаются такие нейросети так же, как и остальные — на «вход» подается картинка со снимком и уже размеченным изображением. Задача сетки — выдать ответ, максимально похожий на размеченное изображение. В медицине обычно не очень много хороших размеченных картинок, поэтому в данном случае дата-сет состоит из пары сотен примеров. Плюс производится аугментация данных (добавление различных искажений и сдвигов). Таким образом мы искусственно увеличиваем размер дата-сета. Также в алгоритм добавляется эвристика — например, что клыки не могут располагаться дальше, чем большие коренные зубы.
Один из локомотивов развития нейросетей и пионер компьютерного зрения — компания NVIDIA, которая во многом задает тренды всему рынку. Рассматривая будущее ML и CV, первое, на что стоит обратить внимание, это последние проекты бренда. Например, технологию Video-to-Video.
Используя эту технологию, можно создать новое видео на основе шаблона. На «вход» нейросети подается схематичное представление сцены — карта с метками, и по этим меткам нейросеть сама строит фотореалистичную сцену. Это еще work-in-progress, но уже сейчас проект позволяет создать и деревья, и здания, и машины — все, что угодно. Манипулируя входными данными, можно потом получать на выходе различные сцены. Это не обязательно могут быть объекты, но может быть и поза человека (а на выходе — фотореалистичное видео с человеком, который двигается по загруженному шаблону). То же самое касается, например, лица человека. Мы можем подать контуры, а нейросеть сама сгенерирует видео с лицом человека, практически неотличимым от «настоящего». Переход между кадрами получается у технологии очень плавным, и такого нет ни в одном другом проекте.
Другая инновация NVIDIA — технология создания slow-mo из обычного видео. Название говорит само за себя: проект позволяет создать замедленное видео. Нейросеть сама понимает, как движутся объекты в кадры, находит взаимосвязь и достраивает недостающие элементы: проводит интерполяцию между кадрами, генерирует дополнительные. Получается видео с большим количеством кадров в секунду на выходе.
Еще одна технология от NVIDIA — удаление шумов на видео. Сетка устроена так, что она обучается только на фотографиях с шумами. По заявлениям NVIDIA, результаты не уступают другим передовым методам, которые обучаются еще и на картинках без шумов. Для обучения сетки требуется всего пара минут.
Во время обучения для апсемплинга изображений (получения из картинки низкого разрешения картинки более высокого разрешения — «Хайтек») на вход подаются пары вида: small_img и big_img. А затем сетка учится восстанавливать картинку. Математически, в силу потери сигнала, у нас бесконечно много вариантов, чем заполнить пробелы при увеличении картинки. Если использовать функцию потерь L2, сетка учится выдавать что-то среднее между всеми «хорошими», которые с точки зрения нейросети похожи на правильный ответ, результатами. Это также часто приводит к некоторый замыленности картинки. Так как результатом является среднее, то мы можем к нашему правильному ответу добавить любой шум с нулевым математическим ожиданием. Сетка при этом продолжит выдавать то же самое, результаты будут одинаковыми. Подметив этот факт, исследователи из NVIDIA поняли, что это может сработать в задаче удаления шумов. Вместо пары noisy_img и clean_img используются пары noisy_img_1 и noisy_img_2 — два изображения одного и того же объекта с разными шумами, например, две подряд фотографии одного и того же объекта при плохом освещении. И noisy_img_2 выступает в роли «правильного» ответа.
Один из последних проектов MIT — Temporal Relation Network. Это нейросеть, которая в live-режиме распознает происходящее на видео. В проекте исследователи обучали нейросеть распознавать не сами объекты, а трансформации с ними, и получили невероятный результат. Сеть анализирует не каждый кадр, а выбирает определенные ключевые кадры, и, используя временные связи между кадрами, понимает, что происходит. Интересно, что в будущем именно на базе подобных технологий, вероятно, будут воспринимать реальность простые роботы.