БытьВ этом гостевом посте Патрик Брандт из The Coca-Cola Company рассказывает нам, как они использовали ИИ и TensorFlow для беспрепятственного подтверждения покупки.
Основная программа лояльности Coca-Cola была запущена в 2006 году под названием MyCokeRewards.com. Платформа «MCR.com» включает в себя создание уникального кода продукта для каждого продукта Coca-Cola, Sprite, Fanta и Powerade, продаваемого в бутылках по 20 унций, а также продуктов в картонной упаковке, которые можно приобрести в продуктовых магазинах и других местах. розничный магазин. Пользователи могут ввести эти коды продуктов на MyCokeRewards.com, чтобы принять участие в акции.
Спустя годы, 2016 год: программа лояльности Coca-Cola по-прежнему пользуется огромной популярностью, и пользователи вводят миллионы кодов продуктов для участия в рекламных акциях и лотереях. Однако в 2006 году мобильного просмотра не существовало, а к концу 2016 года его доля составила более 50%. В ответ на эти изменения в поведении браузераCoke.comЗапущен как веб-интерфейс для мобильных устройств, заменивший оригинальный MCR.com. Ручной ввод 14-символьной кодировки в мобильное устройство — очень плохой пользовательский опыт, который влияет на успех нашей программы. Мы хотим предоставить наилучшие возможности для мобильной аудитории, а последние достижения в области искусственного интеллекта открывают совершенно новые возможности.
Coca-Cola в течение многих лет пыталась считывать коды продуктов с помощью готовых библиотек и сервисов оптического распознавания символов (OCR), но без особого успеха. В наших процессах печати обычно используются растровые шрифты с низким разрешением, а крышки от бутылок или картонные носители работают на очень высоких скоростях под печатающей головкой. Это создает строки с низкой точностью, что делает эти символы нечитаемыми с помощью стандартного программного обеспечения OCR (и иногда трудно читаемыми человеческим глазом). OCR имеет решающее значение для упрощения процесса ввода кода для мобильных пользователей: пользователь должен иметь возможность сфотографировать код, а затем автоматически зарегистрироваться для покупки, чтобы принять участие в акции. Нам нужна специализированная система оптического распознавания символов для идентификации наших кодов продуктов.
Пример крышек для бутылок и картонных коробок
Наше исследование привело нас к многообещающему решению: сверточные нейронные сети. Сверточные нейронные сети относятся к семейству нейронных сетей «глубокого обучения», лежащих в основе современных продуктов искусственного интеллекта. Google использовал сверточные нейронные сети для извлечения адресов и номеров домов из изображений Street View. Сверточные нейронные сети также неплохо справляются с распознаванием рукописных цифр. Эти примеры использования распознавания цифр прекрасно представляют тип проблемы, которую мы пытались решить: извлечение строк из изображений, которые содержат небольшие наборы символов и что символы, содержащиеся в небольших наборах символов, могут различаться по внешнему виду.
В прошлом разработка глубоких нейронных сетей, таких как сверточные нейронные сети, была огромной проблемой из-за чрезвычайно сложных доступных библиотек для обучения и логического вывода.TensorFlow(фреймворк машинного обучения, исходный код которого Google открыл в 2015 году), предназначенный для упрощения разработки глубоких нейронных сетей.
TensorFlow предоставляет высокоуровневые интерфейсы для различных типов слоев нейронов и популярных функций потерь, упрощая работу по реализации различных архитектур моделей сверточных нейронных сетей. Возможность быстрого повторения различных архитектур моделей значительно сократила возможности нашей компании по созданию пользовательских Решение OCR, поскольку мы можем разрабатывать, обучать и тестировать различные модели всего за несколько дней. Модели TensorFlow также очень портативны: фреймворк поддерживает собственное выполнение моделей на мобильных устройствах («ИИ на периферии») или на серверах, удаленно размещенных в облаке. Это обеспечивает подход «установил и забыл» для выполнения модели на многих различных платформах, включая веб-сайты и мобильные устройства.
Нет нейронной сети умнее, чем данные, используемые для ее обучения. Мы знали, что нам нужно большое количество помеченных изображений, закодированных продуктом, для обучения сверточной нейронной сети, которая поможет нам достичь наших целей производительности. Наша обучающая выборка построена в три этапа:
Первая задача на этапе подготовки к запуску — программная генерация миллионов закодированных изображений смоделированных продуктов. Эти смоделированные изображения включают в себя изменения наклона, освещения, тени и интенсивности размытия. Когда модель обучалась с использованием только смоделированных изображений, она предсказывала 50%-ю точность на реальных изображениях (то есть, как часто все 14 символов были правильно предсказаны из 10 наиболее надежных предсказаний). Это обеспечивает основу для трансферного обучения: модель, первоначально обученная с помощью смоделированных изображений, является основой для более точной модели, которая будет обучаться с использованием реальных изображений.
Теперь задача состоит в том, чтобы обогатить смоделированные изображения достаточным количеством реальных изображений для достижения наших целей производительности. Мы создали специальное обучающее приложение для устройств iOS и Android, которое «тренеры» могут использовать для фотографирования и маркировки кода; затем эти маркированные изображения переносятся в облачное хранилище для обучения. Мы протестировали в производстве тысячи кодов продуктов на крышках от бутылок и картонных коробках и передали коды нескольким поставщикам, которые использовали приложение для создания начального набора для обучения в реальных условиях.
Даже дополненная и обогащенная обучающая выборка не может заменить изображения, созданные конечными пользователями в различных условиях окружающей среды. Мы знаем, что сканирование может привести к неточным закодированным предсказаниям, поэтому нам нужно предоставить пользователям возможность быстро исправлять эти предсказания. Два компонента имеют решающее значение для обеспечения этого опыта: служба проверки кода продукта, которая используется с момента запуска нашей первоначальной платформы лояльности в 2006 году (для проверки того, что предсказанный код является реальным кодом); алгоритм предсказания, используемый для выполнения регрессии для определить уровень достоверности каждого символа в 14 позициях символов. Если предсказанная кодировка недействительна, в интерфейс возвращается предсказание с наивысшей достоверностью и уровень достоверности для каждого символа. Символы с низкой достоверностью будут выделены, указывая пользователю на необходимость обновления символов, требующих внимания.
Интерфейс исправления ошибок позволяет пользователям исправлять неверные прогнозы и генерировать полезные обучающие данные.
Это нововведение в интерфейсе обеспечивает активный процесс обучения: цикл обратной связи позволяет модели возвращать скорректированные прогнозы в конвейер обучения для постепенного улучшения. Таким образом, наши пользователи могут систематически повышать точность моделей распознавания символов с течением времени.
Конвейер идентификации кода продукта
Чтобы оправдать ожидания пользователей в отношении производительности, мы установили несколько строгих требований к конвейеру OCR кодирования продукта:
Первоначально мы исследовали архитектуру с использованием одной сверточной нейронной сети для всех носителей кодирования продукта. Модели, созданные таким образом, слишком велики для распространения в мобильных приложениях, и их выполнение занимает больше времени, чем необходимо. мы вQuantiphi, Inc.партнеров Applied AI начали перебирать разные архитектуры моделей и остановились на той, в которой использовались несколько сверточных нейронных сетей.
Эта новая архитектура значительно уменьшает размер модели без ущерба для точности, но она по-прежнему не соответствует нашей потребности в поддержке беспроводных обновлений для мобильных приложений. Затем мы использовали встроенный модуль квантования TensorFlow, который уменьшает размер модели за счет уменьшения точности весов между связанными нейронами. Модуль квантования уменьшил размер модели в 4 раза, но когда Quantiphi прорвалась вперед с новым подходом под названием SqueezeNet, размер модели значительно уменьшился.
Модель SqueezeNet была выпущена в ноябре 2016 года группой исследователей из Калифорнийского университета в Беркли и Стэнфордского университета. Он имеет небольшую, но очень сложную конструкцию, согласно В популярных тестах, таких как Imagenet, он может достигать уровней точности, сравнимых с гораздо более крупными моделями. После перепроектирования архитектуры нашей модели распознавания символов для использования сверточной нейронной сети SqueezeNet компания Quantiphi уменьшила размер модели для определенных типов мультимедиа в 100 раз. Поскольку модель SqueezeNet по своей природе мала, можно построить более богатую архитектуру обнаружения функций, достигнув значительно более высокой точности при значительно меньшем размере, чем наша первая партия моделей, которые не были обучены с помощью SqueezeNet. Теперь у нас есть высокоточная модель, которую можно легко обновить на удаленном устройстве; наша окончательная модель до активного обучения имела показатель успеха распознавания, близкий к 96%, что приводит к точности распознавания символов 99,7% (всего 3 ошибки на 1000 предсказаний символов).
Пример эффективного распознавания кода продукта с различными типами проблем с окклюзией, панорамированием и фокусировкой камеры
Развитие искусственного интеллекта и зрелость TensorFlow позволяют нам, наконец, получить желанную возможность подтверждения покупки. С момента запуска в конце февраля 2017 года наша платформа идентификации кодов продуктов провела более десятка рекламных акций и сгенерировала более 180 000 скан-кодов; теперь она является основным компонентом всех онлайн-рекламных акций Coca-Cola в Северной Америке.
Переход на платформу распознавания кода продукта на основе ИИ был для нас очень ценным по двум основным причинам:
Наша платформа распознавания кодов продуктов — это первая крупномасштабная реализация новой возможности на базе искусственного интеллекта в компании Coca-Cola. В настоящее время мы изучаем применение ИИ в различных сферах бизнеса, от разработки продуктов до оптимизации розничной торговли в электронной коммерции.
Основная программа лояльности Coca-Cola была запущена в 2006 году под названием MyCokeRewards.com. Платформа «MCR.com» включает в себя создание уникального кода продукта для каждого продукта Coca-Cola, Sprite, Fanta и Powerade, продаваемого в бутылках по 20 унций, а также продуктов в картонной упаковке, которые можно приобрести в продуктовых магазинах и других местах. розничный магазин. Пользователи могут ввести эти коды продуктов на MyCokeRewards.com, чтобы принять участие в акции.
Спустя годы, 2016 год: программа лояльности Coca-Cola по-прежнему пользуется огромной популярностью, и пользователи вводят миллионы кодов продуктов для участия в рекламных акциях и лотереях. Однако в 2006 году мобильного просмотра не существовало, а к концу 2016 года его доля составила более 50%. В ответ на эти изменения в поведении браузераCoke.comЗапущен как веб-интерфейс для мобильных устройств, заменивший оригинальный MCR.com. Ручной ввод 14-символьной кодировки в мобильное устройство — очень плохой пользовательский опыт, который влияет на успех нашей программы. Мы хотим предоставить наилучшие возможности для мобильной аудитории, а последние достижения в области искусственного интеллекта открывают совершенно новые возможности.
Задача реализации бесшовного доказательства покупки
Coca-Cola в течение многих лет пыталась считывать коды продуктов с помощью готовых библиотек и сервисов оптического распознавания символов (OCR), но без особого успеха. В наших процессах печати обычно используются растровые шрифты с низким разрешением, а крышки от бутылок или картонные носители работают на очень высоких скоростях под печатающей головкой. Это создает строки с низкой точностью, что делает эти символы нечитаемыми с помощью стандартного программного обеспечения OCR (и иногда трудно читаемыми человеческим глазом). OCR имеет решающее значение для упрощения процесса ввода кода для мобильных пользователей: пользователь должен иметь возможность сфотографировать код, а затем автоматически зарегистрироваться для покупки, чтобы принять участие в акции. Нам нужна специализированная система оптического распознавания символов для идентификации наших кодов продуктов.
Пример крышек для бутылок и картонных коробок
Наше исследование привело нас к многообещающему решению: сверточные нейронные сети. Сверточные нейронные сети относятся к семейству нейронных сетей «глубокого обучения», лежащих в основе современных продуктов искусственного интеллекта. Google использовал сверточные нейронные сети для извлечения адресов и номеров домов из изображений Street View. Сверточные нейронные сети также неплохо справляются с распознаванием рукописных цифр. Эти примеры использования распознавания цифр прекрасно представляют тип проблемы, которую мы пытались решить: извлечение строк из изображений, которые содержат небольшие наборы символов и что символы, содержащиеся в небольших наборах символов, могут различаться по внешнему виду.
Сверточные нейронные сети с TensorFlow
В прошлом разработка глубоких нейронных сетей, таких как сверточные нейронные сети, была огромной проблемой из-за чрезвычайно сложных доступных библиотек для обучения и логического вывода.TensorFlow(фреймворк машинного обучения, исходный код которого Google открыл в 2015 году), предназначенный для упрощения разработки глубоких нейронных сетей.
TensorFlow предоставляет высокоуровневые интерфейсы для различных типов слоев нейронов и популярных функций потерь, упрощая работу по реализации различных архитектур моделей сверточных нейронных сетей. Возможность быстрого повторения различных архитектур моделей значительно сократила возможности нашей компании по созданию пользовательских Решение OCR, поскольку мы можем разрабатывать, обучать и тестировать различные модели всего за несколько дней. Модели TensorFlow также очень портативны: фреймворк поддерживает собственное выполнение моделей на мобильных устройствах («ИИ на периферии») или на серверах, удаленно размещенных в облаке. Это обеспечивает подход «установил и забыл» для выполнения модели на многих различных платформах, включая веб-сайты и мобильные устройства.
Машинное обучение: практика ведет к совершенству
Нет нейронной сети умнее, чем данные, используемые для ее обучения. Мы знали, что нам нужно большое количество помеченных изображений, закодированных продуктом, для обучения сверточной нейронной сети, которая поможет нам достичь наших целей производительности. Наша обучающая выборка построена в три этапа:
- Имитация изображения перед запуском
- Реальное изображение перед запуском
- Изображения, отмеченные нашими пользователями в производстве
Первая задача на этапе подготовки к запуску — программная генерация миллионов закодированных изображений смоделированных продуктов. Эти смоделированные изображения включают в себя изменения наклона, освещения, тени и интенсивности размытия. Когда модель обучалась с использованием только смоделированных изображений, она предсказывала 50%-ю точность на реальных изображениях (то есть, как часто все 14 символов были правильно предсказаны из 10 наиболее надежных предсказаний). Это обеспечивает основу для трансферного обучения: модель, первоначально обученная с помощью смоделированных изображений, является основой для более точной модели, которая будет обучаться с использованием реальных изображений.
Теперь задача состоит в том, чтобы обогатить смоделированные изображения достаточным количеством реальных изображений для достижения наших целей производительности. Мы создали специальное обучающее приложение для устройств iOS и Android, которое «тренеры» могут использовать для фотографирования и маркировки кода; затем эти маркированные изображения переносятся в облачное хранилище для обучения. Мы протестировали в производстве тысячи кодов продуктов на крышках от бутылок и картонных коробках и передали коды нескольким поставщикам, которые использовали приложение для создания начального набора для обучения в реальных условиях.
Даже дополненная и обогащенная обучающая выборка не может заменить изображения, созданные конечными пользователями в различных условиях окружающей среды. Мы знаем, что сканирование может привести к неточным закодированным предсказаниям, поэтому нам нужно предоставить пользователям возможность быстро исправлять эти предсказания. Два компонента имеют решающее значение для обеспечения этого опыта: служба проверки кода продукта, которая используется с момента запуска нашей первоначальной платформы лояльности в 2006 году (для проверки того, что предсказанный код является реальным кодом); алгоритм предсказания, используемый для выполнения регрессии для определить уровень достоверности каждого символа в 14 позициях символов. Если предсказанная кодировка недействительна, в интерфейс возвращается предсказание с наивысшей достоверностью и уровень достоверности для каждого символа. Символы с низкой достоверностью будут выделены, указывая пользователю на необходимость обновления символов, требующих внимания.
Интерфейс исправления ошибок позволяет пользователям исправлять неверные прогнозы и генерировать полезные обучающие данные.
Это нововведение в интерфейсе обеспечивает активный процесс обучения: цикл обратной связи позволяет модели возвращать скорректированные прогнозы в конвейер обучения для постепенного улучшения. Таким образом, наши пользователи могут систематически повышать точность моделей распознавания символов с течением времени.
Конвейер идентификации кода продукта
Оптимизирован для максимальной производительности
Чтобы оправдать ожидания пользователей в отношении производительности, мы установили несколько строгих требований к конвейеру OCR кодирования продукта:
- Быстро: нам требуется в среднем одна секунда времени обработки после отправки закодированного изображения продукта в конвейер OCR.
- Точность: мы запустили с целью достижения точности распознавания строк 95% и гарантировали, что модель может улучшаться с течением времени благодаря активному обучению.
- Небольшой: конвейер OCR должен быть достаточно небольшим, чтобы распространяться непосредственно в мобильные приложения и поддерживать беспроводные обновления по мере улучшения модели с течением времени.
- Конвейеры OCR должны обрабатывать различные носители кодирования продуктов: десятки различных типов шрифтов, колпачков и комбинаций носителей картонной упаковки.
Первоначально мы исследовали архитектуру с использованием одной сверточной нейронной сети для всех носителей кодирования продукта. Модели, созданные таким образом, слишком велики для распространения в мобильных приложениях, и их выполнение занимает больше времени, чем необходимо. мы вQuantiphi, Inc.партнеров Applied AI начали перебирать разные архитектуры моделей и остановились на той, в которой использовались несколько сверточных нейронных сетей.
Эта новая архитектура значительно уменьшает размер модели без ущерба для точности, но она по-прежнему не соответствует нашей потребности в поддержке беспроводных обновлений для мобильных приложений. Затем мы использовали встроенный модуль квантования TensorFlow, который уменьшает размер модели за счет уменьшения точности весов между связанными нейронами. Модуль квантования уменьшил размер модели в 4 раза, но когда Quantiphi прорвалась вперед с новым подходом под названием SqueezeNet, размер модели значительно уменьшился.
Модель SqueezeNet была выпущена в ноябре 2016 года группой исследователей из Калифорнийского университета в Беркли и Стэнфордского университета. Он имеет небольшую, но очень сложную конструкцию, согласно В популярных тестах, таких как Imagenet, он может достигать уровней точности, сравнимых с гораздо более крупными моделями. После перепроектирования архитектуры нашей модели распознавания символов для использования сверточной нейронной сети SqueezeNet компания Quantiphi уменьшила размер модели для определенных типов мультимедиа в 100 раз. Поскольку модель SqueezeNet по своей природе мала, можно построить более богатую архитектуру обнаружения функций, достигнув значительно более высокой точности при значительно меньшем размере, чем наша первая партия моделей, которые не были обучены с помощью SqueezeNet. Теперь у нас есть высокоточная модель, которую можно легко обновить на удаленном устройстве; наша окончательная модель до активного обучения имела показатель успеха распознавания, близкий к 96%, что приводит к точности распознавания символов 99,7% (всего 3 ошибки на 1000 предсказаний символов).
Пример эффективного распознавания кода продукта с различными типами проблем с окклюзией, панорамированием и фокусировкой камеры
Пересекая границы с помощью ИИ
Развитие искусственного интеллекта и зрелость TensorFlow позволяют нам, наконец, получить желанную возможность подтверждения покупки. С момента запуска в конце февраля 2017 года наша платформа идентификации кодов продуктов провела более десятка рекламных акций и сгенерировала более 180 000 скан-кодов; теперь она является основным компонентом всех онлайн-рекламных акций Coca-Cola в Северной Америке.
Переход на платформу распознавания кода продукта на основе ИИ был для нас очень ценным по двум основным причинам:
- Своевременное внедрение беспроблемного подтверждения покупки в соответствии с нашим общим переходом на маркетинговую платформу, ориентированную на мобильные устройства.
- Coca-Cola сэкономила миллионы долларов, избежав необходимости обновлять печатные машины на производственной линии для поддержки шрифтов с более высокой точностью, которые подходят к существующему готовому программному обеспечению OCR.
Наша платформа распознавания кодов продуктов — это первая крупномасштабная реализация новой возможности на базе искусственного интеллекта в компании Coca-Cola. В настоящее время мы изучаем применение ИИ в различных сферах бизнеса, от разработки продуктов до оптимизации розничной торговли в электронной коммерции.