Tensorflow Detector檢測器
前言大綱
Spot Tensorflow Detector 示例從 5 個 Spot 相機收集圖像並使用 Tensorflow 執行物件檢測。它接受任何 Tensorflow 模型,並允許用戶指定模型中包含的檢測類別的子集。它為預定義的迭代次數執行這組操作,在每次迭代之間阻塞預定義的時間量。每次迭代的輸出是從相機收集的原始 5 張圖像和另外一組這 5 張圖像的圖,其中包含 Tensorflow 模型報告的檢測結果周圍的幀框。
該程序被組織成三組與 Spot 機器人通信的 Python 程序。流程圖如下所示。主程序通過 GRPC 與 Spot 機器人通信並不斷接收圖像。這些圖像被推入 RAW_IMAGES_QUEUE 並由 Tensorflow 程序讀取。這些程序檢測圖像中的物件,在檢測點周圍繪製邊界框,並將處理後的圖像推送進入 PROCESSED_IMAGES_QUEUE。 Display 程序然後從 PROCESSED_IMAGES_QUEUE 中提取圖像並將它們顯示到屏幕上。
用戶指南
安裝
為獲得最佳學習體驗,請使用 SDK 的 docs/python 目錄中的快速入門指南Quickstart Guide 。 這將幫助您正確設置 Python 編程環境。
要在 Ubuntu 18.04 上安裝此示例,請按照以下說明操作:
- 按照本快速入門指南 virtualenv 部分中的描述創建 虛擬環境Quickstart Guide virtualenv section
- 安裝相依性:python3 -m pip install -r requirements.txt
- 使用下一節中的說明運行示例
- 要退出虛擬環境,請運行 deactivate
執行
此示例遵循預期參數的常見模式。它需要用於配置 SDK 和連接到 Spot 的常用參數:- -用戶名
- -密碼
- 主機名作為最後一個參數傳遞
- –model-path(必需)參數,指定 Tensorflow 模型的路徑(.pb 格式的文件)
- –detection-classes(可選)參數,指定要從 Tensorflow 模型中使用的以逗號分隔的檢測類別列表;不指定此參數意味著將檢測模型中的所有類別
- –detection-threshold(可選)參數,指定用於將 Tensorflow 檢測視為真實檢測的閾值;默認為 0.7
- –number-tensorflow-processes(可選)參數,指定要啟動的 Tensorflow 進程的數量;默認為 7
- –sleep-between-capture(可選)參數,指定每次圖像捕獲迭代之間的睡眠時間(以秒為單位);默認為 0.0
- –max-processing-delay(可選)參數,指定每個圖像在處理前允許的最大延遲(以秒為單位);不會處理延遲較大的圖像。將此設置為更大的值可以幫助模型運行得更快。
- –max-display-delay(可選)參數,指定每個圖像在顯示前允許的最大延遲秒數;延遲較大的圖像將不會顯示。將此設置為更大的值可以幫助模型運行得更快。
該程序生成兩組輸出:
一組 5 個圖像窗口,其中包含來自 5 個攝像頭的實時圖像,並帶有圍繞 Tensorflow 檢測的框。
命令行日誌格式:RAW_IMAGES_QUEUE PROCESSED_IMAGES_QUEUE Network_Delay Processing_Delay Display_Delay Total_Delay Display_Skips Processing_Skips
所有這些參數的值都是非同步更新的。參數是:
- - RAW_IMAGES_QUEUE:保存原始圖像的隊列大小;主程序在這個隊列中添加原始圖像,Tensorflow 程序從這個隊列中獲取圖像
- - PROCESSED_IMAGES_QUEUE:保存進程圖像的隊列大小; Tensorflow 程序在此隊列中添加處理過的圖像,Display 程序從該隊列中獲取圖像
- - Network_Delay:在機器人中捕獲圖像與該程序接收圖像之間的延遲(以秒為單位)
- - Processing_Delay:以秒為單位的時間量使用 Tensorflow 處理器來處理圖像
- - Display_Delay:顯示處理後圖像所需的時間(以秒為單位)
- - Total_Delay:在機器人中捕獲圖像與其在屏幕上顯示之間的總延遲(以秒為單位)
- - Display_Skips :由於延遲而跳過顯示的圖像總數
- - Processing_Skips:由於延遲而在每個 Tensorflow 進程中跳過處理的圖像總數
RAW_IMAGES_QUEUE 的值在程序開始時迅速增加,但幾分鐘後它應該會減少回 0。根據運行程序的硬件,增加傳遞給參數 --number-tensorflow-processes 的值可以更快地減小此隊列的大小。增加參數 --sleep-between-capture 的值也會減少這個隊列的大小,但這個選項也會減少 Spot 機器人周圍環境的實時可視化。
例如,可以在此處獲取在 COCO 數據集上預訓練的 fast_rcnn_inception_v2_coco Tensorflow 模型。運行示例,其中 --model-path 指向該模型中的 pb 文件,並將 --detection-classes 參數設置為 1 以檢測相機圖像中的人物。 Windows 或 MacOS 不支持該模型。
留言
張貼留言
Aron阿龍,謝謝您的留言互動!