利用OpenCV加速嵌入式系統開(kāi)發(fā)
嵌入式處理器的性能日益提升、價(jià)格不斷下降,帶來(lái)日益廣泛的嵌入式計算機視覺(jué)應用,包括從安全及工業(yè)監控到自動(dòng)化車(chē)輛與汽車(chē)安全等領(lǐng)域。開(kāi)發(fā)人員可充分利用越來(lái)越高級的硬件,在不影響基本質(zhì)量的同時(shí),更快速、更低成本地開(kāi)發(fā)具有突破性性能的產(chǎn)品。
本文引用地址:http://dyxdggzs.com/article/257852.htm開(kāi)發(fā)周期縮短而帶來(lái)的巨大壓力,迫使嵌入式系統開(kāi)發(fā)人員必須高效利用嵌入式領(lǐng)域與傳統PC工作站領(lǐng)域的現有技術(shù);適應并復用現有穩定軟件可為嵌入式開(kāi)發(fā)人員提供不斷開(kāi)發(fā)重大新項目的必備基礎。
OpenCV就是PC軟件進(jìn)入嵌入式開(kāi)發(fā)領(lǐng)域的一個(gè)實(shí)例。OpenCV是一款免費的開(kāi)源計算機視覺(jué)庫,可提供從影像過(guò)濾及轉換,到特性抽象與機器學(xué)習等幾十個(gè)不同類(lèi)別的數百種算法。它已被成千上萬(wàn)的開(kāi)發(fā)人員所使用,而且還在不斷發(fā)展之中。目前有很多庫是針對嵌入式系統的,但很少有像OpenCV這樣能夠在計算機視覺(jué)領(lǐng)域得到普遍推廣,而且涵蓋如此豐富的算法。
圖1:OpenCV庫縮略圖。
盡管OpenCV最初來(lái)源于Intel的x86架構,但它也不失為目前功能日益強大的嵌入式器件的自然選擇。OpenCV現已移植到嵌入式處理器常用CPU選擇ARM架構上,這點(diǎn)也并不奇怪。我們完全能夠在嵌入式器件上原封不動(dòng)地采用OpenCV的交叉編譯版,不過(guò),存儲器限制與其它架構注意事項可能會(huì )帶來(lái)一個(gè)技術(shù)難題。因此我們需要對OpenCV進(jìn)行優(yōu)化,以使它在新的主機上實(shí)現更高性能與更高效率。
對嵌入式平臺而言,“優(yōu)化”這個(gè)詞以前意味著(zhù)要無(wú)限制地研究低級架構中不重要的細節,反復編寫(xiě)匯編語(yǔ)言代碼。然而幸運的是,隨著(zhù)嵌入式處理器復雜性的提升,嵌入式開(kāi)發(fā)工具已變得日益強大,用戶(hù)友好性也得以大幅提高。
典型的嵌入式器件可描述為系統級芯片(SoC),其中不僅包含ARM處理器,而且還含有多種外設與加速器,可將CPU從相關(guān)支持任務(wù)中解放出來(lái)。SoC甚至可能具有多個(gè)ARM內核,或其它功能齊全的協(xié)處理器。
圖2:SoC基本內部架構。
現在,SoC最重要的部分不是硬件本身,而是可幫助開(kāi)發(fā)人員通過(guò)ARM應用程序高效利用SoC全部性能的支持性軟件,這不僅包括優(yōu)化C語(yǔ)言編譯器的熟悉工具,還包括加速常見(jiàn)信號處理任務(wù)的優(yōu)化軟件庫,以及處理SoC中不同模塊之間低級互動(dòng)的驅動(dòng)器。此外,它可能還包括支持特定廠(chǎng)商協(xié)處理器與加速器的特殊工具。這些工具相結合,可使嵌入式優(yōu)化成為高級應用開(kāi)發(fā)中一個(gè)簡(jiǎn)單透明的組成部分。
通過(guò)高效集成OpenCV等高級軟件與器件廠(chǎng)商提供的低端軟件,進(jìn)而創(chuàng )建高效可行的系統,是嵌入式開(kāi)發(fā)的重要挑戰之一。例如,我們不妨考慮這樣一種情況,SoC中包括了針對高強度計算的全功能數字信號處理器(DSP)。該DSP可能非常適合OpenCV的影像分析算法,尤其是在CPU缺乏原生浮點(diǎn)指令情況下更是如此,不過(guò),要讓OpenCV在DSP架構上運行,可能還有大量工作要做。讓OpenCV等高級軟件實(shí)現分區,并在整個(gè)SoC上無(wú)縫運行是軟件開(kāi)發(fā)工具的重要使命。
從嵌入式開(kāi)發(fā)人員的角度來(lái)說(shuō),將應用的不同部分透明地交給SoC上最合適的模塊來(lái)處理是再好不過(guò)的了。這樣做能夠幫助開(kāi)發(fā)人員將更多資源集中到終端產(chǎn)品開(kāi)發(fā)方面,從而花費更少的時(shí)間處理特定平臺問(wèn)題,這是嵌入式器件的獨特優(yōu)勢。支持上述要求的軟件工具則可在基本的處理功能與硬件功能基礎上更進(jìn)一步,這對開(kāi)發(fā)人員而言具有更重要的意義,器件廠(chǎng)商必須滿(mǎn)足這一要求,才能保持自身的競爭優(yōu)勢。
圖3:嵌入式應用分區后,在異構多內核SoC上運行更高效。
評論