Processing Options For Implementing Vision Capabilities in Embedded Systems 作者:嵌入式視覺(jué)聯(lián)盟 BDTI創(chuàng )始人兼總裁Jeff Bier 隨著(zhù)功能越來(lái)越強大的處理器、圖像傳感器、存儲器和其他半導體器件以及相關(guān)算法的出現,可以在多種嵌入式系統中實(shí)現計算機視覺(jué)功能,通過(guò)視頻輸入來(lái)分析周?chē)h(huán)境。微軟的Kinect游戲控制器和Mobileye的輔助駕駛系統等產(chǎn)品都非常重視嵌入式視覺(jué)技術(shù)的發(fā)展潛力。結果,很多嵌入式系統設計人員開(kāi)始思考如何實(shí)現嵌入式視覺(jué)功能。本文研究嵌入式視覺(jué)的發(fā)展機遇,對比實(shí)現這一技術(shù)的各種處理器選擇,介紹幫助工程師在其設計中采用視覺(jué)功能的業(yè)界聯(lián)盟。 “嵌入式視覺(jué)”這一名詞是指在嵌入式系統中使用計算機視覺(jué)技術(shù)。換句話(huà)說(shuō),“嵌入式視覺(jué)”是指從視覺(jué)輸入中提取出其背后含義的嵌入式系統。與過(guò)去10年中無(wú)線(xiàn)通信技術(shù)的流行相類(lèi)似,嵌入式視覺(jué)技術(shù)有望在今后10年得到廣泛應用。 很明顯,嵌入式視覺(jué)技術(shù)能夠為多種應用帶來(lái)巨大的價(jià)值(圖1)。兩個(gè)例子是,Mobileye基于視覺(jué)的輔助駕駛系統,用于幫助防止車(chē)輛事故的發(fā)生;以及MG國際公司的泳池安全系統,旨在防止游泳溺水。還有一些純粹的怪才發(fā)明,Intellectual Ventures的激光滅蚊槍?zhuān)O計用于防止人們感染瘧疾等。 ![]() 圖1.嵌入式視覺(jué)是從計算機視覺(jué)應用開(kāi)始的,這些應用包括,裝配線(xiàn)檢查、光學(xué)字符識別、機器人技術(shù)、監控和軍事系統等。但是,最近幾年,對降低成本提高性能的需求加速了這一技術(shù)在各種其他市場(chǎng)上的廣泛應用。 正如同高速無(wú)線(xiàn)互聯(lián)是從高成本新奇技術(shù)起步一樣,目前為止,嵌入式視覺(jué)技術(shù)一般只用于復雜昂貴的系統中,例如,毛發(fā)移植的手術(shù)機器人,制造業(yè)的質(zhì)量控制檢查系統等。 數字集成電路的發(fā)展是高速無(wú)線(xiàn)技術(shù)從新奇發(fā)展到主流的關(guān)鍵因素。芯片速度足夠快,成本足夠低,能效足夠高時(shí),高速無(wú)線(xiàn)技術(shù)便成為市場(chǎng)主流技術(shù)。今天,人們能夠以不到100美元的價(jià)格購買(mǎi)寬帶無(wú)線(xiàn)調制解調器。 同樣的,數字芯片技術(shù)的進(jìn)步為嵌入式視覺(jué)的大批量應用鋪平了道路(圖2)。與無(wú)線(xiàn)通信相似,嵌入式視覺(jué)需要很強的處理能力——特別是,越來(lái)越多的應用采用了高分辨率攝像機,開(kāi)始使用多臺攝像機。以足夠低的成本實(shí)現這類(lèi)處理能力,從而促進(jìn)大批量應用,這是一個(gè)很大的挑戰。事實(shí)是嵌入式視覺(jué)應用需要很強的可編程能力,進(jìn)一步增大了這一挑戰的難度。在無(wú)線(xiàn)應用中,標準意味著(zhù)不同手機之間的基帶算法不會(huì )有太大的變化,與之相比,在嵌入式視覺(jué)應用中,通過(guò)獨特的算法,有可能得到更好的結果——實(shí)現更有價(jià)值的功能。 ![]() 圖2.嵌入式視覺(jué)輔助系統涉及到硬件、半導體和軟件元器件供應商,子系統開(kāi)發(fā)人員、系統集成商,以及最終用戶(hù),還有實(shí)現未來(lái)突破的基礎研究等。本文主要關(guān)注圖中顯示的嵌入式視覺(jué)算法處理技術(shù)。 采用嵌入式視覺(jué),業(yè)界進(jìn)入了一種“良性循環(huán)”,這是很多其他數字信號處理(DSP)應用領(lǐng)域的特點(diǎn)。目前雖然很少有專(zhuān)門(mén)用于嵌入式視覺(jué)應用的芯片,但是,這些應用越來(lái)越多的采用了針對其他應用開(kāi)發(fā)的高性能、高性?xún)r(jià)比處理芯片,包括,數字信號處理器、CPU、FPGA和GPU等。這些芯片單位成本、單位功率的可編程性能越來(lái)越高,因此,能夠支持實(shí)現大批量嵌入式視覺(jué)產(chǎn)品。這些大批量應用也相應的引起了硅片提供商更多的關(guān)注,他們會(huì )提供更好的性能、更高的效率和可編程處理能力。 處理選擇 如前所述,視覺(jué)算法通常需要很強的計算能力。當然,所有的嵌入式系統一般都受限于嚴格的成本和功耗要求。在其他DSP應用領(lǐng)域,例如,數字無(wú)線(xiàn)通信等,芯片設計人員使用專(zhuān)用協(xié)處理器和加速器來(lái)完成應用所要求的苛刻的處理任務(wù),同時(shí)滿(mǎn)足了高性能、低成本和低功耗需求,從而解決了這一難題。但是,芯片用戶(hù)一般不能對這些協(xié)處理器和加速器進(jìn)行編程。 無(wú)線(xiàn)應用通常能夠接受這些優(yōu)缺點(diǎn),無(wú)線(xiàn)應用標準意味著(zhù)不同設備設計人員使用的算法之間有很強的共性。然而在視覺(jué)應用中,對算法的選擇并沒(méi)有標準約束。相反,一般可以選擇很多方法來(lái)解決某一特殊的視覺(jué)問(wèn)題。因此,視覺(jué)算法是非常多樣的,往往隨著(zhù)時(shí)間的變化而迅速變化。結果,與數字無(wú)線(xiàn)和以壓縮技術(shù)為主的消費類(lèi)視頻設備等應用相比,視覺(jué)應用并不傾向于采用非可編程加速器和協(xié)處理器。 但是很難同時(shí)實(shí)現高性能、低成本和低功耗以及可編程功能。專(zhuān)用硬件通常能夠以低成本實(shí)現高性能,但是可編程能力較弱。通用CPU具有可編程能力,但是性能較差,性?xún)r(jià)比不高,能效也較低。要求較高的嵌入式視覺(jué)應用通常結合使用多個(gè)處理單元,例如,可能會(huì )包括: ●通用CPU,用于啟發(fā)式復雜判決、網(wǎng)絡(luò )訪(fǎng)問(wèn)、用戶(hù)接口、存儲管理和總體控制等。 ●高性能數字信號處理器,用于實(shí)時(shí)中等速率處理,不太復雜的算法等。 ●用于簡(jiǎn)單算法像素速率處理的一個(gè)或者多個(gè)高度并行的引擎。 任何處理器在理論上都可以用于嵌入式視覺(jué),目前最有可能的類(lèi)型是: ●高性能嵌入式CPU ●專(zhuān)用標準產(chǎn)品(ASSP)與CPU相結合 ●具有CPU的圖形處理單元(GPU) ●具有加速器以及CPU的數字信號處理器 ●移動(dòng)“應用處理器” ●具有CPU的現場(chǎng)可編程門(mén)陣列(FPGA) 各類(lèi)處理器,及其在嵌入式視覺(jué)應用上的關(guān)鍵優(yōu)缺點(diǎn) 高性能嵌入式CPU 在很多情況下,嵌入式CPU不能提供足夠的性能實(shí)現要求較高的視覺(jué)算法——也不能夠以可以接受的價(jià)格或者功耗來(lái)滿(mǎn)足性能要求。通常,存儲器帶寬是關(guān)鍵性能瓶頸,因為視覺(jué)算法通常使用大量的數據,不會(huì )重復訪(fǎng)問(wèn)相同的數據。嵌入式CPU的存儲器系統無(wú)法設計適應這類(lèi)數據流。然而,與大部分處理器相類(lèi)似,隨著(zhù)時(shí)間的推移,嵌入式CPU的性能在逐漸增強,在某些情況下,能夠提供足夠的性能。 在可能的情況下,有足夠的理由在CPU上運行視覺(jué)算法。首先,大部分嵌入式系統需要CPU來(lái)實(shí)現各種功能。如果所需要的視覺(jué)功能能夠通過(guò)這種CPU來(lái)實(shí)現,那么,相對于多處理器解決方案相比,這降低了系統的復雜度。而且,大部分視覺(jué)算法一開(kāi)始是在PC上開(kāi)發(fā)的,使用了通用CPU及其相關(guān)的軟件開(kāi)發(fā)工具。PC CPU和嵌入式CPU (及其相關(guān)的工具)之間的相似性意味著(zhù),與其他類(lèi)型的嵌入式視覺(jué)處理器相比,一般比較容易在嵌入式CPU上通過(guò)嵌入方式實(shí)現視覺(jué)算法。最后,嵌入式CPU使用起來(lái)通常比其他類(lèi)型的嵌入式視覺(jué)處理器更簡(jiǎn)單,這是因為其相對直觀(guān)的體系結構、成熟的工具以及其他的應用開(kāi)發(fā)基礎支持平臺等,例如,操作系統。 結合了CPU的ASSP ASSP是專(zhuān)用、集成度很高的芯片,定制用于特殊應用或者專(zhuān)業(yè)應用。ASSP可以采用CPU,或者使用單獨的CPU芯片。憑借專(zhuān)業(yè)化,與其他類(lèi)型的處理解決方案相比,ASSP通常具有優(yōu)異的成本和能效。在其他技術(shù)中,ASSP通過(guò)使用專(zhuān)用協(xié)處理器和加速器來(lái)提高效率。而且,由于A(yíng)SSP主要集中在專(zhuān)業(yè)應用上,因此,通常需要大量的應用軟件。 這種專(zhuān)業(yè)化使得ASSP能夠實(shí)現很高的效率,但是,也帶來(lái)了很大的局限:缺乏靈活性。設計用于某一應用的ASSP一般不能用于其他應用,甚至目標應用相關(guān)的應用。ASSP使用唯一的體系結構,與其他類(lèi)型的處理器相比,更難進(jìn)行編程。實(shí)際上,某些ASSP并不支持用戶(hù)編程。另一方面的考慮是風(fēng)險問(wèn)題。ASSP通常由小供應商提供,這可能會(huì )增加難以提供芯片的風(fēng)險,或者無(wú)法提供后續產(chǎn)品以幫助系統設計人員更新其設計,設計人員不得不從頭開(kāi)始進(jìn)行設計。 具有CPU的GPU GPU主要是用于3D圖形,并且越來(lái)越多的用于實(shí)現其他功能,例如,視覺(jué)應用等。目前,個(gè)人計算機的GPU傾向于可編程,除了3D圖形還能完成其他功能。這類(lèi)GPU被稱(chēng)為“通用GPU”,或者“GPGPU”。GPU有很強的并行處理能力。它們在個(gè)人計算機上是獨一無(wú)二的?梢悦赓M使用GPU軟件開(kāi)發(fā)工具,從GPGPU開(kāi)始進(jìn)行編程并不是很復雜。出于這些原因,在PC上第一次開(kāi)發(fā)其計算機視覺(jué)算法的開(kāi)發(fā)人員通常采用GPU作為并行處理引擎,他們出于仿真或者原型開(kāi)發(fā)的目的,需要加速算法的執行。 GPU緊密集成了通用CPU,有時(shí)候是在同一芯片上。然而,GPU芯片的一種局限是目前能夠集成的CPU類(lèi)型有限,而且支持這類(lèi)集成的CPU操作系統也很有限。目前,可以提供設計用于智能電話(huà)和平板電腦等產(chǎn)品的低成本、低功耗GPU。但是,這些GPU一般不是GPGPU,因此,除了3D圖形之外,將其用在其他應用中有很大的難度。 具有加速器以及CPU的數字信號處理器 數字信號處理器是專(zhuān)門(mén)用于信號處理算法和應用的微處理器。對于視覺(jué)應用核心的信號處理等任務(wù),這種專(zhuān)業(yè)化使得數字信號處理器的效率要遠遠高于通用CPU。而且,與其他類(lèi)型的并行處理器相比,數字信號處理器相對比較成熟,使用起來(lái)更方便。 但是,雖然數字信號處理器在視覺(jué)算法上的性能和效率要高于通用CPU,但仍然難以提供足夠的性能來(lái)滿(mǎn)足算法要求。出于這一原因,DSP一般需要一個(gè)或者多個(gè)輔助協(xié)處理器。因此,視覺(jué)應用中一個(gè)典型的DSP芯片包括了CPU、數字信號處理器以及多個(gè)協(xié)處理器。這種異質(zhì)結合能夠產(chǎn)生很好的性能和很高的效率,但也難以編程。實(shí)際上,DSP供應商一般不支持用戶(hù)對協(xié)處理器進(jìn)行編程;而是讓協(xié)處理器運行芯片供應商開(kāi)發(fā)的軟件函數庫。 移動(dòng)“應用處理器” 移動(dòng)“應用處理器”是集成度非常高的芯片系統,一般主要設計用于智能電話(huà),而不是其他應用。應用處理器通常包括高性能CPU內核,以及各種特殊的協(xié)處理器,例如,數字信號處理器、GPU、視頻處理單元(VPU)、2D圖形處理器,以及圖像采集處理器等。 這些芯片專(zhuān)門(mén)針對電池供電應用進(jìn)行了設計,因此,能效非常高。而且,由于圍繞智能電話(huà)和平板電腦的應用越來(lái)越重要,因此,移動(dòng)應用處理器一般有很強的軟件開(kāi)發(fā)基礎支持平臺,包括,低成本開(kāi)發(fā)電路板、Linux和Android端口等。然而,正如前面章節對數字信號處理器的討論,應用處理器中的專(zhuān)用協(xié)處理器一般不是用戶(hù)可編程的,限制了它們在視覺(jué)應用中的發(fā)展。 具有CPU的FPGA FPGA是靈活的邏輯芯片,可以在門(mén)級和模塊級進(jìn)行重新配置。這一靈活性使得用戶(hù)能夠隨時(shí)實(shí)現定制滿(mǎn)足應用需求的計算結構。它還支持選擇滿(mǎn)足應用需求的I/O接口和片內外設。能夠定制計算結構,結合現代FPGA中大量的資源,同時(shí)實(shí)現了高性能和良好的性?xún)r(jià)比和能效比。 但是,使用FGPA實(shí)際上是硬件設計功能,而不是軟件開(kāi)發(fā)工作。一般在寄存器傳送級(RTL)使用硬件描述語(yǔ)言(Verilog或者VHLD)來(lái)進(jìn)行FPGA設計,寄存器傳送級是很低的抽象級。與使用本文討論的其他類(lèi)型的處理器相比,這使得FPGA設計非常耗時(shí),成本也高。 雖然如此,使用FPGA越來(lái)越方便了,這是由多種因素造成的。首先,是所謂的“IP模塊”庫——可重用FPGA設計組件庫,其功能越來(lái)越強大了。在某些情況下,這些庫能夠直接滿(mǎn)足視覺(jué)算法要求。在其他一些應用中,它們還支持視頻I/O端口或者掃描線(xiàn)緩沖等功能。而且,FGPA供應商及其合作伙伴提供了越來(lái)越多的參考設計——采用了FPGA的可重用系統設計,面向專(zhuān)業(yè)應用。最后,利用高級綜合工具,設計人員使用高級語(yǔ)言,在FPGA中實(shí)現視覺(jué)和其他算法,而且效率越來(lái)越高。用戶(hù)可以在FPGA中實(shí)現性能相對低一些的CPU。而且,在少量的應用中,FPGA制造商在器件中集成了高性能CPU。 總結 采用嵌入式視覺(jué),業(yè)界進(jìn)入了一種“良性循環(huán)”,這是很多其他DSP應用領(lǐng)域的特點(diǎn)。目前雖然很少有專(zhuān)門(mén)用于嵌入式視覺(jué)應用的芯片,但是,這些應用越來(lái)越多的采用了針對其他應用開(kāi)發(fā)的高性能、高性?xún)r(jià)比處理芯片,包括,數字信號處理器、CPU、FPGA和GPU等。這些芯片單位成本、單位功率的可編程性能越來(lái)越高,因此,能夠支持實(shí)現大批量嵌入式視覺(jué)產(chǎn)品。這些大批量應用也相應的引起了硅片提供商更多的關(guān)注,他們會(huì )提供更好的性能、更高的效率和可編程處理能力。嵌入式視覺(jué)聯(lián)盟還可以幫助工程師利用這些芯片來(lái)開(kāi)發(fā)多種新奇的產(chǎn)品。 |