“嵌入式視覺”這一名詞是指在嵌入式系統(tǒng)中使用計(jì)算機(jī)視覺技術(shù)。換句話說,“嵌入式視覺”是指從視覺輸入中提取出其背后含義的嵌入式系統(tǒng)。與過去10年中無線通信技術(shù)的流行相類似,嵌入式視覺技術(shù)有望在今后10年得到廣泛應(yīng)用。而在實(shí)際的應(yīng)用系統(tǒng)中,嵌入式視覺技術(shù)如何才能發(fā)揮它的真正潛力呢?
在缺乏共通標(biāo)準(zhǔn)而使嵌入式視覺技術(shù)發(fā)展受阻之際,需要一種兼容各層面功能的標(biāo)準(zhǔn),才能真正開啟并普及嵌入式視覺應(yīng)用。例如,如果基于手勢的用戶介面變得普及,對于用戶而言,能夠使用一套具有多種不同機(jī)制的通用手勢功能將會變得十分重要。而如果3D成像成為視覺應(yīng)用的共同工具,那么不管使用什么樣的傳感器,我們都將必須為視覺應(yīng)用找到一個(gè)重現(xiàn)3D圖形數(shù)據(jù)的共同方式。
而對于嵌入式視覺系統(tǒng)所用的處理器,視覺演算法與應(yīng)用大大地延伸了處理器性能要求的范圍,就運(yùn)算能力的這一點(diǎn)而言,處理器的性能至關(guān)重要。但當(dāng)你跨越學(xué)術(shù)研究到實(shí)際系統(tǒng)的鴻溝,采用先進(jìn)演算法以即時(shí)執(zhí)行視頻輸入時(shí),卻不可避免地會消耗掉許多的處理功率。在許多嵌入式系統(tǒng)中,設(shè)計(jì)人員面臨著尺寸、功耗與成本等嚴(yán)苛的限制條件,因此,能夠以低成本與低功耗提供充份的處理能力是至關(guān)重要的。
而在其它一些要求大量運(yùn)算的嵌入式處理領(lǐng)域──如隨即浮現(xiàn)于我腦海中的消費(fèi)性視頻設(shè)備──在某種程度上而言,演算法是標(biāo)準(zhǔn)化的。這意味著芯片設(shè)計(jì)人員可以使用功能固定的硬件加速器和協(xié)同處理器,以低功耗和低成本提供大量的處理器運(yùn)算性能。
但在視覺應(yīng)用方面,不同的應(yīng)用之間往往采用不同的演算法,甚至是在同一款應(yīng)用中,所用的演算法也可能因設(shè)計(jì)不同或時(shí)間不同而異。因此,除了極其少數(shù)的一些大量應(yīng)用以外,功能固定的硬件往往無法作為解決方案。在嵌入式視覺系統(tǒng)中,我們需要的處理器必須能夠以低成本與低功耗,提供每秒數(shù)十億次即時(shí)運(yùn)算處理性能,并具有彈性化的可編程性能。過去幾年來,已經(jīng)有這樣的處理器問世,并可協(xié)助嵌入式視覺技術(shù)進(jìn)一步導(dǎo)入主流應(yīng)用中。
處理器類別的選擇
視覺算法通常需要很強(qiáng)的計(jì)算能力。當(dāng)然,所有的嵌入式系統(tǒng)一般都受限于嚴(yán)格的成本和功耗要求。在其他DSP應(yīng)用領(lǐng)域,例如,數(shù)字無線通信等,芯片設(shè)計(jì)人員使用專用協(xié)處理器和加速器來完成應(yīng)用所要求的苛刻的處理任務(wù),同時(shí)滿足了高性能、低成本和低功耗需求,從而解決了這一難題。但是,芯片用戶一般不能對這些協(xié)處理器和加速器進(jìn)行編程。
無線應(yīng)用通常能夠接受這些優(yōu)缺點(diǎn),無線應(yīng)用標(biāo)準(zhǔn)意味著不同設(shè)備設(shè)計(jì)人員使用的算法之間有很強(qiáng)的共性。然而在視覺應(yīng)用中,對算法的選擇并沒有標(biāo)準(zhǔn)約束。相反,一般可以選擇很多方法來解決某一特殊的視覺問題。因此,視覺算法是非常多樣的,往往隨著時(shí)間的變化而迅速變化。結(jié)果,與數(shù)字無線和以壓縮技術(shù)為主的消費(fèi)類視頻設(shè)備等應(yīng)用相比,視覺應(yīng)用并不傾向于采用非可編程加速器和協(xié)處理器。
但是很難同時(shí)實(shí)現(xiàn)高性能、低成本和低功耗以及可編程功能。專用硬件通常能夠以低成本實(shí)現(xiàn)高性能,但是可編程能力較弱。通用CPU具有可編程能力,但是性能較差,性價(jià)比不高,能效也較低。要求較高的嵌入式視覺應(yīng)用通常結(jié)合使用多個(gè)處理單元,例如,可能會包括:
●通用CPU,用于啟發(fā)式復(fù)雜判決、網(wǎng)絡(luò)訪問、用戶接口、存儲管理和總體控制等。
●高性能數(shù)字信號處理器,用于實(shí)時(shí)中等速率處理,不太復(fù)雜的算法等。
●用于簡單算法像素速率處理的一個(gè)或者多個(gè)高度并行的引擎。
任何處理器在理論上都可以用于嵌入式視覺,目前最有可能的類型是:
●高性能嵌入式CPU
●專用標(biāo)準(zhǔn)產(chǎn)品(ASSP)與CPU相結(jié)合
●具有CPU的圖形處理單元(GPU)
●具有加速器以及CPU的數(shù)字信號處理器
●移動(dòng)“應(yīng)用處理器”
●具有CPU的現(xiàn)場可編程門陣列(FPGA)
各類處理器,及其在嵌入式視覺應(yīng)用上的關(guān)鍵優(yōu)缺點(diǎn)
高性能嵌入式CPU
在很多情況下,嵌入式CPU不能提供足夠的性能實(shí)現(xiàn)要求較高的視覺算法——也不能夠以可以接受的價(jià)格或者功耗來滿足性能要求。通常,存儲器帶寬是關(guān)鍵性能瓶頸,因?yàn)橐曈X算法通常使用大量的數(shù)據(jù),不會重復(fù)訪問相同的數(shù)據(jù)。嵌入式CPU的存儲器系統(tǒng)無法設(shè)計(jì)適應(yīng)這類數(shù)據(jù)流。然而,與大部分處理器相類似,隨著時(shí)間的推移,嵌入式CPU的性能在逐漸增強(qiáng),在某些情況下,能夠提供足夠的性能。
在可能的情況下,有足夠的理由在CPU上運(yùn)行視覺算法。首先,大部分嵌入式系統(tǒng)需要CPU來實(shí)現(xiàn)各種功能。如果所需要的視覺功能能夠通過這種CPU來實(shí)現(xiàn),那么,相對于多處理器解決方案相比,這降低了系統(tǒng)的復(fù)雜度。而且,大部分視覺算法一開始是在PC上開發(fā)的,使用了通用CPU及其相關(guān)的軟件開發(fā)工具。PC CPU和嵌入式CPU (及其相關(guān)的工具)之間的相似性意味著,與其他類型的嵌入式視覺處理器相比,一般比較容易在嵌入式CPU上通過嵌入方式實(shí)現(xiàn)視覺算法。最后,嵌入式CPU 使用起來通常比其他類型的嵌入式視覺處理器更簡單,這是因?yàn)槠湎鄬χ庇^的體系結(jié)構(gòu)、成熟的工具以及其他的應(yīng)用開發(fā)基礎(chǔ)支持平臺等,例如,操作系統(tǒng)。
結(jié)合了CPU的ASSP
ASSP 是專用、集成度很高的芯片,定制用于特殊應(yīng)用或者專業(yè)應(yīng)用。ASSP可以采用CPU,或者使用單獨(dú)的CPU芯片。憑借專業(yè)化,與其他類型的處理解決方案相比,ASSP通常具有優(yōu)異的成本和能效。在其他技術(shù)中,ASSP通過使用專用協(xié)處理器和加速器來提高效率。而且,由于ASSP主要集中在專業(yè)應(yīng)用上,因此,通常需要大量的應(yīng)用軟件。
這種專業(yè)化使得ASSP能夠?qū)崿F(xiàn)很高的效率,但是,也帶來了很大的局限:缺乏靈活性。設(shè)計(jì)用于某一應(yīng)用的 ASSP一般不能用于其他應(yīng)用,甚至目標(biāo)應(yīng)用相關(guān)的應(yīng)用。ASSP使用唯一的體系結(jié)構(gòu),與其他類型的處理器相比,更難進(jìn)行編程。實(shí)際上,某些ASSP并不支持用戶編程。另一方面的考慮是風(fēng)險(xiǎn)問題。ASSP通常由小供應(yīng)商提供,這可能會增加難以提供芯片的風(fēng)險(xiǎn),或者無法提供后續(xù)產(chǎn)品以幫助系統(tǒng)設(shè)計(jì)人員更新其設(shè)計(jì),設(shè)計(jì)人員不得不從頭開始進(jìn)行設(shè)計(jì)。
具有CPU的GPU
GPU主要是用于3D圖形,并且越來越多的用于實(shí)現(xiàn)其他功能,例如,視覺應(yīng)用等。目前,個(gè)人計(jì)算機(jī)的GPU傾向于可編程,除了3D圖形還能完成其他功能。這類GPU被稱為“通用GPU”,或者“GPGPU”。 GPU有很強(qiáng)的并行處理能力。它們在個(gè)人計(jì)算機(jī)上是獨(dú)一無二的??梢悦赓M(fèi)使用GPU軟件開發(fā)工具,從GPGPU開始進(jìn)行編程并不是很復(fù)雜。出于這些原因,在PC上第一次開發(fā)其計(jì)算機(jī)視覺算法的開發(fā)人員通常采用GPU作為并行處理引擎,他們出于仿真或者原型開發(fā)的目的,需要加速算法的執(zhí)行。
GPU 緊密集成了通用CPU,有時(shí)候是在同一芯片上。然而,GPU芯片的一種局限是目前能夠集成的CPU類型有限,而且支持這類集成的CPU操作系統(tǒng)也很有限。目前,可以提供設(shè)計(jì)用于智能電話和平板電腦等產(chǎn)品的低成本、低功耗GPU。但是,這些GPU一般不是GPGPU,因此,除了3D圖形之外,將其用在其他應(yīng)用中有很大的難度。
具有加速器以及CPU的數(shù)字信號處理器
數(shù)字信號處理器是專門用于信號處理算法和應(yīng)用的微處理器。對于視覺應(yīng)用核心的信號處理等任務(wù),這種專業(yè)化使得數(shù)字信號處理器的效率要遠(yuǎn)遠(yuǎn)高于通用CPU。而且,與其他類型的并行處理器相比,數(shù)字信號處理器相對比較成熟,使用起來更方便。
但是,雖然數(shù)字信號處理器在視覺算法上的性能和效率要高于通用CPU,但仍然難以提供足夠的性能來滿足算法要求。出于這一原因,DSP一般需要一個(gè)或者多個(gè)輔助協(xié)處理器。因此,視覺應(yīng)用中一個(gè)典型的DSP芯片包括了CPU、數(shù)字信號處理器以及多個(gè)協(xié)處理器。這種異質(zhì)結(jié)合能夠產(chǎn)生很好的性能和很高的效率,但也難以編程。實(shí)際上,DSP供應(yīng)商一般不支持用戶對協(xié)處理器進(jìn)行編程;而是讓協(xié)處理器運(yùn)行芯片供應(yīng)商開發(fā)的軟件函數(shù)庫。
移動(dòng)“應(yīng)用處理器”
移動(dòng)“應(yīng)用處理器”是集成度非常高的芯片系統(tǒng),一般主要設(shè)計(jì)用于智能電話,而不是其他應(yīng)用。應(yīng)用處理器通常包括高性能CPU內(nèi)核,以及各種特殊的協(xié)處理器,例如,數(shù)字信號處理器、GPU、視頻處理單元(VPU)、2D圖形處理器,以及圖像采集處理器等。
這些芯片專門針對電池供電應(yīng)用進(jìn)行了設(shè)計(jì),因此,能效非常高。而且,由于圍繞智能電話和平板電腦的應(yīng)用越來越重要,因此,移動(dòng)應(yīng)用處理器一般有很強(qiáng)的軟件開發(fā)基礎(chǔ)支持平臺,包括,低成本開發(fā)電路板、Linux和Android端口等。然而,正如前面章節(jié)對數(shù)字信號處理器的討論,應(yīng)用處理器中的專用協(xié)處理器一般不是用戶可編程的,限制了它們在視覺應(yīng)用中的發(fā)展。
具有CPU的FPGA
FPGA是靈活的邏輯芯片,可以在門級和模塊級進(jìn)行重新配置。這一靈活性使得用戶能夠隨時(shí)實(shí)現(xiàn)定制滿足應(yīng)用需求的計(jì)算結(jié)構(gòu)。它還支持選擇滿足應(yīng)用需求的I/O接口和片內(nèi)外設(shè)。能夠定制計(jì)算結(jié)構(gòu),結(jié)合現(xiàn)代FPGA中大量的資源,同時(shí)實(shí)現(xiàn)了高性能和良好的性價(jià)比和能效比。
但是,使用FGPA實(shí)際上是硬件設(shè)計(jì)功能,而不是軟件開發(fā)工作。一般在寄存器傳送級(RTL)使用硬件描述語言(Verilog或者VHLD)來進(jìn)行 FPGA設(shè)計(jì),寄存器傳送級是很低的抽象級。與使用本文討論的其他類型的處理器相比,這使得FPGA設(shè)計(jì)非常耗時(shí),成本也高。
雖然如此,使用FPGA越來越方便了,這是由多種因素造成的。首先,是所謂的“IP模塊”庫——可重用FPGA設(shè)計(jì)組件庫,其功能越來越強(qiáng)大了。在某些情況下,這些庫能夠直接滿足視覺算法要求。在其他一些應(yīng)用中,它們還支持視頻I/O端口或者掃描線緩沖等功能。而且,F(xiàn)GPA供應(yīng)商及其合作伙伴提供了越來越多的參考設(shè)計(jì)——采用了FPGA的可重用系統(tǒng)設(shè)計(jì),面向?qū)I(yè)應(yīng)用。最后,利用高級綜合工具,設(shè)計(jì)人員使用高級語言,在FPGA中實(shí)現(xiàn)視覺和其他算法,而且效率越來越高。用戶可以在FPGA中實(shí)現(xiàn)性能相對低一些的CPU。而且,在少量的應(yīng)用中,F(xiàn)PGA制造商在器件中集成了高性能CPU。
評論
查看更多