Translate

2017年10月12日木曜日

コカコーラのTensorFlow活用紹介ブログ記事を翻訳してみた


これもタイムラインに流れてきたのだけど、
コカコーラ社でTensorflowを活用した事例が書かれた記事のリンク

How Machine Learning with TensorFlow Enabled Mobile Proof-Of-Purchase at Coca-Cola
https://developers.googleblog.com/2017/09/how-machine-learning-with-tensorflow.html



が私のところにながれついた。


ので翻訳してみた。
..というか、最近はほぼGoogle翻訳のままでイケてるので、ブラウザで翻訳させたほうが良いかもしれないけど..

以下の日本語訳を読む方は at your own risk でお願いします。

----------

いかにして Coca-Cola社が購入証跡を TensorFlow エンベデッドモバイルを使って機械学習させたか

木曜日、9月21日、2017



コカ・コーラ社のパトリック・ブランデ氏は、AIとTensorFlowを使って、摩擦のない購入証明をどのように利用しているのかを説明しています。
2006年にMyCokeRewards.comとして開始されたコカ・コーラのコアロイヤルティプログラム。「MCR.com」プラットフォームには、20オンスボトルで販売されるコカコーラ、スプライト、ファンタ、パワー・ド・プロダクト、および食料品店やその他の小売店で購入可能な段ボール「冷蔵庫パック」用のユニークな製品コードの作成が含まれていました。ユーザーは、MyCokeRewards.comでこれらの製品コードを入力して、プロモーションキャンペーンに参加することができます。



2016年の振り返り:コークスのロイヤルティプログラムは、プロモーションや懸賞のために数百万の製品コードが登録され、依然として非常に人気があります。しかし、モバイルブラウジングは、2006年に存在しなかったものから2016年末までに50%以上のシェアになりました。 (「MCR.com」の代わりに)「 Coke.com 」を立ち上げたのは、ブラウジング行動の変化に対する応答でした。モバイルデバイスに14文字のコードを大文字で入力すると、プログラムの成功に影響を及ぼすのに十分なユーザーエクスペリエンスが得られません。私たちはモバイルユーザーに最高の体験を提供したいと考えています。最近の人工知能の進歩は新しい機会をもたらしました。

摩擦のない証拠の探求



何年もの間、Coke は既製の光学式文字認識(OCR)ライブラリとサービスを使用しても、製品コードをほとんど読み取れませんでした。当社の印刷プロセスでは、通常、低解像度のドットマトリックスフォントを使用し、プリントヘッドの下で実行されるキャップまたは冷蔵庫の媒体を非常に高速で使用します。これはすべて、既製のOCR製品を凌駕する忠実度の低い文字列に変換されます(人間の目でも読みにくいことがあります)。OCRは、モバイルユーザーのコード入力プロセスを単純化する上で非常に重要です。コードの写真を撮って、自動的にプロモーションエントリ用に購入を登録する必要があります。私たちは、製品コードを認識するための専用のOCRシステムが必要でした。


ボトルキャップと冷蔵庫パッケージの例

私たちの研究により、有望なソリューション、Convolutional Neural Networksが実現しました。CNNは、近代的な人工知能製品の中心にある「ディープラーニング」ニューラルネットワークのファミリーの1つです。GoogleはCNNを使用してStreetView画像から住所番を抽出しています。CNNは、手書き数字の認識においても非常によく機能します。これらの数字認識ユースケースは、私たちが解決しようとしていた問題のタイプの完璧な代替となります。小さな文字セットを含むイメージから文字列を抽出し、文字の外観に大きなばらつきがあります。


TensorFlowのCNN


過去には、利用可能な訓練および推論ライブラリの複雑さのために、CNNのようなディープニューラルネットワークの開発が課題でした。2015年11月にGoogleがオープンソースとした機械学習フレームワークであるTensorFlowは、深いニューラルネットワークの開発を簡素化するように設計されています。

TensorFlowは、さまざまな種類のニューロン層と一般的な損失関数に高レベルのインターフェイスを提供します。これにより、異なるCNNモデルアーキテクチャを実装するのが容易になります。さまざまなモデルアーキテクチャを素早く反復する能力は、CokeカスタムOCRソリューションを構築するために必要な時間を劇的に短縮しました。数日間で異なるモデルを開発し、訓練し、テストすることができるからです。TensorFlowモデルも移植可能です。フレームワークは、モバイルデバイス(「エッジ上のAI」)またはクラウド内でリモートでホストされているサーバー上でモデルの実行をネイティブにサポートします。これにより、Webベースやモバイルなど、さまざまなプラットフォーム間でモデルを実行できる「一度作成、どこでも実行(create once, run anywhere)」アプローチが可能になります。


機械学習:訓練が完璧を作る(practice makes perfect)


どのニューラルネットワークも、それを訓練するために使用されたデータと同じくらい重要です。私たちは、パフォーマンス目標を達成するCNNを育成するために、大量の製品コードイメージを必要としていることを知っていました。私たちのトレーニングセットは3つのフェーズで構築されます:

  1. 事前起動シミュレーション画像
  2. 実際の画像をプレランチ
  3. でユーザによってラベル付けされた製品の画像

launch前のトレーニング段階は、プログラムされた数百万のシミュレートされた製品コード画像を生成することから始まりました。これらのシミュレートされた画像には、傾斜、照明、陰影、およびぼやけの変化が含まれていました。シミュレーションの画像のみを使用してモデルを訓練した場合、予測精度(すなわち、上位10の予測内で14文字すべてが正確に予測された頻度)は、実世界の画像に対して50%でした。これは転送学習のベースラインを提供しました。シミュレーションされた画像で最初に訓練されたモデルは、実際の画像に対して訓練されるより正確なモデルの基礎でした。

現在の課題は、実績のある目標を達成するのに十分な現実世界の画像でシミュレートされた画像を豊かにすることに変わっています。私たちは iOS と Android デバイス用の専用のトレーニングアプリを作成し、「トレーナ」がコードの写真を撮りラベルを貼ることができるようにしました。これらのラベル付けされた画像は、訓練のためにクラウドストレージに転送されます。ボトルキャップと冷蔵庫パッケージで数千の製品コードを生産し、アプリを使って最初の実世界のトレーニングセットを作成した複数のサプライヤに配布しました。

強化された豊富なトレーニングセットがあっても、さまざまな環境条件でエンドユーザーによって作成されたイメージを代替することはできません。スキャンでコードの予測が不正確になることがあるため、ユーザーがこれらの予測を迅速に修正できるユーザーエクスペリエンスを提供する必要がありました。この経験を提供するためには、2006年にオリジナルのロイヤルティ・プラットフォーム(予測コードが実際のコードであることを検証するため)の開始以来使用されてきた製品コード検証サービスと、回帰を実行する予測アルゴリズムが14文字の位置のそれぞれで文字当たりの信頼度を決定します。予測されたコードが無効である場合、各文字の最上位予測および信頼レベルがユーザインターフェースに戻されます。


エラー訂正UIにより、ユーザは無効な予測を訂正し、有用な訓練データを生成できる


このユーザインターフェイスの革新により、積極的な学習プロセスが可能になりました。フィードバックループを使用すると、補正された予測をトレーニングパイプラインに戻すことでモデルを徐々に改善することができます。このようにして、ユーザは時間の経過とともに文字認識モデルの精度を有機的に改善することができるのです。



最大限のパフォーマンスを得るための最適化


パフォーマンスに関するユーザーの期待に応えるために、製品コードOCRパイプラインのいくつかの野心的な要件を確立しました。

  • より速く:製品コードイメージがOCRパイプラインに送られた後、平均処理時間が1秒とすることが必要。
  • より正確に:私たちの目標は、積極的な学習により、起動時に95%の文字列認識の精度を達成すること。
  • より小さく:OCRパイプラインは、モバイルアプリケーションに直接配布され、時間の経過とともにモデルが改善されると、無線アップデートを収容するのに十分小さい必要がある。
  • よりおおくの製品コードデバイスをハンドルできるように:フォント・タイプ、ボトル・キャップ、厚紙のフライディ・パック・メディアなど、数多くの異なる組み合わせの製品コード・メディアを扱う必要がある。

最初に、すべての製品コードメディアに単一のCNNを使用したアーキテクチャを検討しました。このアプローチでは、モバイルアプリに配布するには大きすぎるモデルが作成され、実行時間が必要以上に長くなっていました。  Quantiphi Inc. の我々の適用されたAIパートナは、 異なるモデルアーキテクチャで反復を開始し、最終的に複数のCNNを使用したものに到達しました。



この新しいアーキテクチャは、精度を犠牲にすることなくモデルサイズを劇的に縮小しましたが、モバイルアプリケーションへの無線アップデートをサポートするために必要なものの最高水準でした。次に、接続されたニューロン間の重みの忠実度を減らすことによってモデルのサイズを縮小するために、TensorFlowの事前構築された量子化モジュールを使用しました。量子化は、モデルサイズを4倍に縮小しましたが、Quantiphiが SqueezeNet という新しいアプローチを使用して画期的な進歩を遂げたときに、モデルサイズが大幅に縮小されました。

SqueezeNet モデルは、2016年の11月にUC Berkeleyとスタンフォードの研究者チームによって発表されました。このモデルは、 Imageet などの一般的なベンチマークに対して、より大きなモデルと同等の精度レベルを達成するために、小さく複雑です。 SqueezeNet CNN を使用するために文字認識モデルを再構築した後、 Quantiphi は特定のメディアタイプのモデルサイズを100倍に減らすことができました。 SqueezeNet モデルは本質的に小さく、豊富な特徴量検出アーキテクチャを構築できました。 SqueezeNet なしで訓練された最初のバッチモデルと比較して、はるかに小さなサイズではるかに高い精度を実現しました。現在、リモートデバイスで簡単に更新できる高精度なモデルが用意されています。能動的学習前の最終モデルの認識成功率は96%に近く、これは99.7%の文字認識精度(1000文字の予測ごとにわずか3回のミス)に相当します。


さまざまなタイプのオクルージョン(隠れ領域)、翻訳、およびカメラフォーカスの問題を伴う有効な製品コード認識の例


AIとの境界を越えて


人工知能の進歩と TensorFlow の成熟により、私たちは長期にわたって求められていた購入証明機能を最終的に達成することができました。2017年2月下旬より発売されて以来、当社の製品コード認識プラットフォームは、十数以上のプロモーションを促進し、18万件以上のスキャンコードをもたらしました。現在、コカ・コーラ北米のウェブベースのプロモーションのすべてのコアコンポーネントとなっています。

AI対応の製品コード認識プラットフォームへの移行は、2つの重要な理由から価値があります。

  • モバイルファーストマーケティングプラットフォームへの全般的な移行に対応して、摩擦のない購入証明がタイムリーに使用可能になりました。
  • Coke は、既存の既製のOCRソフトウェアで動作するより忠実なフォントをサポートするために、生産ラインのプリンタを更新する必要性を避けることによって、何百万ドルも節約できました。

当社の製品コード認識プラットフォームは、コカコーラ内でスケールアップされた新しいAI対応機能の最初の実行です。現在、新製品開発から電子商取引小売の最適化まで、複数の事業部門にわたってAIアプリケーションを検討しています。

----------

上記記事を読む際の、参考リンクとしては、以下のあたり。


TensorFlowサイトを探っていた頃は "量子化" のあたりなんで突然現実的な話がでてきたんだろうか、と不思議に思っていたがおそらく米国でコカ・コーラ社との事案が実際に動いていたのだと思う。技術的にではなく、論理的に繋がった。


で、なんでこの記事を紹介したのかというと...

前の記事で紹介したkeras.js のサンプルにたしか SqueezeNet のやつあったよなあ..
じゃあそれをつなげれば、TensorFlow Mobileを使わないでAndroidのWebPanelだけで
似たようなアプリできるんじゃないのかなあ..と。


0 件のコメント:

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...