一起來玩 OSRF 的 TensorFlow Object Detector


Posted by Po-Jen on 2018-02-24

前言

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

安裝

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

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:

# 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 演算法工程師,對機器人、電腦視覺和人工智慧有少許研究,正在學習用心體會事物的本質不斷進入學生心態改進


#ROS #TensorFlow #Object Recognition









Related Posts

一些細節小精靈

一些細節小精靈

[Day 04] 樣板模式,合成模式,狀態模式,代理模式

[Day 04] 樣板模式,合成模式,狀態模式,代理模式

【JS學習筆記】認識 for...in 與他的兄弟 for...of

【JS學習筆記】認識 for...in 與他的兄弟 for...of




Newsletter




Comments