【我們為什麼挑選這篇文章】你是否曾經好奇過無人商店究竟要如何做到精確計算顧客的消費項目呢?這篇文章整理出無人商店影像辨識的兩大重點系統,還附上 GitHub 連結,手把手教你如何打造自己的無人商店系統!(責任編輯:劉庭瑋)
2016 年年末,Amazon 無人超市橫空出世。在這家無人超市,店內的相機能夠自動追蹤你拿取的商品;完成購物後,你無需排隊等候收銀,只用直接走出超市。
自此之後,阿里和京東也已相繼加入戰局,先後推出無人超市體驗店。一時間,無人超市的概念已實現了大規模普及。
無人超市的「黑科技」到底是什麼呢?今天,我們就為大家科普其中最重要的一環——基於計算機視覺技術的物體識別。
首先,讓我們分析一下實現無人超市的兩大難點。
難點一:把商品加入購物車
超市裡的智能貨架需要能夠追蹤到客戶拿走了什麼商品。我們可以用兩個物品識別模型來實現這個功能,一個用來追蹤手部動作以獲取被拿起的物品。另一個獨立模型則用於檢測貨架的空間。請看下面的動畫,同時使用兩個模型可以大大降低誤判。
難點二:自動結帳
無人超市的需要解決的另一難點是,實現攝像頭對物品的一次性識別,這樣我們就不需要在結帳的時候一件一件物品地掃描過機了。
直接透過購物車裡的攝像頭檢測所買的物品,在你走出超市的那一刻就自動結帳。這個太酷了哦!
為此,我們需要建立另一個識別模型,用以檢測識別物品的種類以及數量。請看下面的動畫(即使物品只有部分可見仍能被準確識別出來)。
好了,現在就讓我們來具體實現這家無人超市吧。
1、收集數據
我們可以通過下載網上的公開數據集或者自己創建數據集兩種方式來收集圖片。這兩種方法各有利弊。我一般是兩種綜合使用,比如手部的探測可以使用如 Ego Hand 數據集(印第安納大學製作的第一人稱視角的手勢數據)這樣的公開數據集。
這個數據集包含大量手的形狀、膚色和動作的變化數據,在實際應用中非常有用。
另一個方面,對於在貨架或者購物車裡的物品,最好收集自己的數據,因為我們要確保圖像數據是來自各個角度的。
在建模之前,建議對數據進行強化,比如使用圖像處理庫如 PIL(Python Imaging Library)、OpenCV(跨平台計算機視覺庫)對圖片數據進行處理,以產生不同亮度、大小、旋轉方向等的額外圖片。這樣處理能夠生成大量新的樣本讓模型更加穩健。
對於物品檢測模型,我們需要對目標物品加上帶註釋的方框。
我們可以使用 Python 開發的 labelimg(圖片標註工具)來實現並且用 Qt(Qt Company 開發的跨平台 C++圖形用戶界面應用程序開發框架)開發界面。
這是一個非常好用的工具,使用 PascalVOC 格式(圖像識別和物品分類)創建註釋可以很容易用 Tensorflow Github 裡分享的程式碼生成 TFRecord 文件(Tensorflow 圖像數據格式)。
2、建模
在建模的時候你需要做的一個重大決定就是選擇物品檢測模型。在 COCO 數據集上訓練過的最新模型如下:
識別速度和準確率之間總是效益相悖難兩全的。個人認為對於即時的手部檢測,最好使用 SSD 模型(Single Shot Detector 單次激發檢測)或者更快的 RCNN(區域卷積神經網絡)。
而對於貨架或者購物車裡的物品我更願意使用識別慢一點但準確度更高的模型如 Faster RCNN Resnet(快速區域卷積神經網絡殘差網絡)或者 Faster RCNN Inception Resnet(快速區域卷積神經網絡初始殘差網絡)。
3、測試和優化模型
在構建完第一個版本的無人超市後,你就要進入漫長的改進階段了。沒有模型是完美的,隨著你的測試,你自會發現它的不如意之處。接著你就要用你的直覺來判斷,這些不足是否能被消除,以使模型更精準:或許你應該使用另一個模型,又或許,根本沒有模型能得到你期望的準確度。如果幸運的話,你只需要增加訓練數據的樣本量來提升模型的性能。
讀完這篇文章,是不是覺得無人超市也沒有想像中的那麼神奇了呢?當然了,無人超市背後的技術遠不止計算機視覺,無人超市的真正落地也依舊存在了各類技術難點——亞馬遜的無人超市至今仍處於員工內測階段;阿里和京東的無人超市雖然率先向公眾開放,但顧客體驗卻也不敢恭維。如果你等不及無人超市的大規模落地,那就從這篇教程出發,自己先開上一家簡易版的無人超市吧!
Github 連結:https://github.com/priya-dwivedi/Deep-Learning/tree/master/tensorflow_toy_detector
(本文經合作夥伴 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈還沒體驗過無人超市?手把手教你用計算機識別技術自己開一家!〉。)
更多機器學習教學好文:
2017 年度盤點:在 Github 上最熱門的 15 個機器學習項目總整理
盤點人工智能從業者必備學習資源:改變全球機器學習走向的 5 篇論文!
想學機器學習應該準備具備哪些數學知識?
不會寫程式也能做「機器學習」專案:Google 新開源項目,讓你用瀏覽器就能成為 AI 工程師!
【史上最強 AI 工程師養成日記】只用 4 個月打造機器學習必備技能,這位工程師成功翻轉職涯人生
如果你平常關注人工智慧、fintech、區塊鏈、創新創業、數位行銷、技術開源、資安、物聯網、經營管理、科技小物等,加入《TO》跟我們一起關注社會、產業創新!
TechOrange 社群編輯、實習生持續徵才中
意者請提供履歷自傳以及文字作品,寄至 jobs@fusionmedium.com
來信主旨:【應徵】TechOrange _填上應徵職稱_:您的大名