用香蕉也能玩電腦遊戲—Tensorflow對象檢測接口的簡單應用
Tensorflow最近發布了用於對象檢測的對象檢測接口(Object Detection API),能夠定位和識別圖像中的對象。它能夠快速檢測圖像允許從視頻幀甚至網絡攝像頭進行連續檢測。它也可以用於構建鼠標“Tensormouse”,一個使用網絡攝像移動光標的應用程序。
你是否曾經想過使用其他物品比如香蕉來移動你的光標?我們現在就可以實現!
TensorMouse是一個小型的開源Python應用程序,它允許你通過在網絡攝像頭前移動任意物品(如杯子,蘋果或香蕉)來移動光標,他可以做電腦鼠標或觸控板的替代品。
允許你用香蕉玩遊戲
它是如何工作的?
TensorMouse記錄來自網絡攝像頭的圖像序列。然後將這些數據輸入到Tensorflow對象檢測接口中,返回對象的概率和位置的圖。然後移動鼠標光標,使光標位置與圖像上對象的位置對應。
例如,如果在圖像的左上角檢測到對象,光標將移動到屏幕的左上角。
應用程序的主要部分按順序重複以下步驟:
- 使用OpenCV從網絡攝像頭進行單幀采集
使用Tensorflow對象檢測接口進行對象檢測
根據檢測到的對象位置移動鼠標光標
1.幀采集
使用Python OpenCV模塊捕獲來自網絡攝像頭的幀。它提供了一個跨平台的工具,用於快速的圖像采集和縮放。然後將圖像縮放到360p以提高性能。
2.對象檢測
對象檢測用於確定網絡攝像頭框中所需對象的相對位置。它使用在COCO數據集上訓練的Tensorflow對象檢測接口固有的Mobilenet神經網絡圖。該數據集由80個不同的對象組成,主要包括杯子,蘋果,餐具等家用物品。
檢測到的具有帶有相應概率的對象
如果檢測到的對象相應的概率超過指定的閾值(一般為85%),則TensorMouse會將該對象視為檢測對象,並計算檢測到對象的方框的中心。
3.移動鼠標光標
Python包的pynput為執行鼠標指針的移動提供了跨平台支持。基於檢測到的對象的相對位置將光標移動到該位置。意思是如果在圖像的左上角檢測到物體,光標將移動到屏幕的左上角。
應用程序然後返回到步驟1以從網絡攝像頭檢索下一個圖像並重複此過程。
如何使用它
應用程序的源代碼發布在我的Gitlab repo中(https://github.com/tadejmagajna/TensorMouse)。
TensorMouse可以在任何主流的(Windows,Linux或MacOS)平台和幾乎任何機器上運行,但是要實現良好的幀速率,它需要一個好點的CPU或支持CUDA的顯卡。
安裝
安裝時要確保包依賴關係都已安裝好。
安裝Anaconda(我推薦安裝它的變種Miniconda)
從Gitlab複製TensorMouse
打開終端並導航到項目根目錄
conda env create -f environment.yml(Linux / MacOS)或conda env create -f environment-win.yml(Windows)
source activate tensormouse(Linux / MacOS)或activate tensormouse(Windows)
運行TensorMouse
一旦安裝了依賴項並激活環境,我們可以簡單地運行TensorMouse:
python tensormouse.py
然後等待約10-20秒,會有綠色消息顯示Tensormouse成功啟動。
這將運行Tensormouse跟蹤其默認對象—杯子。但是你可以通過提供可選參數(obect=”OBJECTNAME”)使其與80個COCO數據集對象中的任意一個配合使用。
你還可以使用CTRL和ALT執行點擊和拖動。
使用說明
確保光線充足(Tensormouse在光線不好的情況下表現欠佳)
需要對象保持與攝像頭的距離,既不能太近導致占用整個攝像頭幀,也不能太遠導致檢測不到
如果你的對象檢測性能較差,請嚐試運行應用程序設置讓它來檢測杯子,它檢測杯子時還是挺準的
本文為編譯作品,轉載請注明出處。更多內容關注微信公眾號:atyun_com
最後更新:2017-10-19 11:03:56