В прошлом месяце Google публично выпустил стелс-проект под названием Shoppable Images. С помощью этого продукта веб-сайты могут предоставлять Google разрешение сканировать изображения на своих сайтах с помощью Javascript, предоставлять визуально похожие продукты и позволять пользователям покупать продукты всего за 3 клика. Это игра с распределенной коммерцией, а это означает, что технология должна позволять людям покупать что угодно, когда и где угодно. Расширенная обработка естественного языка должна позволить вам делать покупки с помощью голосового помощника, встроенного в ваш автомобиль, улучшенная кластеризация неструктурированных данных должна давать более точные рекомендации по продуктам при просмотре на вашем телефоне, а в моей работе с компьютерным зрением любое обычное изображение должно служить вдохновением для покупки . Однако маркировка данных, обучающие модели и обеспечение скорости и точности чрезвычайно сложны. Вот что я узнал в этом проекте:

  1. Компьютерное зрение в реальном времени по-прежнему работает медленно: еще до создания Shoppable Images мы пытались найти способ идентифицировать продукты на изображениях в реальном времени. Таким образом, если издатели изменят контент на своей странице, все изображения сразу станут доступны для покупок. Однако мы пришли к выводу, что нам нужно предварительно сканировать изображения как минимум за несколько часов, чтобы избежать задержки страницы. Даже при самых передовых вычислениях компьютерное зрение в реальном времени все еще работает медленно. Лучше заранее идентифицировать продукты на изображениях на сервере, чтобы время загрузки интерфейса не изменилось.
  2. Не упускайте из виду стек инфраструктуры, который повлияет на ваш продукт. Одно из преимуществ работы в Google заключается в том, что вам не нужно думать о вычислительной мощности или вычислительных затратах для ваших продуктов. Однако, если вы продаете другим компаниям, их стек инфраструктуры может иметь большое значение. Например, несмотря на то, что изображения для покупок работали на наших серверах и размещались на внутреннем хостинге, позже мы поняли, что многие издатели используют внешние службы хостинга изображений. (Вы можете определить, использует ли сайт внешний хостинг изображений, если URL-адрес изображения включает ? X = y.) Если бы мы заранее подумали об инфраструктуре типичного пользователя, мы могли бы сохранить много времени спустя.
  3. Маркировка данных - дело дорогое, и с ней трудно справиться: хотя я не могу раскрыть сумму денег, которые Google тратит на маркировку данных, когда я впервые услышал это число, я не смог выбросить его из головы . Другими словами, это крупная сумма денег. Я потратил некоторое время на размышления о том, как найти творческие способы обучения данных с минимальными затратами, причем краудсорсинг является очевидным. Amazon пыталась решить эту проблему с помощью Mechanical Turks, а Google использует ряд сторонних поставщиков. Я также потратил время на маркировку и перемаркировку некоторых данных, так что все готово! Составьте план создания обучающих данных внутри компании или за ее пределами и заранее подумайте о том, как справиться с расходами и обеспечить качество.
  4. API-интерфейсы могут не подходить для вертикально ориентированных предприятий: API-интерфейсы привлекательны своей простотой использования. Однако API-интерфейсы plug-and-play не всегда подходят для вертикально ориентированных предприятий. Даже для нас мы поняли, что, хотя наша модель может распознавать одежду, она не может отличить одежду больших размеров от средней. Для большинства случаев использования (например, использования компьютерного зрения для определения модных тенденций) это различие не имеет значения. Но для того, чтобы все люди могли делать покупки через изображения, нам требовалось больше точности, чем может обеспечить базовый API.
  5. Тщательно выбирайте фреймворк. Список фреймворков нейронных сетей в 2018 году огромен: разные фреймворки ориентированы на разные варианты использования. Пожалуйста, проведите собственное исследование, чтобы определить свой лучший выбор, но вот четыре удобных фреймворка с открытым исходным кодом, которые помогут вам выбрать правильный путь:
  • TensorFlow: Поскольку я работаю в Google, TensorFlow был очевидным выбором. Акцент на параллелизме и интеграции с Google CloudML делает сети TensorFlow очень масштабируемыми. TensorFlow становится лучше в мобильной производительности и позволяет создавать высокопроизводительные модели в браузере с новым TensorFlow.js. TensorFlow также имеет сильное сообщество разработчиков и множество документации.
  • PyTorch: Исследователи любят PyTorch за способность создавать экзотические экспериментальные нейронные сети. Если у вас есть сложная идея, которую вы не знаете, как реализовать с другими фреймворками, взгляните на PyTorch. Он отлично подходит для рекуррентных нейронных сетей (RNN), и многие недавние успешные исследовательские работы публикуют свой код в PyTorch. Пусть вас не пугают разговоры об исследованиях: PyTorch по-прежнему имеет доступный API, отличную производительность и документацию.
  • Caffe2: Caffe2 предлагает чрезвычайно высокую производительность с акцентом на крупномасштабные развертывания и мобильные модели. Caffe2 также надеется сохранить доминирующее положение Caffe в приложениях сверточной нейронной сети (CNN), таких как компьютерное зрение.
  • Keras: библиотеку Keras любят за ее удобочитаемость и способность быстро создавать нейронные сети. Он работает с использованием фреймворка в своем бэкэнде (например, TensorFlow) для выполнения всей математики нейронной сети и обертывает различные функции для простого использования. Keras предоставляет вам функции высокого уровня для таких вещей, как создание слоев, применение максимального пула и проверка точности в одной строке кода.

6. Ошибки типа II лучше, чем ошибки типа I: при разработке продуктов компьютерного зрения для потребителей (или B2B2C в моем случае) ложноотрицательный результат лучше ложноположительного. Например, если наша модель не распознала продукт, это была упущенная возможность, но в конечном итоге не помешала успеху продукта. Однако показ плохого соответствия очевиден для потребителя и значительно ухудшает взаимодействие с пользователем. Следовательно, хотя всегда существует компромисс между дисперсией и смещением, для нашего варианта использования небольшая дополнительная дисперсия была лучше, чем смещение.

7. Дизайн продукта по-прежнему имеет значение. Компьютерное зрение - это функция, а не продукт. Поэтому традиционный дизайн продукта по-прежнему имеет значение. Для нас это включало разработку приятного, неинвазивного UI / UX для потребителя и, что, возможно, более важно, создание гибкого продукта. Например, мы дали нашим корпоративным клиентам возможность изменять размещение тега «магазин», чтобы оно лучше соответствовало их сайту. Хотя ИИ - это последнее модное слово, дизайн продукта старой школы все еще имеет гораздо большее значение.

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