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(可選)參數,指定每個圖像在顯示前允許的最大延遲秒數;延遲較大的圖像將不會顯示。將此設置為更大的值可以幫助模型運行得更快。
python3 spot_tensorflow_detector.py --username USER --password PASSWORD --model-path <path_to_pb> ROBOT_IP

該程序生成兩組輸出:

一組 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 不支持該模型。


參考資料

特色、摘要,Feature、Summary:

關鍵字、標籤,Keyword、Tag:

留言

這個網誌中的熱門文章

Ubuntu 常用指令、分類與簡介

iptables的觀念與使用

網路設定必要參數IP、netmask(遮罩)、Gateway(閘道)、DNS

了解、分析登錄檔 - log

Python 與SQLite 資料庫

Blogger文章排版範本

Pandas 模組

如何撰寫Shell Script

查詢指令或設定 -Linux 線上手冊 - man

下載網頁使用 requests 模組