Friday, November 20, 2009

Blocks -- 電腦視覺研究上的MATLAB framework

前陣子在讀ICCV的paper時,有兩位作者引起我很大的興趣,原因不在於論文的好壞,而是他們把自己做實驗時的研究方法公開在網頁上。

為什麼說這是一件重要的事情呢? 這要先岔題一下:
在電腦視覺的領域,一篇好的研究,除了理論完整、實驗漂亮之外,能否讓其他人重複得到該作者的實驗結果也是非常重要的。

目前在這個領域,已經有公用的測試資料庫供大家使用。想像一下,說假設我提出一套方法,可以找出照片中的行人,要評估我的方法好壞,可以用一組前人已經做過實驗的照片,用他們的結果來比較。而這樣的比較結果,自然是放在我的論文之中。不過問題來了,當有人質疑我的實驗結果時,他們必須用想辦法重現我的實驗結果,不過這是一件很困難的事情。
困難的理由在於,首先你要把我的方法寫成程式,這是一件很花功夫的事,然而當你寫好程式之後還有一個難關,在電腦視覺這個領域中 (電腦科學的很多領域也是),
一個演算法之中會有很多參數,而參數的設定不同就會造成實驗結果的差異
類比一下,好比說我給你一份食譜,裡面說要加牛肉幾兩、油、鹽、糖幾匙等等
如果我今天漏掉了其中一樣東西的分量,那你就只能自己嘗試,找出最好的分量,
不然味道就會差一點
令人驚訝的是,論文中就是會把很多參數給漏掉
這其實也不能責怪作者,當你的系統大到一個程度時,你自然不可能巨細靡遺的把每個參數寫在論文上面,尤其是當這些參數是跟你的演算法無關的部分。

面對這種情況,
許多論文作者並不會主動提供這些資訊,比如說放在個人網頁上面等等
有時候當你寫信去問時,得到的回覆可能是"抱歉,我的程式不知道放在哪個硬碟了"
這通常不是作者敷衍你,而是一個常見的情形,因為研究題目可能兩三年就會有變動,之前寫的程式往往不能再用(啊哈!你想到軟體的重複利用,但是研究人員不一定具有好的軟體工程能力)

比較好心的作者會把他的程式碼公開,讓其他的研究者可以輕鬆的重複實驗,
這樣子通常可以獲得回報:會提高其他研究者引用他的論文的意願,
而論文的被引用次數,是一個研究者最直接也是最重要的指標(甚至比發表的論文數目還重要)

回到一開始,Brian Fulkerson 和 Andrea Vedaldi 這兩位研究員,他們不只公開程式碼,同時也整理了整個實驗的架構,告訴你可以修改那些地方,讓你能在他們的基礎上來改進這個系統。這才真正的站在巨人的肩膀上! (當然這是指在學術界啦,在業界的話這可是公司賴以生存的寶物,怎能輕易公開!)

(未完待續)

Sunday, November 15, 2009

失落的勾勾 ✓

前幾天老闆在用word的時候問了我 ☑ 這個符號怎麼輸入
本來用word的插入符號就可以搞定,沒想到找了半天居然找不到
敝人想了一下居然不曉得符號的名稱,以致於無法向 Google 大神求救

我先從方框裡面的勾勾✓下手
經過一陣搜尋,原來✓這個符號稱之為tick (此為英式英文,美式英文稱之為 check mark)
好在維基小神有保庇,把✓連他的同伴☑一起建了一條說明
看過條文發覺居然沒有中文的對應頁面,所以仍是不知該如何稱呼

回到原來的問題中,在符號表中找不到☑乃是因為使用的字形對Unicode的支援並不完整
因此自然不見☑的蹤影
把字型改為 Arial Unicode MS 後便出現了 ( Arial Unicode MS 支援 Unicode 2.1 版)

不過目前的 Unicode 已到 5.2 版,一共含有約10萬個字!
看來字形檔要支援最新的 Unicode 仍屬不易啊