Aside

由於Robot Operating System(ROS)的中文資源還幾乎不存在,決定先撒下一點麵包屑,之後有寫出新的也會依序整理到這上面.

我覺得機器人很有可能是未來崛起的一個領域,而要在這個領域做出能推動世界進步的成果,我認為ROS是一個很重要的工具.

希望之後有心做ROS的人學習愉快: D

———————————————–
ROS tutorials系列(適用於ROS Fuerte之前的版本,目前還沒時間寫新的版本)

我的tutorial不詳細go through整個tutorial原文,而是就我認為重要之處詳加說明,而且有些東西原文寫得很清楚我不重複寫,換句話說,我仍預期看這些tutorial時要搭配看原文, 會比較完整

此外我重視連貫性,所以一些零碎的細節觀念我也不會寫,如果重要我會補在最後的tips裡

0. 什麼是ROS?要怎麼做ROS? (做ROS前必看!我盡量寫得淺顯,不是工程師應該也看得懂XD)

1. 淺談ROS file system

2. 新增ROS packages

3. 立ROS packages

4. 了解ROS Nodes

———————————————–

ROS觀念文

簡介CRAM(Cognitive Robot Abstract Machine)

Knowrob簡單概念

Topic, Service和Actionlib的用途與差別

認識ROS stack & package (剛接觸ROS寫的,沒什麼見地Orz)

———————————————–

ROS細節實作文

改launch file中的參數值

如何安裝Household object database

launch file的if, unless條件用法

收到彩色影像,發布灰階影像topic的方法

———————————————–

ROS散文(散亂的雜文,不是散文XD)

PR2開箱文

ROS tutorial 之 Don’t repeat yourself

———————————————–

機器人技術關注

值得關注的Robotics Lab

值得關注的Robotics Startups

———————————————–

補個關鍵字

ROS(Robot operating system), 機器人作業系統, 教學文章, 範例, 說明

我們想要的未來是什麼?

最近的八仙爆炸意外、新北市夜晚的不平靜、醫病糾紛、司法體系不公、立法院失去監督能力、行政帶頭違法亂紀…顯示了台灣有很多很多問題。

看看全世界,其實相似。大家都說台灣是鬼島,但我並不認同,因為有很多國家的爛事是我們不知道的。舉例來說,我上個月才聽說法國居然有大學教授可以上課完全不到,讓學生空等一兩小時,下課才寄信說自己忘記要上課了,重點是完全不會被懲罰。因為教師公會的力量太過強大,使得政府必須順從他們才能獲得選票(嗯?似曾相識?)。再看看現在仍常年處在戰爭中的非洲國家、中東國家,還有越來越緊張的烏克蘭等等,我覺得比上不足、比下已經很有餘。

那我們最大的問題在哪裡?

我們最大的敵人,是無力感。

我們看見問題,覺得傷心、覺得難過、覺得憤怒、覺得沮喪,卻不知道自己能做什麼。我們釐不清問題、看不見目標、所以看不見希望。看不見希望,就只能逃避不去想,只期待有人來改進這一切,因為這比較不痛苦。

但是,
每一分每一秒都在變化,不管現狀怎麼糟糕,隨時都能夠將現況改善得更好一點。

一秒鐘是客觀的。
在這一秒鐘內,我們可以選擇不關注,那我們就是任憑這一秒鐘被浪費,迎接更糟的未來也不令人意外,我們沒有權利期待擺在地上的一堆廚餘會自動變回一桌佳餚;但是我們在這一秒鐘可以思考怎麼在下一秒鐘開始改善現狀;甚至可以嘗試去做點什麼,看看這世界是不是變得更好。

未來,忠實反映你現在的選擇。

覺得沒有希望是因為不知道怎麼改善、不知道怎麼改善是因為訂不出切實可行的目標、訂不出切實可行的目標是因為釐不清問題、釐不清問題不是因為事情太複雜,是因為我們根本沒有花相對應的時間去解決問題。我們願意花50分鐘的時間去寫一份考卷,但我們可曾花50分鐘去想一個議題?你真的坐下來想50分鐘,我不信沒有進展。何況這些問題的難度遠超過考卷上的問題。

另外,有三點我希望警惕自己:

1. 方法絕對不會沒有,歷史上的強盛國家常常都是經由變法,再經過好幾代的歲月才變得非常強,但即使科技發達可以讓變法效率大增,我們也需要時間。目光短淺是重要改革的致命傷。

2. 一定會有很多人看起來像是來阻撓,會有刻意阻撓的人、不關注使得我們熱情被潑冷水的人,但既然這些人本來就會存在,我們又有什麼好擔心的? 可預期的事情並不會阻擋我們,因為心理建設幫助我們冷靜地面對、繼續前進。不可預期的事先擺一邊,先從可預期的事著手,在擴大自己智慧的過程中,更多不可預期的事將會變得清晰而可預測。

3. 將批判的心思放在自己身上就好。有很多人的很多行為令我們不解,但我們自己也有很多行為會令別人不解。每個人本來就有許多面向,你不能要求陳為廷是個完人,他的慾望跟他為社會改革所做的努力根本是兩回事。就像你平常會有認真工作、努力讀書的一面,但你也會有放縱慾望去享樂的一面(而且我相信你不會願意讓社會大眾來檢視),難道你希望別人用你放縱享樂時的行為來推翻你認真工作時的表現?就算你要批判,在你批判的時候,請看清楚自己的動機,你是想藉由批判讓台灣多一個聖人級的政治人物、還是滿足自己想批評的慾望?這麼做有讓這社會變得更好嗎?

最後的問題是,我們想要的未來是什麼?

最近看孫運璿傳,有很深的體會。在經濟的發展上,台灣確實獲得巨大的成功,但這也造成部分上一代的人自以為厲害(如果沒有英明的孫運璿,你們有今天?何苦在問題重重的今天再加上族群對立?)、有不少台灣人把自己的利益放在最前面等等問題。再看郭董,他的立場傾中真的是他的本意?還是因為他已經離不開中國,但又有許多員工要養的不得不為?

一開始的目標就要設定正確,然後一路上審慎地觀察自己往哪個方向走。

其實這些內容都是要寫給我自己看的,隔兩天又忘記這些體會然後從頭來過不怎麼有效率。關於未來的目標,需要另開一篇,不過沒打算公開就是了。

鬱金香可能是花!

昨天報告的時候講到鬱金香不是花這一神奇論述,覺得怪怪的,還是查證一下。

首先我發現我誤會論文了,上面是寫WordNet認為鬱金香不是花(見下圖),但我誤認為他寫的是百科全書中認定鬱金香不是花。這顯然就是一種簡化世界的機制帶來的認知錯誤,因為這一段的開頭提到common sense跟encyclopedic knowledge可能有衝突,我就把後面的例子都簡化成百科全書了。

1

因為有點好奇,我還是去查了一下,鬱金香是一個屬,依序是:

植物界=>被子植物門=>單子葉植物綱=>百合目=>百合科=>鬱金香屬

雖然沒有找到關於花的嚴格定義,但是鬱金香有花柱、花瓣、花蕊等等構造,應該也算是一種花吧。因為不能確定,所以標題只敢下鬱金香可能是花XD

Fisher Vector簡介

這禮拜因為要上台報告,發現如果沒好好弄懂這東西可能會講不清楚,想說既然有機會那就好好地學一下這個技巧,畢竟由其衍生出來的VLAD聽說是在深度學習出來前,分類準確率最高的image representation方法。

先附上兩個可以供參考的資源:

http://blog.csdn.net/breeze5428/article/details/32706507

http://www.duzhongxiang.com/fisher-vector/

不過最後幫助我弄懂的還是”Fisher Kernel on Visual Vocabularies for Image Categorization”這篇第一個把Fisher Kernel用在影像分類上的論文,如果不排斥的話,還是去看看會比較好。

先不講數學,主要觀念比較重要。Fisher Vector主要的概念是,我先用GMM來model一張影像的local descriptor分佈,所以對不同的影像來說,我都只需要用GMM就可以描述,也就是說每張影像都可以被表現成一個維度一樣的向量(維度就等於GMM的parameter數)。這邊厲害的地方在於,原本每張影像所取出的local descriptor數都不盡相同,但因為用GMM描述,就可以讓每一張影像被表示成維度相同的向量。

但Fisher Vector沒有這麼單純,他不是單純用GMM的每個參數值來表示一張影像,他是先定義一個function,這個function定義了一張影像跟GMM對這張影像的model的相似程度。然後藉由對GMM每個參數做偏微分,就可以得到每個參數變化一點點,這張影像跟GMM對這張影像的model的相似程度的變化量,把每個偏微分都定義成Vector的一個維度,就可以得到一個長度還是跟參數量一樣的Vector。最後,為了分類器的需求,再把這個vector用Fisher Information Matrix做完normalization,就可以得到Fisher vector了。

ROS in DARPA Robotics Challenge!

根據OSRF的調查:

http://www.osrfoundation.org/ros-gazebo-at-the-drc-finals/

在23隊參加DRC Final的隊伍中,有18隊使用ROS,有14隊有使用Gazebo來模擬關卡跟任務的執行。今年的冠軍隊KAIST也有使用ROS+Gazebo。ROS本身是非常好用的工具,所以有這個結果也不意外。

ROS的重要性已經不容忽視,不管是想了解機器人產業,或想投入機器人的技術開發,你都一定要知道ROS。

順便附上今年的機器人:

DRC

AMMAI(Week 15) – What does classifying more than 10,000 image categories tell us?

Paper Info

“What does classifying more than 10,000 image categories tell us?,” J. Deng, A. C. Berg, K. Li, and L. Fei-Fei, ECCV 2010.

Motivation

人類可以辨識的物體種類有成千上萬種,那如果嘗試讓電腦來辨識這麼多種的物體,會出現哪些問題?這是這篇論文主要想探討的問題。

Technical Summary&Experiment

因為這篇論文比較是討論性質的,所以重點在實驗,所以把Technical Summary跟Experiment合在一起寫。

使用的Datasets

ImageNet10K, ImageNet7K, ImageNet1K, Rand200, Ungulate183, Fungus134, Vehicle262, CalNet200

Evaluation的方法

mean accuracy, mean misclassfication cost(例如把狗分類成貓跟把狗分類成汽車的錯誤程度是不同的)

分類演算法

GIST+NN, BOW+NN, BOW+SVM, SPM+SVM

運算時間的分析

這邊他們做了滿多種方法的分析,但發現有很多方法,光是訓練分類器就要花上以年為單位的時間,然後testing需要數小時來跑完全部影像的分類,所以他們有試著去用平行運算來處理,發現如果用66個CPU的叢集一起算,只要幾個禮拜就可以訓練完,所以他們認為需要平行運算才能處理這麼多類的物體分類問題。

類別數量的分析

當類別數量增加,準確度會下降,實驗結果在下圖中呈現,有趣的地方是,原本在比較少類別的資料中表現較好的SVM居然在類別變多時輸給了簡單的NN方法。他們的猜測是,1-vs-all的分類器在種類更多的時候會有更差的表現(因為每個種類都一樣多張影像的話,種類越多,表示對的資料比例急速下降,所以分類器得到的正確範例很少,自然學不好)。

1

另外一個實驗的結果指出有些class因為彼此之間有關係,所以分類結果會相關。

1

資料庫內種類密度的分析

作者們發現了一件有趣的事情,雖然很直覺,但我覺得很重要。就是資料庫內的物體種類越密集(密集度由wordnet當中這些類別之間的距離平均來計算),分類器的辨識結果就會越差。

1

利用語意的階層來幫助分類的分析

他們主要的argument很有道理,就是如果分類器把貓分成夠,這樣的錯誤應該要比把貓分成微波爐還要小,但原本的分類只有分正確或錯誤,就沒有辦法反映這個現象。所以他們定出hierarchical cost,使用WordNet的距離來定義cost(那因為貓跟狗的距離比貓跟微波爐的距離小,就可以把cost function變得更好)。

1

2

Contribution

這篇論文應該是第一個探討極大量種類的物體辨識的論文,討論的面向相當完整,而且他們有提出怎麼利用WordNet的類別來幫助改進分類器的辨識結果(利用一種hierarchical cost),我覺得有運用到人類如何做物體辨識的概念,是吸當有趣的研究。

Question

1. 是不是一定要實作出人類的認知架構才夠達到人類班的辨識水平?考慮到人類的學習其實包含視覺,觸覺等多種知覺的刺激,真的有可能只藉由影像的data得到很好的物體辨識模組嗎?

AMMAI(Week 14) – Text Understanding from Scratch

Paper Info

Zhang, Xiang, and Yann LeCun. “Text Understanding from Scratch.” arXiv preprint arXiv:1502.01710 (2015).

Motivation

這篇論文嘗試用Deep Learning來做各種文字分析的task, 包含ontology classification, sentiment analysis跟text categorization等。

Technical Summary

怎麼將character表示成向量

他們統一將字母用69維的向量表示,69維包含26個字母,10個數字跟33個其他符號,而如果是空白就用69維的0向量表示。而且不需要做normalization就可以達到還不錯的效果。

ConvNet model設計

他們設計了一大一小的類神經網路,兩個都是6層的conv layer,3層的FC layer。

1

2

3

Data Augmentation技巧

在理想情況下,讓人來把訓練資料裡的句子用不同的用法重新寫過會很有用,但實際上因為成本不可能這樣做,所以這邊的作法就是把句子中可以替換掉的字換成同義字,藉以增加訓練資料的多樣性。不過從實驗結果可以看出有沒有做這一步其實沒有差很多。

Experiment

因為有很多資料庫都是他們自己建的,沒有現成數據以供比較,所以他們又實作了BOW跟Word2vec來進行比較。

DBpedia Ontology Classification

1

Amazon Review Sentiment Analysis

2

3

Yahoo! Answer Topic Classification

4

News Categorization in English

5

News Categorization in Chinese

6

Contribution

他們在某種程度上證明即時沒有任何事先知道的knowledge,利用深度學習,單純靠字母level的輸入也可以做到很不錯的精準度。

AMMAI(Week 13) – Deep neural networks for acoustic modeling in speech recognition

Paper Info

Hinton, Geoffrey, et al. “Deep neural networks for acoustic modeling in speech recognition: The shared views of four research groups.” Signal Processing Magazine, IEEE 29.6 (2012): 82-97.

Motivation

以往的Speech recognition做法主要都是利用HMM來model聲音訊號的順序關係(frame to frame)、配合GMM來model單一frame,而這篇希望討論利用DNN來取代GMM的做法,另外也討論了DNN的其他性質和可能用法。

Technical Summary

怎麼將聲音訊號導入DNN

DNN的用法是接收MFCC或是Filter-bank的係數(也就是一個高維度的向量),然後輸出就是這個向量屬於每個state的機率。而且有趣的是,DNN+HMM的方法使用Filter-bank的係數得到的performance還比MFCC好,論文上指出說可能是因為GMM需要input的資料的每個維度彼此比較獨立,但DNN不需要。

怎麼把DNN跟HMM接起來

DNN的輸出就可以當作HMM的輸入,這是比較簡單的做法。

另外這篇論文滿詳細地說明了用RBM跟DBN來做預訓練的方法,雖然後來發現不太需要做預訓練也可以達到很好的效果。

Experiment

他們有在TIMIT上面做測試,也有在一些比較large scale的dataset測試performance。

1

2

3

Contribution

這篇論文把DNN應用於語音辨識的主要概念、方法還有跟前人的比較都做了詳盡的介紹,是一篇入門語音處理的重要論文,基本上掌握HMM-GMM跟這篇應該就對語音處理會有一個大的綱架了。

Question

1.為什麼用GMM來model球面上很接近的一些點會需要用到一堆Gaussian?

Tools Learned

Deep belief network, Restricted Boltzmann Machine

AMMAI(Week 12) – Rich feature hierarchies for accurate object detection and semantic segmentation

Paper Info

“Rich feature hierarchies for accurate object detection and semantic segmentation.” Girshick, Ross, et al. CVPR 2014.

Motivation

之前的論文主要是將DNN應用在global的影像分類上,但如果我們想將影像中的物體一個個的locate出來並貼上標籤,那就是完全不同的task,所以這篇論文被提出來處理這個問題。

Technical Summary

主要架構圖

1

從主要架構圖可以看出,其實在經過region proposal之後,後面做的事情就像是一般的image classification(不過這篇是使用linear SVM來做分類)。所以在test stage,他們用selective search的方法產生2000個左右的region,接著把每個region都直接warp成227×227的影像,餵進CNN後就都變成同樣長度的特徵向量,再提供給SVM做最後的分類。

能夠做warping的理由也滿直觀的,我覺得warping後的結果依然可以被人所辨識,這表示重要的特徵其實是還留著的,所以CNN理論上也可以萃取出來。

1

另外一點值得關注的點是,他們在training的時候用到了ILSVRC的data來幫忙訓練,因為CNN需要大量的訓練資料,所以不太可能只由PASCAL VOC的data來訓練。他們證明可以先用比較general的大量資料來做預訓練、再用小量的domain specific資料來做訓練。(ILSVRC有1000類、PASCAL VOC只有21類)

Experiment

這個方法在PASCAL VOC上的mAP比之前最好的結果多了30%,非常厲害。

3

2

Contribution

1. 他們把CNN的架構跟bottom up的region proposal方法結合起來,使得CNN也可以處理物體定位跟辨識的問題。

2. 當training data不多的時候,他們也可以利用ILSVRC的data來做pre-training,再用僅有的一些data做fine tuning也可做到不錯的結果。

Question

1. 能不能不要做warping,直接把影像放進227×227的大小,其他塞0就好? 這樣效果會如何?

Tools Learned

Selective search, R-CNN, Region proposal方法(2.1中列了很多)