У двух наших брендов, Badoo и Bumble, более 500 миллионов зарегистрированных пользователей по всему миру загружают на нашу платформу миллионы фотографий в день. Эти изображения предоставляют нам богатый набор данных, из которых мы получаем множество идей.

Информация профиля пользователя

В нашей команде по обработке и анализу данных мы создали сервис, в котором изображения вводятся, а вывод - это информация о содержимом изображения. Мы используем эту услугу на этапе создания прототипа, во время исследовательского анализа и для предоставления бизнесу специальной информации о графическом контенте.

Например, мы заметили, что если кто-то носит солнцезащитные очки на всех своих фотографиях, он, как правило, получает меньше лайков, чем пользователи, четко показывающие свое лицо. Это позволяет нам давать советы пользователям о том, как улучшить их профили.

В этом блоге я делаю обзор того, как мы объединили глубокие нейронные сети и API-интерфейсы Flask, чтобы предложить эту услугу.

Задачи компьютерного зрения

Наш API обслуживает множество моделей, предоставляя различные типы информации о содержании изображений. Некоторые из используемых нами моделей:

  • Выполните классификацию изображений
  • Предоставьте текстовые описания содержания изображения
  • Обнаружение объекта

Воздействие и рабочий процесс

Во время реализации проектов мы проводим ряд анализов потенциального воздействия. Они дают оценку ожидаемой ценности проекта по мере того, как мы узнаем больше и продвигаемся на протяжении всего процесса. Это делается для того, чтобы ресурсы распределялись эффективно и чтобы то, что мы производили, оказывало максимальное влияние на бизнес. На изображении ниже показан рабочий процесс, к которому мы стремимся.

Рабочий процесс проекта

На этапе прототипирования наших моделей компьютерного зрения нам необходимо иметь возможность оценить, какое возможное влияние может оказать на бизнес, если мы будем выделять ресурсы и производить их. Чтобы оценить это в полной мере, нам нужно было масштабировать количество изображений, которые мы могли бы оценить. С этой целью мы создали фреймворк Flask, который позволяет нам обслуживать модели в большем масштабе по сравнению с использованием локальной машины.

Веб-API

После того, как мы обучили наши модели с помощью блокнотов Jupyter и сценариев .py, мы хотели, чтобы другие члены команды и люди в бизнесе могли использовать их для поддержки своих усилий по созданию прототипов и анализа потенциального воздействия. Для этого мы решили инкапсулировать модели в REST API. API, по сути, позволяет вам взаимодействовать через HTTP, делая запросы к определенным URL-адресам и получая соответствующие данные обратно в ответ.

Почему API?

Причина, по которой мы решили использовать API, заключается в том, что они упрощают работу кросс-языковых приложений. Например, когда интерфейсному разработчику необходимо использовать эти модели, ему просто нужно получить конечную точку API, и ему не нужно быть знакомым с Python или иметь знания в конкретной предметной области.

Существует множество сторонних решений, предлагающих API машинного зрения, включая Google Cloud Vision и AWS Rekognition. Мы решили не идти по этому пути в интересах как минимизации затрат, так и сохранения наших данных внутри компании. Мы использовали Python Flask для создания и обслуживания нашего API внутри компании. Flask - это микрофреймворк для Python, который предлагает мощный способ аннотирования функций Python с помощью конечных точек REST.

Почему именно Flask?

Flask и Django относительно сопоставимы с веб-фреймворками Python. Мы решили использовать Flask вместо Django, потому что с ним очень просто и легко начать работу, тогда как Django довольно тяжелый для создания веб-приложений. Простота и гибкость, являющиеся двумя ключевыми требованиями к нашему сервису, также повлияли на наше решение.

Хостинг службы

После того, как наш Flask API был запущен и запущен на локальном компьютере, мы упаковали сервис как приложение на одном из наших серверов для облегчения доступа других людей в бизнесе. На этих серверах у нас есть графические процессоры, которые помогают ускорить время вычислений.

Докер

Чтобы поместить сервис в контейнер на нашем сервере, мы создали контейнер Docker из образа. Если вы не знакомы с Docker, я бы порекомендовал взглянуть на их документацию в Интернете, поскольку она очень тщательная и удобоваримая.

Резюме

Разработанная нами инфраструктура в основном используется командой Data Science при выполнении исследовательских работ, проведении специального анализа и на этапе создания прототипа нашей модели. Мы также используем эту услугу, чтобы определить, следует ли вкладывать ресурсы в запуск моделей в производство. Мы обнаружили, что структура позволяет нашей команде работать более унифицированным, но гибким образом.

Во время моего выступления на ODSC Обнаружение изображений как услуга: как мы используем API-интерфейсы и глубокое обучение для поддержки наших продуктов, я более подробно расскажу об этой услуге, а также о проблемах, с которыми мы столкнулись. с некоторыми советами относительно передового опыта. Надеюсь, вы примете участие и получите удовольствие от выступления.

[Улучшение открытий в области науки о данных за счет новшеств в машинном обучении]

Об авторе / спикере ODSC: Лаура Митчелл

Обладая более чем 10-летним опытом работы в области технологий и науки о данных, я являюсь ведущим специалистом по данным в MagicLab, чьи бренды, Badoo и Bumble, объединили жизни более 500 миллионов человек через свидания, социальные сети и бизнес. Я также являюсь основателем платформы DataScienceGuidance.com, которая дает советы специалистам в этой области от отраслевых экспертов.

Я опубликованный автор в области искусственного интеллекта и имею практический и руководящий опыт в реализации проектов с использованием обработки естественного языка, компьютерного зрения и рекомендательных систем, от первоначальной концепции до производства.