2010年12月17日 星期五

FJUCam2/VCam的生態系統

近日看到EETimes文章提出一個觀念:Robust Ecosystem=Embedded Success[1,2],意指一個嵌入式系統要成功,必須要能提供完整的生態系統(Ecosystem),例如完整的開發環境、完整的應用、完整的周邊。

我看了後深有感觸,覺得我們智慧型實驗室在發展FJUCam/VCam的方式,就是這樣一個觀念,因此乃撰此文以為呼應。

我們的FJUCam/VCam也有野心要提供Ecosystem,但是是針對Smart Camera概念的生態系統,範圍從軟硬體元件、開發環境、應用等3個方面,都提供完整的嵌入式視覺(Embedded Vision) [3,4] 系統架構。

為何這樣做?因為嵌入式的應用包羅萬象,涵蓋範圍廣泛,尤其是朝嵌入式視覺方向走,則更需要高性能的MCU/DSP來完成。再加上需要高速網路連結、大量記憶體、快速資料儲存傳輸等需求來完成電腦視覺運算,則更難找到適合的平台(含硬體與軟體的整合平台)。

我在大約三年前(民國96年)開始尋找適當的平台。我的目的其實很簡單:有一套效能跟PC接近的嵌入式系統,處理器能在2GHz以上,記憶體需要1G,可以用C語言來開發電腦視覺演算法,能達到至少每秒10張影像的處理效能。

更重要的是,最好學生都不用懂硬體,直接就可以撰寫演算法達到此效能。

我從MCU、FPGA、一路找到DSP,全都失望。不僅效能不夠,絕大部分都不談如何接攝影機以輸入影像與視訊,更有許多都沒有作業系統。

這個探索的歷程,真是一言難盡。

直到98年我才突然醒悟:原來所謂的嵌入式系統,其定義就是「資源有限」。而我們以前在PC上發展電腦視覺演算法,都是本著「資源無限」的觀念來開發。

所幸在98年開始,發現計算機硬體開始有一個新潮流走向:多核心。其效能看來可以有我預期的程度,因此開始有了信心。

再加上Embedded Linux從99年開始大量使用,開發環境趨於普及,開始覺得我們有機會可以做作看了。

但是有了晶片、有了OS,問題仍然存在:我無法讓學生都不用懂硬體,直接就可以撰寫演算法達到良好效能。

原因是:現有的多核心嵌入式開發板,體積大的像恐龍,無法連接各種介面的Camera介面(USB等),有些還要自行編譯或撰寫驅動程式。

除此之外,軟體發展環境複雜的難以接受,一大堆的設定,還要瞭解記憶體規格才能完成設定。我一直都找不到直接就設定好的軟體環境,以供學生自由開發演算法。

後來才又發現:原來多核心這樣一個新的計算機技術,在硬體與軟體層面都是新挑戰。硬體上,板子還沒有人有能力做到非常小。軟體上,還沒有人能將多執行緒平行化的程式庫建立起來。

因此就是還沒有可以用的板子。看來要等人做出來的話,要等至少3~5年。而且還不見得可以適用於發展電腦視覺演算法。

但為何國外的前瞻實驗室,都可以做嵌入式視覺的研究呢?

原來就是要一切自己來。

我忽然醒悟:原來前瞻的研究,軟硬體都要自己來。MIT Media Lab就是如此。這樣創意才不會受限

原來我已經不是單純要做論文或發展演算法而已,我是要朝創意發展。

所以得要自己做板子,瞭解硬體的特點並知道如何發揮硬體效能,然後自己發展軟體程式庫,就可以開始做演算法,並實現創意應用技術。

為做到這樣,我們真的開始建立一個Smart Camera Ecosystem了。

我們面臨的挑戰,是我們必須深入瞭解Camera硬體與計算機硬體的軟硬體架構,拆解其技術成分;然後我們再去尋找各個技術的解答,分析其優缺點,決定自己的規格;最後再再開始自行做硬體與軟體,以發展出我們理想中的軟硬體平台,成為FJUCam。

我們已經有發展一套FJUCam,是以ARM7為核心,運算能力雖然只有60MHz,記憶體只有64KB,且沒有作業系統,但整合了一套C語言程式庫以供開發演算法,可以做人臉偵測與機器人視覺的簡單應用,並且適合應用在Sensor Nework。預計在100年1月會有碩士論文產出,並放在網站上公開其研究內容。

但我們目前也已經開始著手第二代的FJUCam,稱之為FJUCam2/VCam,採用異質雙核心(Heterogeneous Dual-core)的DSP,CPU運算速度可以比FJUCam快10倍:600MHz,記憶體容量高2000倍:256MB,並且可以外接各種周邊。若會撰寫DSP程式再使用其DSP核心,則會有更高的效能。

我們的FJUCam2/VCam目前已經有以下的成果:

1.在軟硬體元件方面,我們開發一個異質雙核心(Heterogeneous Dualcore)處理器的高效能嵌入式電腦。其視訊輸入可以連接3種攝影機介面(Camera Bus、LVBS Video In、USB),並且可以自行組合各種Camera元件(各種焦距距離的鏡頭、CCS/CMOS感測器、Omni-cam、NIR/Thermal Cam [5]、Wearable Cam、Stereo Cam等) [6]。視訊輸出可以用HDMI/DVI連接液晶螢幕與投影機。作業系統方面以Embedded Linux為主,但已經可以有5種作業系統:Android[7], Angstrom, Meego[8], Linaro, Ubuntu。

2.在開發環境方面,我們除整合既有的API/Lib(OpenCV, FFMpeg等),也發展自己的API/Lib: EVK(Embedded Vision Kit)。我們可以依不同的作業系統,建立GNU整套開發環境。我們也整合Qt的視窗程式庫。

3.在應用方面,我們已經有幾組同學,分別將FJUCam2/VCam應用在開發醫療(Medical)、視訊監控(Video Surveillance)、擴增實境(AR)、機器人視覺(Robotic Vision)、3D/Stereo、與行動雲(Mobile Cloud)。

我們認為FJUCam2/VCam是一個高效能的嵌入式視覺平台,是一個經過整合好的硬體、軟體、與攝影機的開發環境,可以讓後續的研究生與研究者不需瞭解太多軟硬體細節,很容易就可以開始實現電腦視覺演算法,並開發創意的應用。

我們在短期內將會陸續有成果產出,並透過網路公開分享給有興趣的研究者。開發環境部分含EVK會Open Source,應用方面會挑選重要者提供Reference Design。軟硬體元件則交由廠商去發展。

我們希望透過這些研究成果,展現ISLab同學的能力,並與其他有興趣者一起來努力,發展嵌入式視覺的研究。

[1] ST Virtual Conference: Robust Ecosystem=Embedded Success, EE Times, December 2, 2010.
[2] From Microcontrollers to Ecosystems, EE Times, December 2, 2010.
[3] Towards Embedded Computer Vision邁向嵌入式電腦視覺,王元凱,blog.ykwang.tw,2010年10月3日。
[4] 嵌入式視覺系列, Part I-嵌入式系統上DSP的發展方向:ISP,王元凱,blog.ykwang.tw,2010年10月9日。
[5] 熱顯像攝影機(Thermal Camera)於FJUCam2/VCam之應用與考慮,王元凱,blog.ykwang.tw,2010年9月5日。
[6] FJUCam2/VCam可以使用的Camera Module,王元凱,blog.ykwang.tw,2010年11月14日。
[7] Android beyond the phone─兼論FJUCam2的下一步Android發展方向,王元凱,blog.ykwang.tw,2010年8月26日。
[8] Meego,王元凱,blog.ykwang.tw,2010年10月5日。

本網誌相關文章 :

沒有留言:

張貼留言