Profile - TW010


TW010

智慧型即時動態手勢辨識系統



Semi-Finals


[print]


Project Paper - view as Preliminary(2010/07/21), Final(2010/11/01), Draft, Latest

1. 設計介紹 (Preliminary Paper)

設計背景

        隨著人們生活水準的提高以及對舒適生活的需求,打造一個便利及舒適便利的智慧生活空間,已成為全球性的共同議題。友善便利的人機介面是實現智慧生活空間,操控物件的基本需求。許多研究均顯示,以視覺為基礎的手勢控制是多數人認為最自然且直覺的操控方式,因此,手勢控制已成為新一代人機互動的重點發展項目。

        目前有許多的應用都採用具有直覺、人性化的自然手勢操控,做為人機互動的輸入模式。因此,無論在業界或學界均有許多研究朝向手勢控制方面發展。然而,在這些已被提出的技術中,大都以軟體演算法發展手勢偵測與辨識,故需耗費較多的電腦資源,及額外配置電腦以執行軟體演算法,除了不易達成即時控制需求外,也難與既有被操控系統進行整合。

        以硬體實現動態自然手勢控制的困難在於,大量視訊資料的即時處理與儲存,以及高階辨識演算的複雜運算流程。因此在以往的研究中,雖然有少數以硬體實作的手勢控制系統,但這些技術大都以處理靜態手勢為主,且其辨識能力侷限於特定的簡單應用。以現階段手勢辨識技術而言,欲完全取代傳統遙控開關或如滑鼠等指向裝置,仍存在一些困難,其癥結在於辨識率與處理速度均無法達到實用程度。本案規劃以軟硬體共同設計的方法,發展一個實作智慧型動態手勢控制系統的即時嵌入式平台,作為未來發展智慧型人機介面之應用。


設計考量

        手勢控制系統其設計考量主要有三大要點:

  1. 減少環境改變或雜訊對辨識結果的影響。
  2. 建立自然直覺的手勢操控介面。
  3. 達到即時操控的運算速度。

設計目的

        本作品設計之目的在於開發出以視覺為基礎的動態手勢控制系統,讓使用者可在公共場所、居家環境中,以自然且非接觸的方式操縱視聽裝置,如圖1~2所示。藉以提高介面親和力以及便利性,並降低裝置開發成本。
           

圖1 系統於室外之操控示意圖  圖2 系統於室內之操控示意圖

 
作品介紹與開發板選用原因

        為解決以往家電遙控需透過實體遙控器操控的不便之處,本作品採用機器視覺並透過硬體實現演算法以提高即時性,辨識使用者動態手勢並解譯其動作意涵,進而轉換目標裝置所能接受的控制指令,達到即時且非接觸式控制之目的。實作上採以低成本的ALTERA Cyclone II EP2C70 FPGA為主的DE2-70(圖3),原因在於本作品主要進行即時視訊影像的運算,對於記憶體的頻寬要求較高,由於該開發板所提供兩個SDRAM較DE2多出一倍的容量及頻寬,另有SSRAM及FLASH記憶體,且提供完整的影像輸入與輸出介面及其他周邊資源支援度較充足。

 

圖3 Altera DE2-70開發板


 


應用領域

  1. 家庭電子產品:本作品雖實作於電視控制,但未來仍可將控制方式改變,進而操控更多裝置,作為手勢操控多家電的基礎。
  2. 體感遊戲:若利用本作品提出的手勢控制介面,另外搭配互動場景與遊戲劇本,可創造出豐富的體感遊戲。
  3. 多媒體互動廣告:本作品對環境有較佳的相容性,室內與室外的場景均可達到精準的辨識成效,因此可應用到多媒體廣告,透過使用者手勢互動來增加商品親和力與清晰度。

目標使用者

  1. 家電業者:提高服務品質,改變傳統的手持操控方式。
  2. 互動遊戲業者:創造更多互動遊戲的可能性。
  3. 廣告業者:包裝成為新互動介面,增加目標商品的鮮明度與區別度。
(Revision: 19 / 2010-09-17 21:33:13)

2. 功能描述 (Final Project Paper)

功能介紹 

  1. 動態手勢感控:偵測具某程度動態的膚色物件,並判定為有控制意圖的對象。
  2. 物件動向感知:感測具有控制意圖的對象物件其動向大致為何。
  3. 物件追蹤:鎖定具有控制意圖的對象物件並記錄其移動資訊。
  4. 動態環境:讓系統不限於固定環境,自主化根據環境調整相關參數。
  5. 指令容錯處理:利用快速動態的起手手勢來避免無意圖動作產生誤控的情形。
  6. 階層型指令解譯:透過控制階段的推演,來擴充可表達的指令,藉以解決可表達指令有限之問題。
  7. 手勢遙控:讓使用者可以免持遙控器,使用非接觸式的自然手勢(方向性揮舞)操控電器。

實現方法

  1. 膚色偵測與光流(optical flow)演算法:由於膚色範圍在YCbCr色彩空間中有較集中的特性,設計膚色偵測演算法模組是以範圍值限制方式來取得膚色的影像位置。光流演算法實現方式是以硬體方式計算兩張連續影像間之光流變化,並以區塊方式計算出該區塊的總光流變化量,並設一門檻值以過濾干擾,經過這兩個演算法模組的處理就可得到移動中膚色物體的區域。
  2. 特徵擷取:從移動中的膚色物體位置資訊,擷取具有較強訊息的特徵資訊。
  3. 追蹤演算法:判斷具有移動手勢特徵的區域,加以鎖定並持續追蹤。
  4. 辨識演算法:將六種常用的自然手勢之空間中移動的軌跡資訊降維,並採用狀態機(state machine)加以解譯手勢動作的意含,再與鎖定的特徵軌跡做比對,判斷出確切的手勢命令。
  5. 電器控制介面:由PIO輸出控制信號,經由放大器連接到紅外線遙控裝置或直接連結到電器來操控。 
(Revision: 14 / 2010-09-17 21:01:15)

3. 效能參數 (Final Project Paper)

        本作品主要應用於即時影像處理及辨識,視訊輸入為NTSC規格,實作上須達到每秒30個畫面的處理速度,而處理完成的影像解析度為640 × 480 像素(pixel),每秒60個畫面輸出至VGA螢幕,設計之初即針對此規格選擇有較大記憶體容量的DE2-70教育實驗板,詳細規劃軟硬體架構在FPGA中須完成的功能區塊。在開發過程中則依所需求的效能調整軟硬體所佔的比例以符合經濟效益,考慮純硬體的設計可加快處理速度但會佔用晶片面積,而使用軟體的功能實現不需耗費硬體成本但速度無法提昇,最終設計以能達到所需效能最低門檻為前提來平衡軟硬體實作的功能區塊,以耗費不到25%的FPGA容量及使用極少量的內建硬體乘法器的資源下,做出可處理影像解析度640 × 480 像素,達到每秒30個畫面的動態手勢辨識速度,表1為實際使用的資源明細。

表1 硬體資源使用表

Flow Status Sucessful - Thu Sep 16 06:28:10 2010
Quartus II Version 9.1 Build 304 01/25/2010 SP 1 SJ Full Version
Revision Name Optical_Flow
Top-level Entity Name Hand_Gesture
Family Cyclone II
Device EP2C70F896C6
Timing Models Final
Met timing requirements Yes
Total logic elements 16,385 / 68,416 ( 24 % )
   Total combinational functions 14,440 / 68,416 ( 21 % )
   Dedicated logic registers 6,322 / 68,416 ( 9 % )
Total registers 6520
Total pins 447 / 622 ( 72 % )
Total virtual pins 0
Total memory bits 461,728 / 1,152,000 ( 40 % )
Embedded Multiplier 9-bit elements 4 / 300 ( 1 % )
Total PLLs 3 / 4 ( 75 % )

(Revision: 7 / 2010-09-17 06:25:39)

4. 設計架構 (Preliminary Paper)

系統架構

        本系統採用DE2-70開發板,結合CCD攝影機、顯示器(VGA Monitor)以及紅外線遙控器(IR Remote),整體架構與週邊裝置之連結示意圖,如圖4所示。在系統開發過程,可利用連結於DE2-70的顯示器進行系統測試與除錯。整體之運作係以CCD攝影機做為影像擷取的輸入裝置,藉由連接DE2-70內部的影像解碼器(TV Decoder),取得外部的影像資訊進行即時動態物件偵測、追蹤與辨識處理。處理後的結果再轉譯成控制命令,經由紅外線遙控器傳達控制訊息,進而達到操控電視(如選台、聲音調節等)的目的。
 

圖4 DE2-70開發板與週邊裝置連結示意圖

 
硬體方塊圖

        本系統之軟硬體架構如圖5所示,主要包括硬體單元與軟核心單元。硬體單元負責影像前處理、物件特徵擷取及區塊運算處理;軟核心單元則是用來執行智慧型動態物件偵測與辨識演算法。由於擷取的視訊資料十分龐大(每秒30幅,每幅640x480像素),因此必須將中值濾波器(median filter)、光流法及膚色偵測等軟體演算法,做適當的修改與設計,降低資料量之處理,以利硬體電路之實作。接著,再將擷取之物件特徵饋入NIOS II嵌入式處理器,執行追蹤與辨識的演算法,最後再將結果由並列輸入輸出介面(parallel input/output, PIO)傳送至外部做為控制訊號的輸出。

        以硬體電路實作軟體演算法,可加速系統運算過程,縮短反應時間,達到即時影像辨識的目的。為了能夠將這些軟體演算法成功移植至硬體電路,須充分了解硬體電路特性,做適當的電路規劃設計,以發揮DE2-70強大功能,達到各項功能的正確性,滿足應用上的需求。

圖5 系統功能方塊圖


        此外由於硬體單元需高速處理視訊資料,在設計中預留了除錯用的迴路,以多工器方式將處理過程送至VGA螢幕做監看,並使用DE2-70板上的切換開關做為來源選擇,其整體軟硬體系統架構與多工器切換除錯模組如圖6所示。

圖6 整體系統架構圖

       本系統軟核心的部分採用SOPC進行開發,其建置架構與相關元件如圖7所示。規劃以NIOS II CPU為主的軟核心架構,軟體以C語言開發,程式置於8MB的FLASH內,由於處理追蹤與辨識的演算法均有即時性的需求,因此保留2MB的SSRAM給即時作業系統(RTOS)及演算法運作用,並建構PIO做為外部裝置控制用。
 
圖7 SOPC建置架構

軟體流程圖

        於 µC/OS II即時作業系統中,規劃有追蹤、辨識和週邊裝置控制等三個主要任務,軟體運作流程如圖8所示,系統之軟體運作流程說明如下:
 
        系統啟動時,會先載入MainRTOS.C進行系統時脈、I/O、計時器設定以及等初始化動作,以決定系統運作之速度及設定硬體基本組態,確保後續動作之正常。完成初始化後,建立物件追蹤、辨識及I/O控制等工作任務及記憶空間分配。接著,啟動即時作業系統,將控制權移轉,以10ms 作為一個基本的時間標記(tick),由排程程式依配置之優先權,選擇下一個可以執行的處理程序,以多工模式同時執行物件追蹤、辨識及I/O控制三個已建立之工作任務。

 

圖8 軟體流程圖

(Revision: 7 / 2010-09-17 06:31:31)

5. 設計方法 (Final Project Paper)

        本作品採軟硬體共同設計的方式,完成一套高性能的即時影像辨系統。該系統整合數個不同的智慧型演算法以提昇系統之運算效能。演算法實作的部份主要可分為三種模組:硬體模組、軟核心模組與自定義模組,其實現方法分述如下:


A.    硬體模組

硬體模組具有並行處理高效能之特性,因此主要功能在於擷取視訊影像後進行影像區塊化處理並取得手部影像。實現之演算法根據其步驟可分為:中值濾波器、膚色偵測與移動偵測。當視訊接收成功後,首先透過視訊解碼模組取得影像資訊,並透過中值濾波器進行影像前處理。由於主要目的在於解析動態手勢,因此將「兼具膚色與動態的物件」視為主要辨識對象,且為了避免外在環境干擾與降低運算複雜度,本作品結合光流梯度與膚色偵測,針對膚色區域做光流梯度偵測,經測試後可於連續影像中取得運動中的手部位置資訊,並兼具速度與準確率。其實現方法如下:

 

(1)   中值濾波器

影像前處理的目的是對所擷取的影像,在未進行主要演算法前,以影像處理方法去除環境雜訊以利後續的處理工作。本作品對每幅輸入影像以中值濾波前處理,其方法係以3×3子框架掃描,對涵蓋到範圍內的9個像素值取中值代表該區塊,如此可濾除極端的雜訊,亦可使影像邊緣較為平滑。

 

(2)    膚色偵測

膚色偵測主要透過實際環境的膚色分布情形,透過限制範圍以遮罩方式濾除非膚色區域,我們選擇以YCbCr色彩空間進行膚色偵測,原因為視訊影像由Video端子輸入,經ADV7180視訊解碼IC解譯後為ITU-R 656格式的YCbCr 訊號無需轉換,而膚色範圍在YCbCr色彩空間中的值是連續的,且對環境光源容忍度較大。如公式(1)CrCb通道進行範圍限制,忽略Y(亮度)以避免亮度的干擾,其膚色分佈情形如圖9所示。

               (1)

圖9 膚色於YCbCr色彩空間分布情形

(3)    光流梯度

光流梯度之計算係採用HornSchunck所提出之光流估測公式,其中的光流梯度可記錄光流資訊,藉此可反推出影像平面中物件的運動方向,其餘的追蹤運算由於遞迴運算較複雜且龐大而以其他追蹤演算法加以取代,並於軟核心中進行運算。抽離追蹤運算的結果,經實驗測試後證實仍能保有光流演算法抵抗微量干擾變動的優點。

 

光流法的基礎原理主要來自於亮度守恆定律,意指在一影像平面中,隨著時間的推演()與空間中光流的位移量(),影像平面將會始終維持亮度,此即為亮度守恆定律。

        (2)

經過若干運算後可取得公式(3),其中表示分別對進行偏微分:

                                          (3)

 (可視為方向的瞬時速度) (可視為方向的瞬時速度)

                                              (4)

公式(4)即為為亮度守恆方程式,因此可看出光流的瞬時速度可透過亮度對xyt進行偏微取得,但亦可得知,在已知亮度的情況下,光靠亮度守恒方程式無法取得uv(因為僅有一個方程式無法取得唯一解),故需加入平滑限制條件以取得一般情況下的光流值。本作品著重於即時處理之效能,因此利用公式(5)(6)計算xy方向動量與公式(7)計算光流梯度,整合出光流梯度強度。為簡化其運算式,以3×3的區塊為例,如圖10所示,為時間的影像子區塊,則為時間的影像子區塊,其光流梯度運算方式僅需根據區塊內的像素所對應到,並將代入式(8)即可取得區域的光流值,以此類推更大區塊面積之運算。

  (5)

  (6)

  (7)

 

10 光流梯度對照圖

 

              (8)

 

 

        硬體實作上,各點運算結果以箭號標記向量大小與方向,以18×18為單位,可表達16個方位、4種線段長度(向量大小),總共有64種箭號,如圖11所示。

圖11 表達光流梯度用的64種向量箭號

B.     軟核心模組

軟核心模組首先取得硬體模組處理後的特徵資料,進行手勢追蹤、辨識與指令解譯之工作。由於該類演算法需採用進階的智慧型演算法,以硬體基本運算單元較不易實現,因此利用軟核心可程式化的特性以達到其目的。

(1)   動態手勢追蹤

手勢追蹤主要目的為記錄手移動的軌跡以供後續手勢辨識使用,追蹤時須滿足準確性與流暢性。為了達到追蹤之準確性,本作品使用卡曼濾波器(Kalman filter)進行追蹤,追蹤過程將以密度區塊方式進行搜尋,藉此可避免單點極端值影響。膚色範圍的光流密度最大區域是從自定義模組3×35×57×7區塊特徵值暫存器取得,計算平均強度,以最強區塊質心位置為中心點,隨著時間推演記錄其中心點之移動軌跡,追蹤軌跡如圖12所示。其中F為狀態轉換矩陣,代表手勢質心位置的移動模型,本作品選擇加速度模型;u為手勢質心位置,H為觀測矩陣,表示推測值與實際值間的關係;S為轉換矩陣共變異數K為卡曼增益以公式(11)計算。以卡曼濾波器追蹤,記錄軌跡,得到平滑軌跡。

                                                                 (9)

                                                                      (10)

                             (11)

 

kalman.jpg

12 卡曼濾波器追蹤軌跡分佈圖

(2)    動態手勢辨識

每個連續動作可藉由手勢的移動和停頓切割為數個分解動作,再個別對分解動作進行辨識。手勢中的招手、揮手的辨識方法,主要針對每個分解動作以上下振幅、波形重複頻率等做為特徵資料來與手勢模型庫中的樣本進行比對藉此判別其手勢意圖。而向上、下、左、右揮動的手勢只有在招手動作被辨識後才進入辨識階段,故只須分析手勢的運動方向與其相對位置變化狀態來判斷其含意,接下來再依辨識出的手勢動作產生相對應的控制訊號來驅動電器的動作。圖13即為上揮手勢由左至右的分解畫面,第一列為原始畫面;第二列為膚色偵測的結果;第三列為光流梯度的結果;第四列為手勢追蹤的結果。


圖13 手勢辨識的分解畫面

(3)    動態手勢定義

本作品將手勢辨識應用於目標電器來進行開啟、關閉、轉台與音量控制等操作。以六種動態手勢操作電視為例,如圖14所示,啟動辨識系統後,起手動作或稱喚醒動作用於開啟電視電源或啟動一般手勢辨識用,設定為上下揮手數次,由於其軌跡具有上下迅速來回移動的特點,一般生活中較少出現,如此可避免誤動作而開啟電器的情形發生。當起手動作被辨識後有一段短暫時間允許一般手勢的辨識,此時往右揮或往左揮可增減音量,往上揮或往下揮則可選擇頻道,一旦停止操控手勢後數秒鐘,則停止一般手勢的辨識,以防止不特定動作被辨識為操控手勢。另定義左右連續揮手類似”No”的手勢代表關閉電視電源。

 

14 動態手勢操控電視定義

C.    自定義模組

在整個系統規劃中硬體負責高速影像處理部分,NIOS II軟核執行目標追蹤、辨識及I/O控制等工作,由於須考慮目標影像與攝影機之間距離遠近造成的目標物特徵群大小的問題,若直接將硬體擷取到的影像特徵值交由NIOS II處理會有運算量過大及Avalon bus頻寬上的問題,故採用自定義模組方式將每張影像特徵點分別以3×35×57×7的區塊進行特徵量計算,如圖15所示,並篩選出各區塊中特徵值最大的10個位置做為目標追蹤用,NIOS II則經由Avalon bus取得這些特徵位置值分別交給RTOS中的追蹤演算法任務(Task)執行3×35×57×7區塊的物件軌跡追蹤,並分析出目標物的特徵軌跡,藉此提高辨識成效。

15 目標物區塊特徵量計算

 

 

(Revision: 16 / 2010-09-18 07:46:01)

6. 設計特點 (Preliminary Paper)

整合硬體架構與NIOS II 軟核心

        充分利用FPGA可規劃的特性,規劃適合於處理即時影像辨識的軟硬體共同設計(Hardware/Software Co-Design)平台架構,將需高速處理的影像前處理演算法以硬體方式設計,使其達到每秒30幅640x480像素的即時視訊處理的速度,並規劃NIOS II 軟核心加上μC/OS II 即時作業系統構成的運算平台,利用即時作業系統對於各項服務所需要的執行時間均可明確預知的特點,以高階智慧型的演算法進行即時物件特徵的分析及辨識。

智慧型演算法實現

        結合膚色偵測與光流演算法標示出影像中移動的膚色物體,以捕捉即時的動態手勢,實作人工智慧演算法於NIOS II 軟核心之中,讓系統學習與理解手勢動作意含,並根據環境給予適應性的調節。

實現自定義外設與自定義指令

        本系統中雖已規劃好軟體與硬體處理的演算法,由於硬體執行的是即時影像處理,因此需要軟核心的程式即時經由Avalon Bus存取每張畫面所擷取到的特徵值,而SOPC有提供自定義外設的功能,為確保資料能在被覆蓋前取回,採用自定義外設方式,將硬體設計的模組連接至Avalon Bus以加快其處理速度。而NIOS II 提供256個指令組給使用者自行定義功能,使得指令的應用更有彈性,因此規劃在執行的演算法中部分頻繁使用的計算迴圈程式碼,改以自定義指令方式於軟核心中實現,以加快程式執行的速度。

大容量的FPGA應用

        DE2-70配置了數量高達70,000個邏輯單元的Altera Cyclone II 2C70,使我們在設計中不必顧慮演算法的複雜性,盡情依即時影像處理所需性能規劃出軟硬體共同設計的完整架構,內含250個M4K RAM亦足供演算法中大量運算資料的儲存,由於設計中為加快程式除錯速度,故將相關影像除錯硬體一併加入,以Cyclone II 2C70的容量而言是游刃有餘。

豐富的記憶體周邊規劃

       DE2-70內建有多種型式的記憶體,由於需高速處理即時視訊,規劃兩顆32MB的SDRAM用於影像前處理的資料儲存,FLASH記憶體則做為NIOS II 的程式碼儲存區,另規劃2MB SSRAM做為即時作業系統運作用。

 

(Revision: 13 / 2010-09-17 16:58:23)

7. 總結 (Final Project Paper)

藉由這次比賽,我們學會從不同的方向思考相同問題,針對實做一個手勢辨識系統,以往使用軟體撰寫影像程式時,都是以幅為單位對每個像素進行計算,不需要排程,也習慣幾乎無限制的使用記憶體;但是當使用硬體描述語言撰寫時,資料流、時序、流水線,並行處理、排程等問題都需細細考慮設計方式,事前對於開發板的選用及其硬體規格需熟悉,如此才能將整個系統做適當規劃,充分利用有限的資源設計出符合規格的成品。而團隊合作也是很重要的,團隊中每個人除了貢獻出自己的專長來縮短開發時程外,也必須解決一波波到來的問題,此時集思廣益找出解決的方法,一旦突破問題的癥結,一種如釋重負的感覺油然而生,同時也能從中學習到許多寶貴的實作經驗。

在演算法的運用上,有別於一般純軟體設計的思維,如何簡化複雜度,使其能以最有效的方式運作於硬體中成為我們主要的研究項目,藉此了解到實務與理論之間取捨的問題,系統完成之際,真正見識到Altera FPGA在系統開發上的強大功能,特別是在視訊處理上的效能表現。

感謝Altera公司與友晶科技提供了這次競賽機會,讓我們有目標全心投入鑽研FPGA影像處理技巧,也要謝謝安捷倫科技借與MSO7104B高階型混合訊號示波器供開發過程除錯驗證,解決了很多時序上設計的問題過程中隊員們相互學習,遇到困難時共同討論一起解決問題,看著累積出來的點點滴滴成果,激勵著我們繼續往前衝,同時也加深了我們對FPGA 系統設計的興趣。

 

圖16 本作品與週邊資源 圖17 團隊測試系統的情形

 

(Revision: 8 / 2010-09-18 00:04:24)