在這篇客座文章中,可口可樂公司的 Patrick Brandt 將向咱們介紹他們如何使用 AI 和 TensorFlow 實現無縫式購買憑證。算法
可口可樂的核心忠誠度計劃於 2006 年以 MyCokeRewards.com 形式啓動。「MCR.com」平臺包含爲每一瓶以 20 盎司規格銷售的可口可樂、雪碧、芬達和動樂產品,以及能夠在雜貨店和其餘零售商店購買的紙箱包裝產品建立惟一的產品編碼。用戶能夠在 MyCokeRewards.com 上輸入這些產品編碼來參加推廣活動。編程
幾年後的 2016 年:可口可樂的忠誠度計劃仍然大受歡迎,用戶已經輸入了數以百萬計的產品編碼來參加促銷和抽獎。不過,移動瀏覽在 2006 年還不存在,而到了 2016 年末已佔據超過 50% 的份額。爲了響應這些瀏覽行爲變化,Coke.com 做爲一項移動優先網絡體驗啓動,替代了原來的 MCR.com。將 14 字符編碼手動輸入到移動設備中着實是一種很是糟糕的用戶體驗,會影響咱們的計劃取得成功。咱們但願爲移動受衆提供儘量最好的體驗,人工智能的最新進展帶來了全新的機遇。服務器
實現無縫式購買憑證的任務
多年來,可口可樂一直嘗試使用現成的光學字符識別 (OCR) 庫和服務讀取產品編碼,但收效甚微。咱們的印刷工藝通常使用低分辨率點陣字體,瓶蓋或紙箱媒介在打印頭下面以很是快的速度運轉。這就產生了低保真字符串,讓現成的 OCR 軟件沒法讀取這些字符(有時人眼也很難閱讀)。OCR 對簡化移動用戶的編碼輸入過程相當重要:用戶應當可以爲編碼拍照,而後自動進行購買註冊來參加促銷。咱們須要一個用途特定的 OCR 系統來識別咱們的產品編碼。網絡
▲ 瓶蓋和紙箱示例架構
咱們的研究將咱們引向了一種前景無限的解決方案:卷積神經網絡。卷積神經網絡是一系列「深度學習」神經網絡中的一種,這些神經網絡是現代人工智能產品的核心。Google 已使用卷積神經網絡從街景圖像中提取出街道地址門牌號。卷積神經網絡在識別手寫數字方面的表現也至關不錯。這些數字識別用例完美表明了咱們一直嘗試解決的問題類型:從包含小字符集而且小字符集中所含字符的外觀千差萬別的圖像中提取字符串。框架
經過 TensorFlow 實現的卷積神經網絡
過去,因爲可用的訓練和推理庫極其複雜,開發像卷積神經網絡同樣的深度神經網絡一直都是一項巨大的挑戰。TensorFlow(Google 於 2015 年開放源代碼的一種機器學習框架)旨在簡化深度神經網絡的開發。機器學習
TensorFlow 爲不一樣種類的神經元層和熱門損失函數提供了高級接口,簡化了實現不一樣卷積神經網絡模型架構的工做。快速迭代不一樣模型架構的能力大大縮短了咱們公司構建自定義 OCR 解決方案所需的時間,由於咱們能夠在短短几天的時間內開發、訓練和測試不一樣的模型。TensorFlow 模型也很是便攜:框架以原生方式支持在移動設備上(「邊緣上的 AI」)或在遠程託管於雲端的服務器中執行模型。這就爲許多不一樣平臺(包括網絡和移動設備)之間的模型執行帶來了一種「一勞永逸」的方式。函數
機器學習:熟能生巧
任何神經網絡的智慧都不會超過用於訓練它的數據。咱們知道本身須要大量帶標籤的產品編碼圖像來訓練一個卷積神經網絡,從而幫助咱們實現性能目標。咱們的訓練集分三個階段構建:
啓動前模擬圖像
啓動前真實圖像
咱們的用戶在生產中標記的圖像性能
啓動前訓練階段的第一項工做是以編程方式生成數以百萬計的模擬產品編碼圖像。這些模擬圖像包括傾斜、光照、陰影和模糊強度變化。在模型僅使用模擬圖像進行訓練時,它對真實圖像的預測準確率(即,可信度最高的 10 個預測中準確預測所有 14 個字符的頻率)爲 50%。這爲遷移學習提供了一個基線:最初使用模擬圖像訓練的模型是將要使用真實圖像訓練的更準確模型的基礎。學習
挑戰如今就成了使用充足的真實圖像豐富模擬圖像以實現咱們的性能目標。咱們爲 iOS 和 Android 設備構建了一款用途特定的訓練應用,「訓練人員」可使用這款應用爲編碼拍照並添加標籤;這些帶標籤的圖像隨後遷移到雲存儲中進行訓練。咱們對瓶蓋和紙箱上的數千個產品編碼進行了生產測試,並將代碼分配給多個供應商,他們使用這款應用建立初始的真實訓練集。
即便是一個通過加強和豐富的訓練集,也沒法替代最終用戶在各類環境條件下建立的圖像。咱們知道掃描可能致使編碼預測不許確,所以咱們須要提供一種能讓用戶迅速糾正這些預測的用戶體驗。兩個組件對提供這種體驗相當重要:產品編碼驗證服務,它從咱們最初的忠誠度平臺於 2006 年啓動以來就一直在使用(用於驗證預測的編碼是不是真實編碼);預測算法,用於執行迴歸來肯定 14 個字符位置上每一個字符的可信度。若是預測的編碼無效,置信度最高的預測和每一個字符的可信度水平將返回到界面。低置信度字符將突出顯示,指導用戶更新須要注意的字符。
▲ 錯誤糾正界面讓用戶能夠糾正無效預測並生成有用的訓練數據
這個界面創新實現了一個主動學習過程:反饋循環讓模型能夠將糾正的預測返回訓練管道,逐步改進。咱們的用戶能夠經過這種方式隨着時間有組織地提升字符識別模型的準確率。
▲ 產品編碼識別管道
針對實現最大性能進行優化
爲了知足用戶對性能的指望,咱們爲產品編碼 OCR 管道創建了一些嚴格的要求:
快速:咱們在產品編碼圖像發送到 OCR 管道後須要平均一秒的處理時間
準確:咱們啓動時的目標是實現 95% 的字符串識別準確率,並保證模型能夠經過主動學習隨着時間不斷改進
小型:OCR 管道須要足夠小,以便直接分發到移動應用上,並在模型隨着時間不斷改進時可以適應無線更新
OCR 管道須要處理不一樣的產品編碼介質:數十種不一樣的字體類型、瓶蓋與紙箱包裝介質組合
最初,咱們探索了一種爲全部產品編碼介質使用一個卷積神經網絡的架構。這種方式建立的模型過大,沒法分發至移動應用,而且執行時間也比所需的時間長。咱們在 Quantiphi, Inc. 的應用 AI 合做夥伴開始迭代不一樣的模型架構,並最終肯定了一種使用多個卷積神經網絡的架構。
這種新架構在不犧牲準確率的前提下顯著減少了模型大小,不過仍然沒法知足咱們爲移動應用提供無線更新支持的須要。咱們隨後使用了 TensorFlow 的預構建量化模塊,它能夠經過減少相連神經元之間的權重保真度來減少模型大小。量化模塊將模型大小減少了 4 係數,可是當 Quantiphi 使用一種名稱爲 SqueezeNet 的新方式取得突破後,模型大小顯著減少。
SqueezeNet 模型由加州大學伯克利分校和斯坦福大學的一組研究人員於 2016 年 11 月發佈。它採用小型但高度複雜的設計,根據 Imagenet 等熱門基準的數據,它能夠實現與大得多的模型至關的準確率水平。在從新設計咱們的字符識別模型架構以使用 SqueezeNet 卷積神經網絡後,Quantiphi 將特定介質類型的模型大小減少了 100 係數。因爲 SqueezeNet 模型本質上就比較小,能夠構建更豐富的功能檢測架構,憑藉比咱們第一批並不是使用 SqueezeNet 訓練的模型顯著減少的大小實現明顯提升的準確率。咱們如今擁有一個能夠在遠程設備上輕鬆更新的高度準確模型;咱們在主動學習以前的最終模型的識別成功率接近 96%,能夠帶來 99.7% 的字符識別準確率(每 1000 個字符預測中僅有 3 個出錯)。
▲ 具備不一樣類型遮擋、平移和照相機焦點問題的有效產品編碼識別示例
經過 AI 跨越邊界
人工智能的發展和 TensorFlow 的成熟讓咱們最終能夠實現求之不得的購買憑證能力。自從 2017 年 2 月底啓動以來,咱們的產品編碼識別平臺已經爲十多個促銷活動提供幫助並生成了超過 18 萬個掃描代碼;它如今已成爲可口可樂北美地區全部網絡促銷活動的核心組件。
遷移到由 AI 提供支撐的產品編碼識別平臺對咱們很是有價值,兩個主要緣由包括:
及時實現無縫式購買憑證,與咱們向移動優先營銷平臺的總體轉變保持一致。
可口可樂避免了更新生產線中的印刷機以支持更高保真度字體(適合現有的現成 OCR 軟件)的要求,節省了數百萬美圓的資金。
咱們的產品編碼識別平臺是以 AI 爲支撐的新能力在可口可樂公司內的首次大規模執行。咱們目前正在多個業務領域探索 AI 應用,從產品開發到電子商務零售優化,不一而足。
原文連接:https://mp.weixin.qq.com/s/qEnVTpu50L0c7wp8VvJWOA
更多機器學習教程:http://www.tensorflownews.com/