使用「對象檢測」實現智能結賬體驗

簡評:用數據可以做到許多酷酷的事情 ~

Tensorflow Object Detection API 的功能很強大,你可以在一些實際應用場景下測試它的性能。

第一個用例可以是更聰明的貨架,畢竟 Amazon Go 商店推出之後,這就成了一個熱門的領域。商店設計中可以採用智能貨架,用於跟蹤顧客會選擇什麼商品。這個實現可以通過構建兩個對象檢測模型來完成:

  • 一個跟蹤人手並捕獲人手所挑選的內容
  • 第二個獨立的模型用來檢測貨架空間

通過使用兩個模型可以最大限度地減少單一方法帶來的誤差:

Hand Tracking and Inventory Monitoring

挑選完商品後當然是結賬了,這就是計算機視覺的另一個應用了 —— 不用在收銀台逐一掃描物品,而是相機直接就能夠檢測和記錄所有的商品,甚至我們都不需要一個專門的結賬通道了。

想像一下這樣的場景:配備了相機的購物車直接在你挑選商品的時候就記錄,並在你走出商店時立刻為你開出賬單,是不是有點酷!更酷的是,我們能夠實現它:

用這個 API 可以設計出一個帶有 3 個隨機項目的 demo,它能夠很輕易地檢測到放置進購物車的商品和數量:

項目檢測的精度還不錯

那麼該如何建立呢?

1. 收集數據

可以使用公開的數據集或者自己收集圖像創建數據集,兩種方法各有利弊,因此最好兩種方法根據場景混合使用。比如,可以使用公開的 Ego Hand 構建手部檢測數據集,這個數據集在手型、膚色、姿態上都有很多變化,在現實世界中應用得很好。另一方面,對於貨架上的商品最好是自己收集數據。

在構建模型之前,可以通過 PIL 或 OpenCV 這樣的圖像處理庫來創建額外的圖像,這些圖像在亮度、縮放和旋轉等方面都有隨機變化,這個過程可以創建大量的附加示例讓模型更健壯。

2. 建立模型

關於如何在自定義數據集上訓練 Tensorflow 對象檢測 API 可以參考:Building a Toy Detector with Tensorflow Object Detection API 和 Github。

建立模型之前你得決定使用哪種對象檢測模型作為檢查點,最新模型清單如下:

Tensorflow COCO Trained Models

對於實時手部檢測,我傾向於選擇速度快的模型。而對於貨架和購物車的物品檢測,就算慢一點我也會選擇精度更高的模型。

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 | 人工智能 |