使用「對象檢測」實現智能結賬體驗
簡評:用數據可以做到許多酷酷的事情 ~
Tensorflow Object Detection API 的功能很強大,你可以在一些實際應用場景下測試它的性能。
第一個用例可以是更聰明的貨架,畢竟 Amazon Go 商店推出之後,這就成了一個熱門的領域。商店設計中可以採用智能貨架,用於跟蹤顧客會選擇什麼商品。這個實現可以通過構建兩個對象檢測模型來完成:
- 一個跟蹤人手並捕獲人手所挑選的內容
- 第二個獨立的模型用來檢測貨架空間
通過使用兩個模型可以最大限度地減少單一方法帶來的誤差:
挑選完商品後當然是結賬了,這就是計算機視覺的另一個應用了 —— 不用在收銀台逐一掃描物品,而是相機直接就能夠檢測和記錄所有的商品,甚至我們都不需要一個專門的結賬通道了。
想像一下這樣的場景:配備了相機的購物車直接在你挑選商品的時候就記錄,並在你走出商店時立刻為你開出賬單,是不是有點酷!更酷的是,我們能夠實現它:
用這個 API 可以設計出一個帶有 3 個隨機項目的 demo,它能夠很輕易地檢測到放置進購物車的商品和數量:
那麼該如何建立呢?
1. 收集數據
可以使用公開的數據集或者自己收集圖像創建數據集,兩種方法各有利弊,因此最好兩種方法根據場景混合使用。比如,可以使用公開的 Ego Hand 構建手部檢測數據集,這個數據集在手型、膚色、姿態上都有很多變化,在現實世界中應用得很好。另一方面,對於貨架上的商品最好是自己收集數據。
在構建模型之前,可以通過 PIL 或 OpenCV 這樣的圖像處理庫來創建額外的圖像,這些圖像在亮度、縮放和旋轉等方面都有隨機變化,這個過程可以創建大量的附加示例讓模型更健壯。
2. 建立模型
關於如何在自定義數據集上訓練 Tensorflow 對象檢測 API 可以參考:Building a Toy Detector with Tensorflow Object Detection API 和 Github。
建立模型之前你得決定使用哪種對象檢測模型作為檢查點,最新模型清單如下:
對於實時手部檢測,我傾向於選擇速度快的模型。而對於貨架和購物車的物品檢測,就算慢一點我也會選擇精度更高的模型。
3. 測試和改進
完成模型 1.0 版本的建立後,真正的工作才剛剛開始。沒有一個模型是完美的,因此當你開始使用時就會發現性能差距了,這個時候你就需要判斷是否是在原有模型上改進或者更換模型。如果幸運的話,你只需要添加數據集就可以提高性能了,不過這個問題可以另開一版了。
關於對象檢測的知識還可以查看這篇文章:Is Google Tensorflow Object Detection API the easiest way to implement image recognition?
Reference:Google Tensorflow Object Detection Github
原文鏈接:
- Using Object detection for a Smarter Retail Checkout Experience
推薦閱讀:
- 機器學習領域值得關注的 10 位 Quora 大咖
- 手把手教你實現一個低配版象棋 AlphaGo
- 數據科學中應該學習哪些語言?
極光日報,極光開發者 的 Side Project,歡迎關注。
推薦閱讀:
※最簡單的 GAN 解釋 (生成對抗網路)
※【翻譯 - CS229】對於機器學習應用的建議
※CS 294: Deep Reinforcement Learning(11)
※Python · 樸素貝葉斯(二)· MultinomialNB
TAG:机器学习 | TensorFlow | 人工智能 |