999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式機器視覺系統優化研究

2012-07-13 06:29:18付連銳王兆仲
電子設計工程 2012年14期
關鍵詞:嵌入式優化系統

付連銳,王兆仲

(北京航空航天大學圖像處理中心 北京 100191)

嵌入式系統是以應用為中心,以計算機技術為基礎,并且軟硬件可裁剪,適用于應用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統[1]。嵌入式機器視覺系統是指用嵌入式計算機處理由光學傳感器接收到的圖像信息,以實現對物體的檢測和識別的裝置,如數碼相機、手持二維碼識別設備,體感交互游戲機等。由于機器視覺系統需要進行大量復雜的數據運算,因此目前大多數的機器視覺系統還是基于PC系統構建,但隨著近年來嵌入式系統的高速發展,嵌入式機器視覺系統越來越多地應用于工業檢測與控制、智能交通[2]、安防、醫療器械、機器人導航及消費電子等領域。

嵌入式機器視覺系統的性能主要取決于硬件和軟件兩方面。目前應用于嵌入式機器視覺系統的硬件平臺主要有Intel基于x86架構的Atom平臺、TI基于ARM-DSP的OMAP系列平臺、NVIDIA基于ARM-GeForce的 Tegra系列平臺、IBM等基于PowerPC的處理平臺等,其中ARM-DSP是一種高性價比的、應用廣泛的體系結構。除了硬件平臺之外,嵌入式操作系統的選擇對機器視覺系統的性能也很重要,如開機時間,系統穩定性等。嵌入式操作系統的種類比較多,其中較為 流 行 的 主 要 有 μC/OS、Windows CE、VxWorks 、Android、iOS、Meego、QNX和 Linux等。在諸多嵌入式操作系統中,Linux以其內核穩定、支持多種硬件平臺、完全免費、源代碼完全開放、可裁剪定制、易于移植的特性,成為大多數廠家的絕佳選擇。此外,由于嵌入式機器視覺系統具有處理數據量大,算法復雜的特點,對嵌入式機器視覺應用程序的優化也至關重要。

文中以采用ARM-DSP結構的Beagleboard-xM開發板為例,構建了用于目標檢測跟蹤的嵌入式機器視覺系統,從操作系統和機器視覺應用程序方面對系統進行優化,并充分利用Cotex-A處理器的NEON加速技術,顯著提高了嵌入式機器視覺系統的性能。

1 系統軟硬件組成

文中所采用的嵌入式機器視覺系統的硬件組成如圖1所示。其中DM3730處理器是由TI生產的單片系統(SoC)處理器[3],采用了 POP(Package on Package)封裝技術,內含 1G主頻的ARM Cortex-A8,主頻800 M的TMS320C64+內核和512 M的LPDDR內存。該處理器有較強的多媒體圖像、視頻處理能力,特別適合于構建嵌入式機器視覺系統。Beagleboard-xM沒有Flash,系統是從MicroSD卡啟動的。PMIC為電源與音頻管理模塊,它通過McBSP總線與處理器連接。攝像頭和以太網數據通過USB接口傳給處理器,處理器運行目標檢測與跟蹤程序,并將處理結果送到LCD顯示。Minicom用于和上位機進行通訊,便于調試。

圖1 嵌入式機器視覺系統的硬件結構圖Fig.1 Hardware framework of embedded vision system

圖2為系統的軟件結構圖。在嵌入式Linux內核中包含了對CPU、USB攝像頭、電源管理設備及USB以太網等的驅動支持。其中V4L是Linux內核中關于視頻設備的API接口,UVC(USB Video Class)是為USB攝像頭提供即插即用功能的驅動模塊,在此基礎上將開源的跨平臺機器視覺庫OpenCV2.2移植到了嵌入式平臺上,并在應用程序中實現對視頻信號的采集和處理。

圖2 嵌入式機器視覺系統的軟件結構圖Fig.2 Software framework of embedded vision system

2 嵌入式Linux操作系統優化

嵌入式系統硬件資源較為有限,作為以應用為中心的專用計算機系統,需要對其在啟動速度、實時性、系統尺寸、電源管理等方面進行優化[4]。近年來,Linux憑借其優良特性廣泛地應用于嵌入式系統。但是,作為一種原本為PC機設計的操作系統,設計者開始并沒有考慮嵌入式應用對啟動速度的要求,導致其典型的啟動時間一般在幾十秒或以上,這對用戶來說是不能容忍的。此外,隨著Linux內核的不斷膨脹,啟動時間越來越長。因此,加快啟動速度已經成為嵌入式Linux系統亟待解決的關鍵問題之一。

由于成本的考慮,Beagleboard-xM平臺沒有Flash,它是從MicroSD卡啟動的。嵌入式Linux系統啟動時序如表1所示。系統上電后,內部ROM程序會從SD卡加載x-loader到SRAM。x-loader負責初始化系統(如時鐘、RAM等),并將uboot從SD卡中加載到RAM。u-boot負責將內核鏡像從SD卡加載到RAM中。內核解壓并運行,掛載文件系統,執行init進程,登錄系統,最終完成系統的啟動。編寫perl腳本記錄串口輸出的時間,開機啟動過程各部分耗時如圖3所示。在系統啟動過程中,內核解壓與運行時間、系統自啟動項加載時間占了整個系統啟動的大部分時間。

表1 嵌入式Linux啟動時序Tab.1 Embedded Linux boot sequence

圖3 嵌入式機器視覺應用程序優化結果Fig.3 Effect of embedded vision application optimization

本文對嵌入式Linux操作系統采取的優化策略如下。

1)修改并重新編譯u-boot源碼,取消開機3 s等待時間

系統會檢測在開機等待時間內用戶按鈕是否被按下,如果被按下,則可以進行設置系統環境變量,修改啟動選項等操作。這里可以跳過這一步,減少開機時間。

2)裁剪內核中不必要的功能部分

嵌入式Linux操作系統內核中除了進程管理、內存管理、任務調度等核心部分外,還提供了多種文件系統、網絡、硬件驅動、內核調試等功能模塊,但它們并非必不可少,例如手持移動終端通常不需要NTFS等文件系統,也不需要RAID和SCSI設備支持[5]。所以,根據嵌入式系統應用的具體需求配置Linux內核才能減小Linux內核的靜態映像體積,同時也能夠相應減少這些功能模塊運行時間的開銷。

3)采用“-Os-mthumb”編譯選項進行優化以減小內核鏡像大小

-Os是gcc優化選項中最深層次的優化,相當于是對代碼進行了-O2的優化,但不增加代碼尺寸。-mthumb表示使用16位短指令集,它具有更高的代碼密度,即占用存儲空間小,僅為32位ARM代碼規格的65%,但其性能卻下降的很少。

4)去掉內核打印輸出

Linux系統啟動時,一般使用串口控制臺或VGA控制臺打印內核啟動信息,打印速度取決于串口的速度和處理器的速度,這在大多數嵌入式系統中要用數百毫秒的時間。

5)用buildroot構建輕量級的根文件系統

常用于構建根文件系統的工具有OE(OpenEmbedded)和buildroot等。OE是重量型的交叉編譯系統工具,可以用來構建復雜的根文件系統,但配置和定制過程難度很大,而且要耗費約20 G的硬盤空間和十幾個小時的編譯時間。buildroot則是一個相當小巧靈活的交叉編譯工具,用它定制和調整軟件包十分方便,而且buildroot提供了類似 Linux kernel配置采用的配置菜單,易于使用。

6)桌面環境使用X11而非Gnome或KDE

X11即X Window系統,它是一種可以用于Unix和 類Unix操作系統的位圖顯示視窗系統。Gnome和KDE是兩種相對復雜的桌面環境。對于嵌入式機器視覺系統,如果用戶界面不追求華麗,可以使用更為簡潔的X11,以及簡單的桌面管理器twm。

7)禁用或暫緩啟動某些啟動項

為了加速啟動,可以禁用不必要的啟動項,甚至一些必要的啟動項可以在系統完成登錄后再啟動。具體可以通過修改/etc/init.d/下自啟動項快捷方式名稱的方法實現。

$cd/etc/init.d/

$mv S20network K20network

當系統完成開機啟動后再啟動該項目,可以用如下命令:

$K20network start

如表2所示,經過優化后,內核鏡像大小由 3.046 MB減小到2.797 MB,系統的啟動時間(從復位到開啟應用程序)由35.171 s縮短到10.056 s,基本滿足實際應用的需要。嵌入式Linux操作系統優化取得了明顯的效果。

表2 嵌入式Linux系統啟動時間表(帶網絡和攝像頭驅動)Tab.2 Boot time diagram of embedded Linux(with network and video driver)

應用在移動載體上的嵌入式機器視覺系統通常對能耗也有較高的要求。Beagleboard-xM是一款功耗較低的產品,不需要風扇冷卻。電源管理主要是由PMIC模塊實現的。另外,通過更改系統的顯示設置,如屏保時間、待機時間等,來降低能耗。

3 應用程序優化

機器視覺系統往往涉及大量復雜的計算,大多采用C/C++等高效率的語言進行開發。嵌入式系統對應用軟件的質量要求很高,在嵌入式開發中須注意對代碼進行優化,盡可能地提高代碼效率。本文從算法、代碼效率以及處理器的特性等方面出發,為開發高效率嵌入式機器視覺應用程序提供了一些經驗。

3.1 選擇合適的算法

在機器視覺算法優化過程中,速度和內存不可兼得,要想得到較快的運行速度必須適當增加內存空間的使用量。例如,在JPG圖像有Huffman編碼表,從YUV到RGB的變換也有變換表,本文計算梯度方向直方圖HOG時需要用到18個方向的三角函數。 這些運算原本較復雜,采用查表的方法之后,雖然占用了內存,但顯著提高了運行速度。

3.2 代碼效率的優化

代碼效率優化的前提是要保證程序結果的正確性,在此基礎上對空間復雜度和時間復雜度進行調整,以達到性能的提升。代碼效率優化可以采用多種方法[6]。

1)采用較短的數據類型

本文實驗中浮點數據類型用float代替double,目標檢測結果基本不變,但是運算量和所占用內存空間都相應減少。

2)switch 語句優化

對于switch語句,編譯器是按照順序進行條件比較,發現匹配時,就跳轉到滿足條件的語句執行。為了提高速度,可以把發生頻率較高的條件放在前面。

3)用指針代替數組

在許多情況下,可以用指針運算代替數組索引,編譯后常常能產生又快又短的代碼。與數組索引相比,指針一般能使代碼速度更快,占用空間更少,這在使用多維數組時差異更明顯。

4)用宏函數取代函數

函數和宏函數的區別就在于,宏函數占用大量的空間,而函數占用了時間。當函數被多次調用時,會反復進行壓棧和彈棧操作,從而消耗一些額外的時間。使用宏函數不會產生函數調用,所以僅僅占用了空間,不會增加額外的運行時間。

5)循環優化:采用循環合并與循環展開

當兩個循環的負荷都不滿時,可以把它們合并在一起組成一個循環。循環展開就是把循環計數小的循環展開,成為非循環形式的串行程序,或者把循環計數大的循環部分展開,減少循環迭代次數,這樣可以節省用于循環設置、初始化、增加和校對循環計數器的時間。

6)采用 Inline函數

在C++中,當函數前加關鍵字Inline的聲明,編譯器會用函數內部的代碼替換所有對該函數的調用。這樣可以省去調用函數指令需要的執行時間以及傳遞變元和傳遞過程需要的時間。通常,這種優化在Inline函數被頻繁調用并且只包含較短代碼的時候最有效。

7)使用增量和減量操作符

在用到自增和自減運算時應盡量使用增量和減量操作符,因為增量符語句比賦值語句更快。

3.3 充分利用處理器特性進行加速

ARM+DSP的組合在嵌入式開發中堪稱理想架構。DSP可專門用于處理密集型信號處理需求、復雜的數學函數以及圖像處理算法,而ARM則可用于實現圖形用戶界面、網絡連接及系統控制等。上面的代碼優化措施是通用的方法,如果針對處理器的特性對程序進行優化,可以得到更好的優化效果。

1)利用開發工具對DSP程序進行優化

有很多算法在DSP平臺可以實現,在ARM上也可以,但有些特定算法,如濾波、視頻編解碼等放在DSP上運行的效率較高。以往的開發中對DSP程序的優化更多是匯編程序的優化,但用匯編語言做開發和優化往往費時又費力。但是隨著開發工具的更新,現在的C代碼優化效率可達到手工匯編的90%。TI提供的 C6EZRUN工具[7]可以使開發人員能在DSP上運行ARM代碼,而無需修改,并且從ARM到DSP代碼的轉換效率非常高。TI的另一個開發工具C6EZAccel則提供了一個包括數百個DSP優化型信號處理算法的程序庫,通過ARM API加快開發進度。開發人員可以將更多的精力投入到算法設計中。

2)充分利用ARM處理器的NEON技術進行加速

ARM高級單指令多數據(SIMD)擴展亦稱NEON技術[8],它是一種由 ARM開發的 64/128位混合 SIMD體系結構,可以提升多媒體和信號處理應用程序的性能。其關鍵功能包括對齊和未對齊數據訪問,支持整型定點和單精度浮點數據類型、與 ARM核心的緊密耦合,以及具有多個視圖的大型寄存器文件。NEON指令在ARM和Thumb-2中都可用。要生成NEON指令,必須在命令行中指定采用NEON技術的Cortex處理器。ARMv7之前的體系結構不提供NEON支持。如果要對進行優化,需要增加編譯選項“-mcpu=cortex-a8-mfpu=neon”。

3.4 應用程序優化結果

在嵌入式實時程序設計時可以運用上面介紹的一種或多種方法來優化代碼。以上方法主要是為了提高代碼的執行效率,但會增加代碼長度,降低可讀性。在嵌入式程序設計中應合理地使用這幾種技術以達到較好的優化效果。

運用上述方法,對基于HOG特征的物體檢測算法[9]進行優化,運行時間如圖3所示。該算法是目前公認的準確率最高的目標檢測算法。對汽車、大巴、自行車、行人的檢測結果如圖4所示??紤]到該算法的復雜性以及檢測精度的要求,我們采用的是浮點數優化。結果表明,經過優化后程序運行速度約為原來的2.5倍。

4 結束語

隨著嵌入式系統的高速發展,嵌入式機器視覺系統的應用也越來越廣泛。如何把運算量大、算法復雜的機器視覺應用程序移植到嵌入式平臺上并進行優化設計是重要的課題。本文針對嵌入式機器視覺系統的特點,在操作系統方面對內核和文件系統進行了精簡,在應用程序方面做了大量的優化,并充分利用Cotex-A處理器的NEON加速技術,顯著提高了嵌入式機器視覺系統的性能,對嵌入式機器視覺系統的開發具有借鑒意義。

圖4 基于HOG特征的物體檢測Fig.4 HOG feature based object detection

[1]何立民.嵌入式系統的定義與發展歷史[J].單片機與嵌入式系統應用,2004(1):6.

HE Li-min.The definition and development history of embedded system[J].Microcontroller&Embedded System,2004(1):6.

[2]Wafi Z N K,Ahmad R B,Paulraj M P.Highways traffic surveillance System (HTSS) using OpenCV[C]//Proceedings of IEEE Control and System Graduate Research Colloquium(ICSGRC),2010:44-48.

[3]BeagleBoard.org.BeagleBoard-xM Rev C System Reference Manual(Revision C.1.0)[EB/OL].(2010-04-04).http://beagleboard.org.

[4]Chung K H,Choi M S,Ahn K S.A study on the packaging for fast boot-up time in the embedded linux[C]//Proceedings of 13th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications,2007:89-94.

[5]劉剛,趙劍川.Linux系統移植[M].北京:清華大學出版社,2011.

[6]Bryant R E,O’Hallaron D R.Computer Systems:A Programmer’s Perspective[M].2nd Edition.New Jersey:Addison Wesley,2010.

[7]Daniel Allred.Using the C6EZRun DSP Development Tool for DSP+ARM SoCs.[EB/OL]. (2011-05).http://www.ti.com/lit/an/sprabg1a/sprabg1a.pdf.

[8]ARM Ltd.RealView?編譯工具編譯器參考指南[EB/OL].(2009).http://infocenter.arm.com/help/topic/com.arm.doc.dui 0348bc/DUI0348BC_rvct_comp_ref_guide.pdf.

[9]Felzenszwalb P F,Girshick R B,McAllester D.Cascade object detection with deformable part models[C]//Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition,2010:2241-2248.

猜你喜歡
嵌入式優化系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
主站蜘蛛池模板: 综合网久久| 亚洲无码91视频| 88国产经典欧美一区二区三区| 国产一级毛片在线| 无码高潮喷水在线观看| 亚洲色图欧美视频| 亚洲av无码专区久久蜜芽| 欧美一道本| 无码高清专区| 亚洲色精品国产一区二区三区| 久久99国产综合精品女同| 一级爆乳无码av| 久久精品这里只有国产中文精品| 久久人搡人人玩人妻精品 | 日本午夜影院| a级毛片免费在线观看| 波多野结衣在线se| 国产va在线观看| 欧美在线国产| 伦伦影院精品一区| 男女男精品视频| 在线观看视频99| 成人福利在线视频| 久久亚洲国产视频| 国精品91人妻无码一区二区三区| 91福利在线看| 白浆免费视频国产精品视频| 日韩视频福利| 亚洲va精品中文字幕| 国产精品亚洲va在线观看| 国产乱人伦AV在线A| 欧美日本在线观看| av一区二区无码在线| 91亚洲精选| 3D动漫精品啪啪一区二区下载| 青草午夜精品视频在线观看| 欧美日韩在线观看一区二区三区| 一本大道香蕉久中文在线播放| 国产女人在线| 久久精品无码专区免费| 久久国产精品嫖妓| 欧美有码在线观看| 亚洲综合色在线| 中文字幕日韩丝袜一区| 亚洲男人的天堂网| av在线人妻熟妇| 日本午夜在线视频| 999国产精品| 欧美一级99在线观看国产| 国产精品部在线观看| 色综合日本| 小蝌蚪亚洲精品国产| 91色老久久精品偷偷蜜臀| 中国国语毛片免费观看视频| 国产精品.com| 无码一区18禁| 国产成人无码AV在线播放动漫| 思思99思思久久最新精品| 国产一级做美女做受视频| 午夜国产在线观看| 亚洲日韩高清在线亚洲专区| 激情综合激情| 伊人久久大香线蕉成人综合网| 91精品福利自产拍在线观看| 欧美成人精品高清在线下载| 成人午夜视频免费看欧美| 国产天天射| 精品五夜婷香蕉国产线看观看| 国产在线无码一区二区三区| 国产精品美女自慰喷水| 67194在线午夜亚洲 | 中文字幕一区二区视频| 无码有码中文字幕| 中文字幕资源站| 99精品视频播放| 国产在线视频福利资源站| 欧美福利在线| 免费啪啪网址| 国产在线视频福利资源站| 香蕉久久国产精品免| 看国产毛片| 色窝窝免费一区二区三区|