한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
TensorFlow를 사용한 기계 학습을 통해 모바일 구매 증명을 구현한 코카콜라의 사례를 확인해 보세요.
2017년 10월 25일 수요일
<블로그 원문은
여기
에서 확인하실 수 있으며, 블로그 번역 리뷰는
곽동현(Machine Learning GDE)
님이 참여해 주셨습니다.>
객원 저자가 집필하는 본 논설에서, 코카콜라의 Patrick Brandt 씨는 AI와 TensorFlow를 사용하여 원활한 구매 증명을 실현하는 방법을 들려줍니다.
코카콜라의 핵심 고객 충성도 프로그램은 2006년에 MyCokeRewards.com으로 출범했습니다. 'MCR.com' 플랫폼에는 식료품점과 기타 소매점에서 20온즈짜리 병과 판지 소재의 '냉장고 팩' 형태로 판매되는 모든 코카콜라, 스프라이트, 환타, 파워에이드 제품에 대한 고유한 제품 코드 생성 기능이 포함되었습니다. 사용자는 이러한 제품 코드를 MyCokeRewards.com에 입력하여 홍보 캠페인에 참여할 수 있었습니다.
잠시 2016년으로 돌아가볼까요? 코카콜라 고객 충성도 프로그램은 전과 동일하게 여전히 많은 인기를 끌었습니다. 홍보 행사와 경품 추첨 행사에 참여하기 위해 수백만 개의 제품 코드가 입력되었습니다. 하지만 2006년에만 해도 아예 존재하지도 않았던 모바일 탐색이 2016년 말에는 50% 이상의 비중을 차지했습니다. (MCR.com을 대체하여)
Coke.com
을 모바일 퍼스트 웹 환경으로 출범한 것은 이러한 탐색 행동 변화에 대응하는 차원의 조치였습니다. 14자 길이의 코드를 휴대기기에 엄지손가락으로 입력하는 사용자 환경은 프로그램의 성공에 영향을 미칠 정도로 사용자에게는 어렵게 느껴질 수 있었습니다. 우리는 모바일 잠재고객에게 가능한 한 최상의 환경을 제공하고 싶은데, 최근 인공 지능 분야가 진보함에 따라 새로운 기회가 열렸습니다.
원활한 구매 증명 추구
코카콜라는 수년간 기성 OCR(광학 문자 인식) 라이브러리와 서비스를 사용하여 제품 코드 판독을 시도했으며 그 성공률은 무척 낮았습니다. 코카콜라의 인쇄 공정에서는 보통 프린트헤드 아래에서 매우 빠른 속도로 움직이는 뚜껑이나 냉장고 팩 포장지에 낮은 해상도의 도트 매트릭스 글꼴을 사용합니다. 이러한 글꼴은 모두 정확도가 낮은 문자열로 인쇄되고, 따라서 기성 OCR 기술이 제대로 인식하기 어렵습니다. 심지어 육안으로 읽기 어려울 수도 있습니다. OCR은 모바일 사용자의 코드 입력 과정 간소화에 결정적인 역할을 합니다. OCR은 코드 사진을 찍어서 홍보 캠페인 참여를 위해 자동으로 구매 등록되도록 할 수 있어야 합니다. 우리에게는 제품 코드 인식 전용 OCR 시스템이 필요했습니다.
병뚜껑 및 냉장고 팩의 예
연구를 진행한 결과 아주 성공적인 솔루션인 CNN(Convolutional Neural Network)을 구축할 수 있었습니다. CNN은 첨단 인공 지능 제품의 핵심이 되는 '딥 러닝' 신경망 기술군 중 하나입니다. Google은 CNN을 활용하여 스트리트 뷰 이미지에서 상세 주소를 추출해왔습니다. CNN은 손으로 쓴 숫자를 인식하는 데도 뛰어난 성능을 발휘합니다. 이러한 번호 인식 활용 사례는 문자 모양이 다양한 작은 문자 집합을 포함하는 이미지에서 문자열을 추출하는 등 우리가 해결하려고 했던 문제 유형에 완벽한 대안이었습니다.
TensorFlow를 활용하는 CNN
과거에는 사용 가능한 훈련 및 추론 라이브러리가 복잡해서 CNN과 같은 딥 러닝 신경망을 개발하기 어려웠습니다. Google이 2015년 11월에 오픈소스로 공개한 기계 학습 프레임워크인
TensorFlow
는 딥 러닝 신경망 개발을 간소화하도록 설계되었습니다.
TensorFlow는 인기 있는 손실 함수와 다양한 종류의 뉴런층에 대한 상위 수준 인터페이스를 제공하여 다양한 CNN 모델 아키텍처를 더 쉽게 구현할 수 있게 해줍니다. 다른 여러 모델 아키텍처를 빠르게 반복할 수 있었기에 코카콜라에서 사용자설정 OCR 솔루션을 빌드하는 데 필요한 시간이 상당히 단축되었습니다. 여러 다른 모델을 며칠 만에 개발, 훈련 및 테스트할 수 있었기 때문입니다. TensorFlow 모델은 이식할 수도 있습니다. 이 프레임워크는 로컬 휴대기기('최첨단 AI') 또는 클라우드에서 원격으로 호스팅되는 서버에서 기본적으로 모델 실행을 지원합니다. 이를 통해 웹 기반 플랫폼과 모바일 플랫폼을 비롯한 여러 가지 다양한 플랫폼 간에 '일단 만든 후에 어디서든 실행'하는 접근법으로 모델을 실행할 수 있습니다.
기계 학습: 훈련을 통해 완벽에 근접
어떤 신경망이든 훈련에 사용되는 데이터의 질에 따라 그 품질이 결정됩니다. 우리는 성능 목표를 실현할 수 있도록 CNN을 훈련시키는 데 대규모의 레이블이 지정된 제품 코드 이미지 세트가 필요하다는 점을 알고 있었습니다. 훈련 세트는 다음과 같은 세 단계로 빌드됩니다.
출시 전 시뮬레이션된 이미지
출시 전 실제 이미지
프로덕션 단계에서 사용자가 레이블을 지정한 이미지
출시 전 훈련 단계는 수백만 개의 시뮬레이션된 제품 코드 이미지를 프로그래밍 방식으로 생성함으로써 시작됩니다. 이러한 시뮬레이션된 이미지에는 기울기, 조명, 그림자, 흐림이 제각기 다른 변형이 포함되어 있었습니다. 예측 정확도(즉, 상위 10회 예측에서 14자가 모두 정확히 예측된 빈도)는 모델이 시뮬레이션된 이미지만 사용하여 훈련된 경우 실제 이미지의 50% 수준이었습니다. 이는 전이 학습의 기준선(baseline)을 제공했습니다. 즉, 시뮬레이션된 이미지로 초기에 훈련된 모델이 실제 이미지를 기준으로 훈련되는 더욱 정확한 모델의 기반이 되었습니다.
이제 해결해야 할 과제는 충분한 수의 실제 이미지를 가지고 시뮬레이션된 이미지를 강화하여 우리의 성능 목표를 충족시키는 것으로 바뀌었습니다. 우리는 '훈련자'가 코드 사진을 찍고 이들 사진 이미지에 레이블을 지정하는 데 사용할 수 있는 iOS 및 Android 기기 전용 훈련 앱을 만들었습니다. 이렇게 레이블이 지정된 이미지는 훈련에 사용하도록 클라우드 저장소로 전송되었습니다. 우리는 병뚜껑과 냉장고 팩에 수천 개의 제품 코드를 찍는 프로덕션 실행 단계를 수행했으며 이렇게 만든 제품을 여러 공급업체에 배포했습니다. 그러면 공급업체에서 앱을 사용하여 초기 실제 훈련 세트를 생성했습니다.
보강되고 강화된 훈련 세트를 만들기는 했지만 다양한 환경 조건에서 최종 사용자가 만든 이미지를 대체할 만한 것은 없습니다. 우리는 스캔이 경우에 따라 부정확한 코드 예측 결과를 초래한다는 점을 알고 있었으므로 사용자가 이렇게 잘못된 예측을 빠르게 수정할 수 있는 사용자 환경을 제공해야 했습니다. 이러한 환경을 제공하기 위해서는 두 가지 구성 요소가 필요했습니다. 하나는 제품 코드 유효성 검사 서비스로서 2006년 최초의 고객 충성도 플랫폼을 출범한 이후로 지금까지 예측된 코드가 실제 코드인지 확인할 목적으로 계속해서 사용되고 있으며, 다른 하나는 예측 알고리즘으로서 회귀 테스트를 수행하여 14자 각각의 위치에서 문자당 신뢰도를 확인합니다. 예측된 코드가 유효하지 않은 경우 각 문자에 대해 가장 높은 수준의 예측과 신뢰도가 사용자 인터페이스로 반환됩니다. 신뢰도가 낮은 문자는 시각적으로 강조표시되어 주의가 필요한 문자를 사용자가 업데이트하도록 안내합니다.
사용자는 오류 수정 사용자 인터페이스를 통해 유효하지 않은 예측을 수정하고 유용한 훈련 데이터를 생성할 수 있습니다.
이러한 사용자 인터페이스 혁신을 통해 능동 학습 프로세스가 가능해집니다. 즉, 피드백 루프를 통해 모델이 수정된 예측을 훈련 파이프라인에 반환함으로써 점진적으로 개선해나갈 수 있습니다. 이러한 방식으로, 사용자는 시간이 지남에 따라 문자 인식 모델의 정확도를 유기적으로 향상시키게 됩니다.
제품 코드 인식 파이프라인
최적화를 통해 최대 성능 구현
성능과 관련하여 사용자의 기대 수준을 충족하기 위해 제품 코드 OCR 파이프라인에 대한 몇 가지 야심 찬 요구 조건을 수립했습니다.
빠른 속도: 제품 코드 이미지가 OCR 파이프라인에 전송된 후의 평균 처리 시간 1초를 달성해야 했습니다.
정확성: 모델이 능동 학습을 통해 시간이 지남에 따라 향상될 수 있도록 보장하면서 출시 시점에 95%의 문자열 인식 정확도 달성을 목표로 했습니다.
작은 크기: OCR 파이프라인은 모바일 앱에 직접 배포되고 모델이 시간의 경과에 따라 향상되므로 OTA 업데이트를 수용할 수 있을 정도로 작아야 합니다.
다양한 제품 코드 매체를 처리해야 합니다. 글꼴 유형, 병뚜껑, 판지 소재의 냉장고 팩 매체 등으로 구성된 수십여 가지 다양한 조합이 있습니다.
처음에는 모든 제품 코드 매체에 단일 CNN을 사용한 아키텍처를 연구했습니다. 이 접근법으로는 모바일 앱으로 배포하기에 너무 큰 모델이 만들어졌으며 실행 시간이 원하는 수준보다 너무 길었습니다. 우리의 응용 AI 파트너인
Quantiphi, Inc.
에서는 다양한 모델 아키텍처를 반복해 본 후 결국 여러 CNN을 사용하는 아키텍처를 선택했습니다.
이 새 아키텍처는 정확도를 저하시키지 않고도 모델 크기를 상당히 줄여 주었지만, 여전히 모바일 앱에 대한 OTA 업데이트를 지원하기 위해 필요한 수준보다는 꽤 높은 수준이었습니다. 우리는 그 다음으로 TensorFlow의 미리 빌드된 양자화 모듈을 사용하여 연결된 뉴런 간에 가중치의 충실도를 낮춤으로써 모델 크기를 줄였습니다. 양자화 모듈은 모델 크기를 1/4로 줄였지만, Quantiphi가 SqueezeNet이라고 하는 새로운 접근법을 사용하여 혁신을 이루었을 때 모델 크기가 급격히 감소했습니다.
SqueezeNet 모델은 UC 버클리와 스탠포드의 연구진으로 구성된 팀이 2016년 11월에 발표한 모델입니다. 이 모델은 작지만 고도로 복잡한 디자인을 사용하여 Imagenet과 같은 유명한 벤치마크를 기준으로 훨씬 더 큰 모델과 유사한 수준의 정확도를 충족시켜 줍니다. Quantiphi는 SqueezeNet CNN을 사용하도록 문자 인식 모델의 아키텍처를 재구성한 후 특정 매체 유형의 모델 크기를 1/100로 줄일 수 있었습니다. SqueezeNet 모델은 본질적으로 작으므로 기능이 더욱 풍부한 특징 감지 아키텍처를 구성하여 SqueezeNet 없이 훈련된 첫 번째 모델 배치에 비해 훨씬 더 작은 크기에서 더 높은 정확도를 달성할 수 있었습니다. 이제 우리는 원격 기기에서 쉽게 업데이트할 수 있는 매우 정확한 모델을 가지고 있습니다. 능동 학습 전 최종 모델의 인식 성공률은 96%에 가까웠고, 이를 문자 인식 정확도로 변환하면 99.7%에 달하는 수준입니다(즉, 1,000개 문자를 예측할 때 불과 3번의 누락만 발생).
다양한 유형의 가림, 변환, 카메라 초점 문제를 처리하는 유효한 제품 코드 인식의 예
AI를 통해 경계 뛰어넘기
인공 지능이 진보하고 TensorFlow가 성숙 단계에 들어감에 따라 우리는 결국 오랫동안 원했던 구매 증명 기능을 구현할 수 있게 되었습니다. 제품 코드 인식 플랫폼은 2017년 2월 후반에 출시된 이후 십여 가지 홍보 활동을 지원했으며 스캔된 코드 수가 180,000여 개에 달했습니다. 이제 이 플랫폼은 북미 지역에서 펼쳐지는 코카콜라의 모든 웹 기반 홍보 활동에서 핵심 구성 요소가 되었습니다.
AI 지원 제품 코드 인식 플랫폼으로 전환한 것은 다음 두 가지 주요 이유에 따라 가치가 있었습니다.
원활한 구매 증명이 시기적절하게 이루어졌습니다. 이는 전반적으로 모바일 퍼스트 마케팅 플랫폼으로 전환한 것과 같은 결과였습니다.
코카콜라는 기존의 기성 OCR 소프트웨어에서 작동하는 충실도가 높은 글꼴을 지원하도록 생산 라인의 프린터를 업데이트해야 한다는 요구 사항을 없앰으로써 수백만 달러의 비용을 절감하는 효과를 얻었습니다.
제품 코드 인식 플랫폼은 코카콜라 내부에서 대규모로 새로운 AI 지원 기능을 최초로 실행한 사례입니다. 이제 우리는 새로운 제품 개발에서 전자 상거래 소매 최적화에 이르기까지 여러 비즈니스 라인에 걸친 AI의 응용을 연구하고 있습니다.
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed