嵌入式實(shí)時(shí)面部檢測(cè)應(yīng)用設(shè)計(jì)指南
單指令多數(shù)據(jù)(SIMD)架構(gòu)能夠在多數(shù)據(jù)元上運(yùn)行單指令,從而縮短代碼長(zhǎng)度并提高性能。使用向量處理器架構(gòu),可通過(guò)加法器/減法器并行數(shù)量因子,加速這些積分和的計(jì)算。如果向量寄存器可以加載16像素,而且這些像素可同時(shí)加到下一向量,加速因子是16.顯然,為處理器增加類(lèi)似的向量處理單元可以使這一因子翻倍。
在下一面部檢測(cè)階段,在多個(gè)位置及按多種尺度掃描圖像。采用Adaboost強(qiáng)大的區(qū)分器(以矩形特征為基礎(chǔ)的區(qū)分器),以決定搜索窗口是否包含面部。再一次,向量處理器具有明顯的優(yōu)勢(shì) - 具有同時(shí)將多個(gè)位置數(shù)據(jù)與閾值進(jìn)行對(duì)比的能力。
假設(shè)在一個(gè)圖像中,大多數(shù)子圖像都不是面部例,可以提供的并行比較器越多,加速越快。
例如,如果架構(gòu)設(shè)計(jì)具有在1個(gè)循環(huán)中比較8個(gè)要素中的2個(gè)向量的能力,則排除16個(gè)位置的子圖像僅需1個(gè)循環(huán)。為了簡(jiǎn)化數(shù)據(jù)加載,并且高效率地利用向量處理器加載/儲(chǔ)存,各個(gè)位置可以在空間上彼此接近。
為了獲得高度并行的代碼,架構(gòu)應(yīng)支持指令預(yù)測(cè)。這樣可以使如果-則-否則(if-then-else)構(gòu)造導(dǎo)致的分支用順序碼來(lái)代替,從而減少循環(huán)數(shù)和縮短代碼長(zhǎng)度。允許條件執(zhí)行,有能力綜合各種條件,在控制代碼中實(shí)現(xiàn)更高的效率。此外,非順序碼,如分支和回路,經(jīng)設(shè)計(jì)具有零循環(huán)損失,而不需要煩瑣的技術(shù),如動(dòng)態(tài)分支預(yù)測(cè)和增加RISC處理器功率損耗的推理執(zhí)行。
一個(gè)關(guān)鍵的應(yīng)用挑戰(zhàn)是存儲(chǔ)器帶寬,該應(yīng)用需要對(duì)每幀視頻流進(jìn)行掃描,以執(zhí)行面部檢測(cè)。由于其數(shù)據(jù)量較大,視頻流無(wú)法儲(chǔ)存在緊耦合存儲(chǔ)器(TCM)中。例如,一個(gè)YUV 4:2:0格式的高清幀占用了3MB數(shù)據(jù)存儲(chǔ)器。這種高存儲(chǔ)器帶寬導(dǎo)致功率損耗更高,并需要更昂貴的DDR存儲(chǔ)器,從而使材料清單成本更高。一個(gè)完美的解決方案是采用數(shù)據(jù)分塊(data tiling)來(lái)儲(chǔ)存像素,其中2維數(shù)據(jù)塊在單次突發(fā)中由DDR存取,極大地改善了DDR的效率。直接存儲(chǔ)器存?。―MA)可以在外部存儲(chǔ)器和核心存儲(chǔ)器子系統(tǒng)之間傳輸數(shù)據(jù)。在最終面部檢測(cè)應(yīng)用階段,包含檢測(cè)面部的子圖像尺寸重新調(diào)整到固定尺寸輸出窗口。
當(dāng)圖像在多個(gè)比例掃描時(shí),還在檢測(cè)階段使用圖像尺寸調(diào)整過(guò)程。尺寸調(diào)整算法廣泛應(yīng)用于圖像處理,用于視頻放大和縮小。面部檢測(cè)應(yīng)用中執(zhí)行的算法是雙三次算法。三次卷積插值根據(jù)離規(guī)定輸入坐標(biāo)最近的16個(gè)像素的加權(quán)平均值來(lái)確定灰度值,并將該值分配給輸出坐標(biāo)。首先,在一個(gè)方向(水平方向)上執(zhí)行四個(gè)一維三次卷積,然后,在垂直方向執(zhí)行更多個(gè)一維三次卷積。這意味著要執(zhí)行一個(gè)二維三次卷積,而所需的是一個(gè)一維三次卷積。
向量處理器內(nèi)核具有強(qiáng)大的加載-儲(chǔ)存能力,能夠快速、有效地存取數(shù)據(jù)是此類(lèi)應(yīng)用的關(guān)鍵特征,其中算法在數(shù)據(jù)塊上運(yùn)行。可通過(guò)在單循環(huán)中從存儲(chǔ)器訪問(wèn)2維存儲(chǔ)器塊來(lái)滿足尺寸調(diào)整算法優(yōu)化。
這一特點(diǎn)使處理器能夠有效地實(shí)現(xiàn)較高的存儲(chǔ)器帶寬,不需要載入不必要的數(shù)據(jù)或執(zhí)行數(shù)據(jù)操作的負(fù)荷計(jì)算單元。此外,能夠在數(shù)據(jù)存取期間轉(zhuǎn)置數(shù)據(jù)且不存在任何循環(huán)損失,這使得轉(zhuǎn)置的數(shù)據(jù)塊能夠在單一循環(huán)中存取,對(duì)于執(zhí)行水平過(guò)濾和垂直過(guò)濾非常切實(shí)可行。處理器的功率是其執(zhí)行強(qiáng)大卷積能力的結(jié)果,可以在單一循環(huán)中執(zhí)行并行的過(guò)濾器。
這里是一個(gè)有效解決方案的實(shí)例。在一個(gè)循環(huán)中加載4x8字節(jié)塊,然后每個(gè)迭代利用4個(gè)像素,在垂直方向執(zhí)行三次卷積。這4個(gè)像素預(yù)先安排在4個(gè)獨(dú)立的向量寄存器中,因此,我們能夠同時(shí)獲得8個(gè)結(jié)果。然后,同時(shí)對(duì)這些中間結(jié)果進(jìn)行準(zhǔn)確處理,但是,以轉(zhuǎn)置格式加載這些數(shù)據(jù),從而完成水平過(guò)濾。為了保持結(jié)果準(zhǔn)確度,需要用結(jié)果四舍五入值(rounding value)和后移(post-shift)初始化。過(guò)濾器配置應(yīng)當(dāng)在不要求專(zhuān)門(mén)指令的條件下實(shí)現(xiàn)這些特征。
總之,這種并行向量處理解決方案核心可在加載/儲(chǔ)存單元操作和處理單元之間實(shí)現(xiàn)平衡。一般說(shuō)來(lái),數(shù)據(jù)帶寬限制及就功耗和晶片面積而言的處理單元的成本限制了執(zhí)行效率;不過(guò),顯然,可以實(shí)現(xiàn)標(biāo)量處理器架構(gòu)的重要加速。
多媒體器件的多用途可編程HD視頻和圖像平臺(tái)
CEVA-MM3000是可以集成到SoC中的可擴(kuò)展的完全可編程多媒體平臺(tái),以全軟件形式提供1080p 60fps視頻解碼和編碼、ISP功能和視覺(jué)應(yīng)用。該平臺(tái)由兩個(gè)專(zhuān)用處理器,即流處理器和向量處理器組成,集成到一個(gè)完整的多核系統(tǒng)中,包括本地存儲(chǔ)器和共享存儲(chǔ)器、外設(shè)、DMA和與外部總線的標(biāo)準(zhǔn)橋接。這款全面的多內(nèi)核平臺(tái)專(zhuān)為滿足移動(dòng)產(chǎn)品和其它消費(fèi)者電子產(chǎn)品的低功耗要求而設(shè)計(jì)。
向量處理器包括兩個(gè)獨(dú)立的向量處理單元(VPU)。VPU負(fù)責(zé)所有的向量計(jì)算,包括向量間運(yùn)算(利用單指令多數(shù)據(jù)流)和向量?jī)?nèi)部運(yùn)算。向量間指令可在16個(gè)8位(字節(jié))或8個(gè)16位(字)元上運(yùn)行,可以使用向量寄存器對(duì),形成32位(雙字)元。VPU具有在單循環(huán)中完成6個(gè)線路(taps)中8個(gè)并行濾波器(taps)的能力。
雖然VPU是作為向量處理器的計(jì)算主力,但是,向量加載和儲(chǔ)存單元(VLSU)作為從數(shù)據(jù)存儲(chǔ)器子系統(tǒng)向向量處理器及從向量處理器向數(shù)據(jù)存儲(chǔ)器子系統(tǒng)傳輸數(shù)據(jù)的工具。VLSU具有適用于加載和儲(chǔ)存操作的256位帶寬,并支持不對(duì)齊(non-aligned)存取。VLSU備有在單循環(huán)中存取二維數(shù)據(jù)塊的能力,并支持不同的數(shù)據(jù)塊尺寸。
圖4:加載4x4像素塊
為了簡(jiǎn)化VPU任務(wù),在讀/寫(xiě)向量寄存器時(shí),VLSU可以靈活地操作數(shù)據(jù)結(jié)構(gòu)。在數(shù)據(jù)存取期間,數(shù)據(jù)塊可以轉(zhuǎn)置,而不存在任何循環(huán)損失,能夠在單循環(huán)中實(shí)現(xiàn)轉(zhuǎn)置數(shù)據(jù)塊的存取。轉(zhuǎn)置功能可以動(dòng)態(tài)設(shè)定或清除。采用這種方式,水平過(guò)濾器和垂直過(guò)濾器可以重復(fù)使用相同的功能,從而節(jié)省每個(gè)過(guò)濾器的開(kāi)發(fā)和調(diào)試時(shí)間,同時(shí)縮小程序存儲(chǔ)器的占位面積。
結(jié)論
對(duì)于采用CEVA-MM3000平臺(tái)的消費(fèi)產(chǎn)品來(lái)說(shuō),嵌入式視覺(jué)應(yīng)用是有效地執(zhí)行算法多樣性的一個(gè)實(shí)例,例如具備裁剪和尺寸調(diào)整功能的面部檢測(cè)。根據(jù)預(yù)測(cè),將來(lái)類(lèi)似的和更復(fù)雜的應(yīng)用需求將會(huì)增長(zhǎng),所有這些應(yīng)用都可以利用CEVA-MM3000架構(gòu)的可編程性和可擴(kuò)展性。
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂) 光電開(kāi)關(guān)相關(guān)文章:光電開(kāi)關(guān)原理
評(píng)論