TechBridge 技術共筆部落格

var topics = ['Web前後端', '行動網路', '機器人/物聯網', '數據分析', '產品設計', 'etc.']

一起來玩 OSRF 的 TensorFlow Object Detector


前言

上次我們一起 使用 TensorFlow 來做簡單的手寫數字辨識,雖然我們可以自己使用這些 API 兜自己的模組,但我們也可以利用現成的工具,節省開發時間。

安裝

安裝步驟可以參考官方的 README文件。我自己是在 Ubuntu 14.04 + Indigo 測試過,也 OK,只要記得將一些安裝 kinetic package 的地方更新成 indigo 就好。例如第二步的 camera dependencies:

1
sudo apt-get install ros-indigo-usb-cam ros-indigo-openni2-launch

真實環境測試

安裝成功之後,立刻就來試試看真實環境下的測試結果,執行 launch 檔之後,應該就可以看到跳出如下視窗,顯示出辨識的物體。

image

我們都知道,要做 object recognition 有很多種不同的 neural network 可以用,這個 package 預設是使用 Single Shot Detector,SSD 主要的優點在於速度,根據他們在 PASCAL VOC、MS COCO、ILSVRC 等 Dataset 測試的結果,SSD 的準確度跟 region proposals 的方法差不多,但速度快很多。詳細介紹可以參考這篇文章

換一個不同的 model

接下來讓我們來嘗試換換,其實只要編輯 detect_ros.py 裡面的 MODEL_NAME 就好。首先,我們先到 tensorflow 的 detection model zoo,我下載了 ssd_inception_v2_coco 的 tar.gz 檔。把裡面的 model 解壓縮到 tensorflow_object_detector/data/models 後,再去改 detect_ros.py 裡面的 MODEL_NAME:

1
2
3
# What model to use
#MODEL_NAME = 'ssd_mobilenet_v1_coco_11_06_2017'
MODEL_NAME = 'ssd_inception_v2_coco_2017_11_17'

change model

因為筆者在換 model 的時候,已經離拍上圖好一小陣子,所以上圖的香蕉已經被筆者吃掉,場景也變了。

那如果你是想要更新辨識物體的種類,那就更新 detect_ros.py 裡面的 LABEL_NAME,這就不贅述了。

總結

今天我們玩了一個 OSRF 的 Object Detector,如果有想要做自己的機器人應用,需要用到物體辨識功能,不妨就直接拿這個 package 來用用,就算你覺得現有的 model 都不太好用,想自己重新 train 一個或 finetune 一個來符合自己的使用場景,也還是可以利用這個 package,抽換掉 model 就好,可以省下不少時間。

延伸閱讀

  1. 為什麼 SSD(Single Shot MultiBox Detector) 對小目標的檢測效果不好?

關於作者:
@pojenlai 演算法工程師,對機器人、電腦視覺和人工智慧有少許研究,正在學習用心體會事物的本質不斷進入學生心態改進

喜歡我們的文章嗎?歡迎分享按讚給予我們支持和鼓勵!




訂閱 TechBridge Weekly 技術週刊,每週發送最精華的技術開發、產品設計的資訊給您


TechBridge Weekly 技術週刊編輯團隊

TechBridge Weekly 技術週刊團隊是一群對用技術改變世界懷抱熱情的團隊。本技術共筆部落格初期專注於Web前後端、行動網路、機器人/物聯網、資料科學與產品設計等技術分享。This is TechBridge Weekly Team Tech Blog, which focus on web, mobile, robot, IoT, Data Science technology sharing.

關於我們 / 技術日報 / 技術週刊 / 粉絲專頁 / 訂閱RSS

Comments