SIFT GFTT SURF CNN HOG

智慧型視覺處理器助臂力 嵌入式電腦視覺邁入新境界

2016-03-14
目標檢測和識別是電腦視覺系統不可或缺的組成元素。在電腦視覺中,首先是將場景分解成電腦可以看到和分析的元件。第一步是特徵抽取(Feature Extraction),即檢測圖像中的關鍵點並取得有關這些關鍵點的有意義資訊。特徵抽取過程本身包含圖像準備、關鍵點檢測、產生描述符(Descriptor)和分類等四個基本階段。在實際運作上,這個過程會對每一個像素進行檢查,以檢視該像素是否有特徵存在。
特徵抽取演算法將圖像描述為指向圖像中關鍵元素的一組特徵向量。本文將回顧一系列的特徵檢測演算法,在這個過程中,看看一般目標識別和具體特徵識別在多年來所經歷過的發展歷程。

早期特徵檢測器並不合用

Scale Invariant Feature Transform(SIFT)和Good Features To Track(GFTT)是早期所採用的特徵抽取技術。但這些演算法是屬於運算密集型的,涉及到大量的浮點運算,所以它們不適合應用在即時的嵌入式平台(圖1)。

圖1 SIFT是一種運算密集型的演算法

以SIFT為例,這種高精度的演算法在許多情況下都能產生不錯的結果,它會找到具有子像素精度的特徵,但只保留類似角落(Corner-like)的特徵。然而,儘管SIFT非常準確,但要即時實現也很複雜,並且通常使用較低的輸入圖像解析度。

因此,SIFT在目前並不常用,它主要是當作衡量新演算法品質的一個參考基準。為了降低運算複雜度的需求,最終將導致更容易實現的新型特徵抽取演算法之開發。

第二代演算法各有所長

Speeded Up Robust Features(SURF)是最早考慮實現效率的特徵檢測器之一。它以不同矩形尺寸中的一系列加法和減法取代SIFT中浩繁的運算。而且,這些運算容易向量化,需要的記憶體也較少。

接下來,Histograms of Oriented Gradients(HOG)是一種在汽車產業中常用的熱門行人檢測演算法,它可以變更修改以納入不同的尺度和檢測不同大小的物件,並使用塊(Block)之間的重疊量來提高檢測品質,且不會增加運算量。一般來說,傳統的記憶體系統每次只處理一個查閱資料表,但HOG不像傳統的記憶體系統,而是採用並行記憶體存取技術,因此可根據記憶體的並行程度加快查找速度(圖2)。

圖2 SURF和ORB等運算效率超高的演算法為CNN之類的更強大框架提供了實現的可能性

然後,Oriented FAST and Rotated BRIEF(ORB)這種用來替代SIFT的高效演算法將使用二進位的描述符來抽取特徵。ORB將方向的增加與FAST角點檢測器相結合,並旋轉BRIEF描述符,使其與角方向對齊。二進位描述符與FAST和Harris Corner等低權重函數的結合,產生一個運算效率非常高而且相當準確的描述圖。

CNN:嵌入式平台目標識別的下一個新領域

在具有相機功能智慧手機、平板電腦、穿戴式裝置、監控系統和汽車系統中加進智慧視覺功能的做法,將這個產業帶到一個十字路口,需要更先進的演算法來實現運算密集型應用,從而提供更多周遭資訊及情境感知的使用者經驗。因此,需要再一次降低運算複雜度來適應這些行動和嵌入式裝置內所使用強大演算法的嚴苛要求。

對更高精度和更靈活演算法的需求,不可避免會催生出向量加速深度學習演算法(Vector Accelerated Deep Learning Algorithm),如卷積神經網路(CNN),用來對圖像中的目標進行分類、定位和檢測。例如,在使用交通標誌識別的情況下,建基於CNN的演算法在識別準確度上勝過目前所有的目標檢測演算法。

除了高品質外,CNN的自我調整能力非常強,而這正是它可以勝過傳統目標檢測演算法的優點。它可以在不改變演算法代碼的情況下快速地被重新訓練(Tuning)以適應新的目標。因此,在不久的將來,CNN和其他深度學習演算法將會成為主流的目標檢測方法。

CNN對行動和嵌入式裝置有非常嚴苛的運算要求。卷積是CNN運算的主要部分。CNN的二維卷積層可以讓使用者利用重疊卷積,透過對同一輸入同時執行一個或多個過濾程式來提高處理效率。所以,對於嵌入式平台,設計師應該能夠非常有效率地執行卷積,以充分利用CNN流。

事實上,CNN嚴格來說並不是一種演算法,而是一種實現框架。它可以讓使用者最佳化基本構件塊,並建立一個高效的神經網路檢測應用。因為CNN框架是針對每個像素逐一(Pixel by Pixel)執行,而且計算每一像素是要求非常嚴苛的運算,所以需要更多的運算量(圖3)。

圖3 CNN中最後的池化層

視覺處理器日臻完善 完美目標識別將成真

CEVA已找到兩種其他方法來提高算算效率,同時也繼續開發即將面世的演算法,如CNN。第一種是並行隨機記憶體存取機制,它可實現多純量(Multi-scalar)功能,讓向量處理器來管理並行負載能力。第二種是滑動視窗機制,它可以提高資料的利用率,以及防止相同的資料被多次重複載入。第三種是二維資料處理機制,它可以提高資料的利用率,也可防止相同的資料被多次重複載入。在大多數的成像過濾程式中會有大量的資料重疊,而在大型的輸入幀中會有幀卷。這種隨著處理器向量尺寸而增加的資料重疊,可用來減少處理器和記憶體之間的資料流量,並據此降低功耗。這種利用大規模資料重疊的機制讓開發人員在深度學習演算法中自由地實現高效的卷積,一般會使數位訊號處理器(DSP)媒體存取控制(MAC)運算達到極高的利用率。

目標識別的深度學習演算法再一次提高了運算複雜度的門檻,因此需要一種新型的智慧視覺處理器,這種視覺處理器要能夠提高處理效率和準確度,以因應所面臨到的挑戰。最新的視覺和成像平台CEVA-XM4,結合了視覺演算法專業知識與處理器架構技術,提供了一個經過精心設計的視覺處理器,以因應嵌入式電腦視覺的挑戰(圖4)。

圖4 支援純量代碼向量化的CEVA-XM4並行隨機記憶體存取機制

(本文作者為CEVA系統架構總監)

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!