閱讀680 返回首頁    go 阿裏雲 go 技術社區[雲棲]


用香蕉也能玩電腦遊戲—Tensorflow對象檢測接口的簡單應用

Tensorflow最近發布了用於對象檢測的對象檢測接口(Object Detection API),能夠定位和識別圖像中的對象。它能夠快速檢測圖像允許從視頻幀甚至網絡攝像頭進行連續檢測。它也可以用於構建鼠標“Tensormouse”,一個使用網絡攝像移動光標的應用程序。

你是否曾經想過使用其他物品比如香蕉來移動你的光標?我們現在就可以實現!

TensorMouse是一個小型的開源Python應用程序,它允許你通過在網絡攝像頭前移動任意物品(如杯子,蘋果或香蕉)來移動光標,他可以做電腦鼠標或觸控板的替代品。

f3d4a505cbf40f7283fa4f7a0bf83a32cd1e88c1

允許你用香蕉玩遊戲

它是如何工作的?
TensorMouse記錄來自網絡攝像頭的圖像序列。然後將這些數據輸入到Tensorflow對象檢測接口中,返回對象的概率和位置的圖。然後移動鼠標光標,使光標位置與圖像上對象的位置對應。
例如,如果在圖像的左上角檢測到對象,光標將移動到屏幕的左上角。

應用程序的主要部分按順序重複以下步驟:

  • 使用OpenCV從網絡攝像頭進行單幀采集
  • 使用Tensorflow對象檢測接口進行對象檢測

  • 根據檢測到的對象位置移動鼠標光標

1.幀采集
使用Python OpenCV模塊捕獲來自網絡攝像頭的幀。它提供了一個跨平台的工具,用於快速的圖像采集和縮放。然後將圖像縮放到360p以提高性能。

2.對象檢測
對象檢測用於確定網絡攝像頭框中所需對象的相對位置。它使用在COCO數據集上訓練的Tensorflow對象檢測接口固有的Mobilenet神經網絡圖。該數據集由80個不同的對象組成,主要包括杯子,蘋果,餐具等家用物品。

6a4d54ff1fca1147848820bc02545b8226a27832

檢測到的具有帶有相應概率的對象

如果檢測到的對象相應的概率超過指定的閾值(一般為85%),則TensorMouse會將該對象視為檢測對象,並計算檢測到對象的方框的中心。

3.移動鼠標光標
Python包的pynput為執行鼠標指針的移動提供了跨平台支持。基於檢測到的對象的相對位置將光標移動到該位置。意思是如果在圖像的左上角檢測到物體,光標將移動到屏幕的左上角。

應用程序然後返回到步驟1以從網絡攝像頭檢索下一個圖像並重複此過程。

如何使用它
應用程序的源代碼發布在我的Gitlab repo中(https://github.com/tadejmagajna/TensorMouse)。

TensorMouse可以在任何主流的(Windows,Linux或MacOS)平台和幾乎任何機器上運行,但是要實現良好的幀速率,它需要一個好點的CPU或支持CUDA的顯卡。

安裝
安裝時要確保包依賴關係都已安裝好。

  1. 安裝Anaconda(我推薦安裝它的變種Miniconda)

  2. 從Gitlab複製TensorMouse

  3. 打開終端並導航到項目根目錄

  4. conda env create -f environment.yml(Linux / MacOS)或conda env create -f environment-win.yml(Windows)

  5. source activate tensormouse(Linux / MacOS)或activate tensormouse(Windows)

  6. 運行TensorMouse

一旦安裝了依賴項並激活環境,我們可以簡單地運行TensorMouse:

python tensormouse.py

然後等待約10-20秒,會有綠色消息顯示Tensormouse成功啟動。

這將運行Tensormouse跟蹤其默認對象—杯子。但是你可以通過提供可選參數(obect=”OBJECTNAME”)使其與80個COCO數據集對象中的任意一個配合使用。

你還可以使用CTRL和ALT執行點擊和拖動。

使用說明

  • 確保光線充足(Tensormouse在光線不好的情況下表現欠佳)

  • 需要對象保持與攝像頭的距離,既不能太近導致占用整個攝像頭幀,也不能太遠導致檢測不到

  • 如果你的對象檢測性能較差,請嚐試運行應用程序設置讓它來檢測杯子,它檢測杯子時還是挺準的

本文為編譯作品,轉載請注明出處。更多內容關注微信公眾號:atyun_com

最後更新:2017-10-19 11:03:56

  上一篇:go  熊貓燒香李俊涉嫌開設賭場罪被再度批捕
  下一篇:go  全麵解讀電商減貧 | 喜迎十九大