Представьте, что вы идете по улице и видите красивую машину, которую собираетесь купить. Просто наведя камеру телефона, вы можете увидеть соответствующий контент об этом автомобиле. Как это круто?!
Это была идея нашей команды, которая присудила нам первое место в недавнем научно-исследовательском хакатоне Taboola с метким названием — Табула Зум!
Каждый год Taboola проводит глобальный хакатон по исследованиям и разработкам для более чем 350 инженеров, целью которых является создание идей для крутых потенциальных продуктов или просто веселых экспериментов в целом.
В этом году 33 команды работали в течение 36 часов, чтобы придумать интересные и полезные для Taboola идеи. Некоторые из основных моментов включают инструмент, который может точно предсказать пол пользователей на основе их активности в Интернете, и интеграцию Taboola Feed с социальными сетями.
Наша команда решила создать
АР (дополненная реальность), которое позволяет пользователю получать рекомендации по контенту, подобно виджету рекомендаций Taboola, в зависимости от того, на что он направляет камеру своего телефона.
Само приложение представляет собой AR-опыт, аналогичный Google Glass, который позволяет вам взаимодействовать с миром с помощью камеры вашего телефона. Используя приложение, нужно просто навести камеру на объект, чтобы немедленно получить список историй из Интернета, связанных с этим объектом.
Чтобы воплотить эту идею в жизнь, мы использовали технологии из нескольких областей —
ИИ, Веб-приложения и
Микросервисы.
Под капотом
Поток довольно прост:
- Пользователь открывает веб-приложение на своем телефоне —
HTML5 страница, которая ведет себя как родное приложение. - Приложение каждую секунду отправляет скриншот захваченного видео на удаленный сервер.
- Сервер обрабатывает изображение с помощью технологий компьютерного зрения.
- Сервер ищет веб-статьи с миниатюрами, максимально похожими на обработанное изображение.
- Извлеченные изображения фильтруются с использованием порога подобия и отправляются обратно пользователю для отображения в удобном виджете поверх дисплея пользователя.
- Когда пользователь нажимает на виджет, соответствующая статья открывается в браузере.
Увеличение
Каждый компонент системы реализован с использованием разных технологий:
Веб приложение
Мы решили реализовать пользовательский интерфейс с помощью HTML5, что позволило нам получить доступ к родным возможностям телефона, таким как камера. Дополнительно мы использовали
WebRTC-API и
API холста.
Служба компьютерного зрения
Для каждого изображения служба обрабатывает изображение и возвращает
встраивание
— числовой вектор, представляющий информацию, извлеченную из содержимого изображения.
Понимание содержания изображения — хорошо известная проблема, имеющая множество решений. Мы решили использовать Google
Зарождение
модель, которая представляет собой ДНН (глубокая нейронная сеть), обученная классифицировать объект, найденный на изображении.
DNN — это конструкция из слоев нейронов, похожая на узлы на графе, где каждый слой изучает определенные закономерности в изображении. Первые слои учатся выводить простые узоры, такие как края и углы, а последний слой выводит тип объекта, например, собака, кошка и т. д.
Мы решили использовать выходные данные предпоследнего слоя, так как это дало наилучшие результаты.
База данных
Единственным компонентом, который уже был нам доступен, была внутренняя база данных статей Taboola, содержащая, среди прочего, миниатюру и URL-адрес статьи.
Если бы у нас не было такой базы данных, мы могли бы просто создать свою собственную, соскоб изображения с помощью библиотеки, такой как КрасивыйСуп.
Сервер
Мы использовали Flask в качестве нашего веб-сервера. При запуске сервер запрашивает внутреннюю базу данных Taboola о статьях из Интернета. Затем он отправляет каждое изображение в службу компьютерного зрения, которая возвращает вложение. Затем вложения сохраняются в назначенную структуру данных, называемую
ФАИСС
(Поиск сходства с искусственным интеллектом в Facebook). Он позволяет нам выполнять поиск ближайших соседей.
Каждое изображение, отправленное пользователем, аналогичным образом преобразуется во вложение. Затем он используется в качестве запроса к вышеуказанной структуре данных для получения ее ближайших вложений, то есть изображений с похожими шаблонами и содержимым. Затем пользователю возвращаются только те изображения, которые считаются похожими выше заданного порога.
Итак, резюмируя, вся архитектура опирается на три основных компонента:
- веб приложение
- сервис компьютерного зрения
- база данных статей
Весь проект был разработан менее чем за 36 часов командой из 5 человек.
Это приложение затрагивает несколько интересных и захватывающих областей, которые являются «горячими» в отрасли — AR и AI. Это было легко реализовать благодаря общедоступным инструментам и библиотекам.
Если есть только одна вещь, которую мы хотим, чтобы вы вынесли из этого, так это то, что это не так сложно.
Мы приглашаем вас узнать о потенциале, который кроется в этих областях, и быть в поиске интересных и захватывающих идей. Как только вы найдете его, идите и проведите свой собственный хакатон!
Если вы хотите поиграть с приложением, откройте
https://zoom.taboola.com на вашем телефоне — используйте Chrome на Android и Safari на iOS и попробуйте наводить курсор на разные объекты, чтобы увидеть разные результаты — имейте в виду, что это проект хакатона до альфа-версии.
Мы хотим поблагодарить наших замечательных товарищей по команде, которые неустанно работали над созданием этого удивительного приложения –
Амир Керен, Йоэль Зелдес, Элина Ревзин, Авив Ротман и Офри Манн.
Первоначально опубликовано на
Engineering.taboola.com
мной и Амир Керен.