中 華 大 學

55  Download (0)

Full text

(1)

中 華 大 學 碩 士 論 文

基於階層式時序記憶的多角度手勢辨識方法 Multi-Angle Hand Posture Recognition Based on

Hierarchical Temporal Memory

系 所 別:資訊工程學系碩士班 學號姓名:M09602060 王勻駿 指導教授:黃雅軒 博士

中 華 民 國 101 年 2 月

(2)

i

摘要

在圖形辨識(Pattern Recognition)的領域內,角度變化一直以來都是影響辨識效果 的主要原因之一。因此,本論文使用了階層式時序記憶(Hierarchical Temporal Memory, HTM),根據其演算法的特性,乃是藉由時間性的概念,將時間上的連續變化影像特 徵進行歸納,構成”不變性特徵”,以克服角度變化的影響,進而建立本論文的多角度 手勢辨識方法。

由網路攝影機輸入影像之後,輸入影像將個別經由膚色偵測(Skin Detection)、背 景分離(Background segmentation)與邊緣偵測(Edge Detection)的處理,產生的三種輸出 結果,藉由投票的方式,正確的取得手勢區域;接著,判斷此手勢區域是否擁有手之 前臂部分,若存在前臂,則進行前臂分離的步驟,如不存在,則跳過此一步驟;將影 像大小正規化之後,便可交由 HTM 學習模型進行訓練與辨識。經由實驗的結果證明,

使用同一組訓練與測試資料,本論文提出的多角度手勢方法達到 92.5%的辨識率,而 相較於 Adaboost 和 SVM 兩個演算法的 86.8%和 85.5%辨識率,的確可以達到更好的 辨識效果。

關鍵字: 階層式時序記憶、多角度手勢辨識

(3)

ii

ABSTRACT

In the field of pattern recognition, angle variation plays an important role in producing effective recognition results. To overcome the angle variation problems, this thesis adopts the Hierarchical Temporal Memory (HTM). Based on the inherent property of the HTM algorithm which applies temporal information to organize the continuous change in time of image features in constructing their respective “invariant features”, a multi-angle hand posture recognition method is hence proposed in this thesis.

We first obtain input images from a webcam. The input images will then be individually processed by skin detection, background segmentation, and edge detection. The processed results are next combined with a voting method to acquire the correct hand posture region.

If a forearm exists, a forearm segmentation step will be executed; otherwise it will be skipped. After normalization of the output images through the forearm segmentation step, the images are forwarded to HTM for learning and training the classifier model. Our experimental results show that when using the same set of training and test data, the proposed multi-angle hand posture recognition method can achieve 92.5% recognition rate, thereby resulting in better performance than the Adaboost algorithm that only achieved 86.8% recognition rate and SVM algorithm that only achieved 85.5% recognition rate.

.

Keyword: Hierarchical Temporal Memory, Multi-angle hand posture recognition.

(4)

iii

誌謝

衷心的感謝授業恩師 黃雅軒博士,在多年的研究所學習生涯中給與我耐心的指 導與從不厭倦的教誨。從入門之時起,不論是觀念的啟迪、研究方向的確立、演算法 的建構直至論文的竣稿,背後都有老師從不間斷的教導與督促。由老師的身上,更學 習到對學問的執著與面對問題時從不迴避的態度,學生定將此美得牢記在心,作為未 來人生的伴語。

感謝中央大學的陳竹一教授,在這些年從旁不斷地給我指導和加油打氣,讓我在 漫長求學生涯的無數次徬徨中,仍然能夠把持住本心並繼續走下去,若是沒有老師,

求學的這條路將會走得無比艱辛跟坎坷。更感謝老師允許學生參與您的會議,接受您 的指導,學習老師做學問的精神和做人處事的態度,恩德將永遠銘記於學生的心中。

感謝實驗室的諸位同學莊順旭、許廷嘉在一同研究時互相幫助和砥礪,並從旁提 供了我寶貴的建議,給予我在研究過程中很多幫助。還有感謝學弟陳禹仲、彭國達、

李允善、歐志鴻、陳冠豪、林啟賢和吳東懋,在許多方面的協助,讓我能更快速的完 成研究。

最後,感謝我最愛的家人與親戚朋友,感謝他們給我的關心、支持與鼓勵。祖母 王蘇緞女士,時常在我耳邊提醒我要認真,要用功,雖然晚了兩年,但未來孫子會拚 給您看,請奶奶放心。感謝我的母親 闕毛女士,讓我在就學期間不用擔憂生活,能 專心致力於學業和研究工作,母親從父親過世之後,一肩擔起照顧家庭的責任,從不 在我面前抱怨,兒子都看在眼裡,記在心裡,我會盡快接起家裡的擔子,讓母親能休 息。感謝叔叔 王榮騰先生與嬸嬸 張華茹女士,對於如此不爭氣的姪子給於無限的寬 容和耐心,給予我寶貴的教導,包括學問和未來人生應了解且遵守的信念,對於兩位 長輩的愛,無法用言語表達出我多麼的感激,只能在將來的日子中,活出一個堂堂正 正的人生作為回答。感謝姑姑 王秀麗女士,在新竹生活時,從旁照料我,有時的電 話關心也相當窩心,提醒我記得該做的事情。僅以此文獻給我摯愛的親人朋友。

(5)

iv

目錄

摘要 ……….. i

Abstract ……… ii

誌謝 ……… iii

目錄……….…….……….... iv

圖目錄 ……….…………... vi

表目錄 ………..… viii

第一章 緒論 ………. 1

1.1 研究背景與動機 ………. 1

1.2 相關研究 ………. 2

1.3 論文架構 ………. 5

第二章 系統架構 ………. 6

第三章 手勢影像前處理 ………. 8

3.1 膚色偵測 ………. 8

3.2 背景分離 ………... 11

3.3 影像處理方法 ………... 16

3.4 手部區域定位與前臂分離方法 ………... 17

3.5 影像正規化 ………... 19

第四章 手勢辨識方法 ………... 21

4.1 階層式時序記憶網路架構 ………... 22

4.2 節點運算 ………... 23

4.3 階層運算 ………... 29

4.4 結合辨識演算法 ………... 31

第五章 實驗與分析 ………... 33

5.1 系統實驗環境 ………... 33

(6)

v

5.2 手勢資料庫建立……… ………... 33

5.3 實驗結果 ……….. 34

5.4 分析與討論 ……….. 40

第六章 結論與未來研究方向 ……….. 41

參考文獻 ……….. 42

(7)

vi

圖目錄

圖 1-1、Toshiba 於 IFA 發表的具有手勢控制與圖片辨識操作等功能的電視 ...1

圖 1-2、Xbox-360 的套件「Microsoft Kinect」...2

圖 2-1、手勢辨識演算法流程圖 ...7

圖 3-1、𝐶𝑏𝐶𝑟空間膚色機率分佈圖 ...9

圖 3-2、膚色和非膚色訓練資料範例 ………10

圖 3-3、膚色偵測執行圖 ………..11

圖 3-4、顏色分佈模型 ………14

圖 3-5、MNRL 範例圖 ………15

圖 3-6、背景偵測實驗結果範例圖 ………...15

圖 3-7、Sobel 遮罩 ……….16

圖 3-8、手勢定位示意圖 ………19

圖 3-9、LPT 示意圖………20

圖 4-1、 階層式時序記憶網路結構簡圖 ……….23

圖 4-2、二元影像切分為固定大小的區塊,轉換為一維的向量輸入進 HTM 網路 ....24

圖 4-3、HTM 網路學習輸入的影像之流程結構示意圖 ……….24

圖 4-4、HTM Node 的結構 ………..25

圖 4-5、表 4-1 的馬可夫圖………27

圖 4-6、匯聚階級分群法範例………..27

圖 4-7、階層式時序記憶節點運算流程 ………..29

圖 4-8、階層間輸出的串接 ………..30

圖 4-9、貝氏機率傳播 ………31

圖 4-10、非辨識模型 ………..32

圖 5-1、角度變化示意圖 ………. 34

圖 5-2、資料庫之不同背景圖 ………. 34

(8)

vii

圖 5-3、多種角度的訓練影像 ……….. 35

圖 5-4、布的測試影像 ……….. 36

圖 5-5、石頭的測試影像 ………37

圖 5-6、剪刀的測試影像 ………38

圖 5-7、辨識錯誤的影像 ………40

(9)

viii

表目錄

表 4-1、時間相鄰矩陣範例...26

表 5-1、系統環境表 ...33

表 5-2、本論文提出之多角度手勢的辨識結果 ...35

表 5-3、Adaboost+SVM 演算法的辨識結果...39

表 5-4、單純使用 SVM 演算法的辨識結果 ...39

表 5-5、多角度手勢辨識混淆矩陣 ...40

(10)

1

第一章 緒論

1.1 研究背景與動機

近年來,人機介面(Human Computer Interface)的互動成為一門倍受矚目的研究課 題。隨著科技的進步,傳統的人機介面互動方式,已漸漸無法滿足現代人求新求變與 追求更加便利的精神,例如:按鍵式遙控器、滑鼠與鍵盤等等,這些設備無法提供使 用者自然且直接的互動效果;傳統的人機介面,往往需要使用者透過學習之後,才能 了解如何進行人機互動,人們需要使用方式更為直覺、更有效率且更人性化的人機介 面。

隨著越來越多的專家學者與相關企業紛紛投入研究,許多新型態的人機互動介面 紛紛誕生,例如多點觸控式面版[1]、聲音控制系統[2]與動作感應控制系統[3]。但是,

相較於動作感應控制系統,觸控式面版的成本需求更高,而聲控系統的受限於各國語 言的不同與聲音辨識本身的難度,相形之下,動作感應控制系統最為便利且可靠。

Toshiba 於 2008 年發表了兩款手勢控制的家電產品,其一是筆記型電腦之 Qosmio 系 列的 G55 型號[4],它可透過內建的網路攝影機偵測感應手部的擺動,以執行多媒體 方面的控制動作,其二是 Toshiba 位在英國劍橋的實驗室所發表的手勢控制電視 [5][6](如圖 1-1 所示),同樣使用攝影機擷取人的手勢,握拳代表進入操作模式,手掌 則為關閉操作。

圖 1-1、Toshiba 於 IFA 發表的具有手勢控制與圖片辨識操作等功能的電視

(11)

2

不遑多讓,Microsoft 於 2010 年發表 Xbox-360 的套件「Microsoft Kinect」[7](如圖 1-2 所示),靠著攝影機擷取影像與紅外線定位,能夠準確的辨識整個人的形狀並判斷使 用者的位置與動作,讓使用者可以更便利的進行遊戲。

圖 1-2、Xbox-360 的套件「Microsoft Kinect」

誠如上述種種,可得知人機互動的重要性與日俱增,因此本論文以手勢辨識為主 題,並且針對圖形辨識領域常出現的角度問題進行突破,提出一套手勢辨識技術。本 論文將以人類的三種基本手勢「剪刀」、「拳頭」及「手掌」,在多種角度的變化之下 進行分析與辨識,正確辨識出使用者的手勢動作,以做為人機互動的重要資訊。

1.2 相關研究

手勢辨識的主題,可分為手勢偵測與手勢辨識兩個部份來介紹。首先在手勢偵測 上,若能夠精準的辨識手勢所呈現的形狀或代表的意思,擷取出完整且正確的手勢物 件是相當重要的。時至今日,已有許多學者投入大量的心力在電腦視覺(Computer Vision)的研究上,各種方法相繼被提出。

這些方法可歸類為兩大類,其一為膚色偵測,首先輸入影像的像素值需要以色彩 空間作出呈現,常見的色彩空間有 RGB 色彩空間[8][9]、一般化 RGB[10]色彩空間、

HSV[11]色彩空間、YCbCr[12]色彩空間等等,不同的色彩空間透過各自的數學公式 運算,將輸入影像轉換成其色彩空間的呈現方式;配合著不同的色彩空間,衍生出的 膚色偵測方式又可再細分為兩類[13][14],一類為使用固定範圍門檻值(Threshold Value)的方法[11][15],利用一組或多組的門檻值來界定色彩空間內的膚色與非膚色之 範圍;另一類為使用機率學習模型的方法,方法有直方圖之貝氏分類法(Bayesian

(12)

3

Classifier with the Histogram Technique) [12][14]、高斯分類器(Gaussian Classifier) [16]、

高斯混和模型(Gaussian Mixture Model)[17]、多層感知器(Multilayer Perceptron) [18]等 等;這類方法需建立膚色資料庫,再使用選擇的方法,讓資料庫的資料經過學習、統 計膚色的特徵,建立膚色偵測的學習模型。

其二為移動物件偵測,常見的做法有三種,首先是背景分離法(Background Segmentation)[19][20],傳統的背景分離方式是將靜止且不具有前景的畫面紀錄作為 背景影像,與之後取得的每一張影像作相減之運算,記錄其相對應位置上像素的相減 差之絕對值,並設定一個門檻值,若其絕對值大於門檻值,便判斷此點為前景點,反 之,則是為背景點;但若背景產生變化時,現實的背景與記錄的背景影像產生差異,

就會導致無法正確地偵測出前景;Brian D. O. Anderson et al.[21]利用像素點之間灰階 值不同的多寡來考慮明暗的變化,解決了背景更新的問題,但若前景物件於畫面中移 動非常緩慢或靜止時,偵測就會產生錯誤;C. Ridder et al.[22]使用卡爾曼濾波器 (Kalman filter)來作背景分離,能達到減低光影變化造成的影響與背景影像更新;接著 是連續影像相減法(Temporal Differencing) [23],與傳統的背景分離法相似,但不需事 先建立背景影像,而是利用時間相鄰的兩張影像或是間隔一定時間的兩張影像作相減 之運算,同樣設定一個門檻值,若其相減後的絕對值大於門檻值,便判斷此點為前景 點;此方法對於整體環境與光影的變化有較高的適應性,但缺點在於偵測出來的物件 影像極容易發生內部破碎或是有空洞的影像,無法取得完整的物件影像,對於之後的 辨識應用相當不利;最後為光流法(Optical Flow)[24],又稱光速度場(Optical Velocity Field),意指由同一攝影機擷取的時間序列影像中,計算所得某一時刻影像上各像素 點之速度向量構成的速度場。光流法是從連續多張的影像圖片中去求取運動物體的位 移資訊,對連續影像圖片計算位移速度,而使原先的亮度資訊轉換成影像平面上像素 點的位移速度向量資訊。光流可以定義為像素在連續畫面裡,依亮度守恆而連續所得 的運動軌跡,通常可對應於某實物點之運動軌跡。

在手勢辨識中,有各種方法投入其中;Qing Chen et al. [25]將輸入影像進行灰階

(13)

4

化之後,以海爾特徵來擷取手勢特徵,並利用積分圖像的方式加快特徵的運算速度,

最後以 Adaboost 學習演算法來訓練手勢分類器,Adaboos 分類器是由許多特徵建構 而成,其本身是一種特徵挑選的方法,由眾多的海爾特徵裡,挑選出對當前分類最有 效的特徵作為一個弱分類器(Week Classifier),並更新訓練樣本的權重,再挑選下一個 特徵,直到選取的特徵群能達到期望的辨識率,才停止訓練,而 Adaboost 的缺點是 對於物件的角度變化容忍度相當低, 若物件的角度變化大於 25 度角,就會影響辨識 率;Y. T. Chen et al. [26]同樣將影像灰階化後,將影像進行直方圖均衡化(Histogram Equalization),讓影像的色差不至於過大,使用支持向量機(Support Vector Machine, SVM)來訓練模型,將已分類好的資料給支持向量機訓練,經由訓練後可訓練出一組 模型(Model),之後當有未知類別的資料輸入時,支持向量機即可根據其訓練出來的 模型來判斷此資料的類別;Xiaoming Yin et al. [27]將輸入影像轉換成 CIELAB 色彩空 間影像,將轉換後的資料交給 RCE (Restricted Coulomb Energy)類神經網路訓練出膚 色模型,使用膚色偵測取得手勢物件後,求出手部重心位置,以其為圓心,用畫圓的 方式掃描手勢物件,紀錄掃描的輪廓點相對於圓心的距離與角度,最後以手勢輪廓在 極座標上的曲線分析來辨識手勢,由於是用圓的方式掃描手勢輪廓,因此不論手勢任 何方向皆能辨識成功,但若手勢影像的取得不夠完整,辨識率即會大幅降低;X. Liu et al. [28]使用 3D 攝影機建立深度影像,並定義手是最為前景的物件來找出手的資訊,

再利用 distance transform 取得特徵,以隱藏式馬可夫模型(Hidden Markov Model, HMM)來訓練分類模型。手勢靜態時,做基本的辨識功能;手勢動態時,則配合追蹤 功能,做手語辨識。L. Bretzner et al. [29]將輸入影像轉換到 Iuv 色彩空間,並以高斯 模型統計出膚色模型;尺度空間分析(Scale-space Analysis) 用 Colour Blob Features 方 法搜尋手掌與手指。Likelihood map 參考手指關節的彎曲或是延展性來找出手勢特徵。

追蹤部份則是使用粒子濾波(Particle Filter),可以做到即時的偵測。

在實際應用上也有相當多的文獻,Z. Z. Bien et al.[30] 提出一套家電遙控系統 , 結合空間指向以及手勢辨識,利用 AdaBoost 演算法偵測人臉位置與 Mean shift 追蹤

(14)

5

手勢位置,以臉和指向手在三維空間的座標來當作指向線,使用三台 PTZ 攝影機計 算出指向線並確認指向的物件後,依據預先定義的手勢指令,辨識出使用者想下達的 指示,達到控制家電的功能,但此系統需要三台 PTZ 攝影機,因此需要較昂貴的成 本。Y. Sato et al.[31]運用紅外線攝影機與單槍投影機,設計出一套雙手多指軌跡辨識 的桌上人機介面系統。此系統能即時的追蹤多個手指指尖,透過追蹤指尖的移動軌跡 與手勢辨識的技術來溝通人機介面,且藉由紅外線攝影機的優點,複雜背景與光影變 化的影響降到了最低。Kuo-Jun Chang[32]將手勢辨識技術應用於醫療看護方面,讓身 障者能透過簡單的手勢追蹤與辨識技術,讓使用者能遙控週遭的家電設備;例如燈與 冷氣的開關、電視頻道的切換及音量大小調整、病床的升降等,目前僅能辨識六種手 勢,且在應用上只能利用單一手勢動作控制單一設備的動作。

電腦視覺是種非侵入式的人機互動方式,不需要攜帶多餘的裝置就可以使用,不 會引起人們的煩躁與反感;在這之中,手勢辨識技術更是其中的佼佼者,對於其技術 的需求,將會隨著人們對於更自動化、更便利的生活品質追求顯得日益重要,但是目 前的技術,在低成本的要求下,仍會受限於各種降低辨識率的影響,例如:光影變化、

角度旋轉與複雜背景,因此,此一課題仍需繼續投入大量的研發人力、經費與時間。

1.3 論文架構

本論文共分為六章,各章節內容安排如下:

第一章為緒論,說明本論文的研究背景與動機、相關研究及論文架構;第二章為 系統架構,描述整個系統的內容並用流程圖表示;第三章為手勢影像前處理,說明影 像經由網路攝影機輸入之後的各項影像前處理步驟,包括膚色偵測、背景分離、影像 處理方法、手勢區域定位與前臂分離方法、影像正規化;第四章為手勢辨識方法,說 明使用的 HTM 演算法之精神所在,不變性特徵的建立方法和辨識方法;第五章為實 驗與分析,說明系統環境與資料庫的建立方法,展示本論文提出方法的辨識效果,並 且與現行的 Adaboost 學習演算法進行比較;第六章為結論與未來研究方向,總結本 論文的研究成果,並提出未來可行的研究方向與改善內容。

(15)

6

第二章 系統架構

此章節介紹本論文多角度手勢辨識技術的整體架構,並對各模組與使用方法進行 詳細的說明。圖 2-1 為本論文提出的演算法整體流程圖,主要可分為手勢影像前處理 和手勢辨識兩個區塊。於手勢影像前處理區塊,由攝影機取得輸入影像後,影像經過 膚色偵測、背景分離和邊緣偵測等三種運算處理,然後結合三種處理結果來定位出手 部區域;再經由手掌區域偵測模組,去除可能存在的前臂影像,框選只具有手掌特徵 的手勢影像,最後對處理後的影像進行正規化。於手勢辨識模組,將已正規化的手勢 影像進行特徵抽取,然後以 HTM 演算法進行辨識,最後即可得到手勢辨識的結果。

第三章說明手勢影像前處理各模組所使用的各項方法,第四章則介紹手勢辨識使用的 HTM 演算法。

(16)

7

圖 2-1、手勢辨識演算法流程圖

(17)

8

第三章 手勢影像前處理

影像辨識的效能,通常和輸入影像的影像解析度、光線和角度變化有著分不開的 關係。因此,為了能準確定位手勢影像的位置,本論文使用膚色偵測、背景分離和邊 緣偵測來決定手部影像的位置,再利用前臂分離方法去除可能存在的前臂影像,最後 將影像正規化,即完成了手勢影像前處理的步驟。

3.1 膚色偵測

膚色偵測是分析人體影像中,常見的一個前處理步驟。隨著人種、光線、攝影工 具的不同,所謂的膚色定義也會有所差異;膚色必須隨著不同的應用而調整其定義,

才能適應各種狀況的需求,但定義膚色的方式不外乎兩種,一種是使用機率模型[14],

另一種是使用範圍模型[13];本論文使用𝑌𝐶𝑏𝐶𝑟色彩空間結合貝氏分類器(Bayesian Classifier)做為膚色偵測的方法。

𝑌𝐶𝑏𝐶𝑟色彩空間來自於 CCIR Recommendation 601 規格,屬於線性轉換(Linear Transform)的顏色空間,主要廣泛應用於視訊系統中。其中 Y 是亮度(Luminance),𝐶𝑏是 藍色色度,𝐶𝑟是紅色色度。膚色分布於𝐶𝑏𝐶𝑟空間上具有不錯的集中效果,根據研究指 出[33]各色人種的膚色於𝐶𝑏𝐶𝑟空間上分布也極為接近,如圖 3-1,且由於𝑌𝐶𝑏𝐶𝑟把亮度 資訊獨立出來,因此可減低光線變化的影響,因此選擇𝑌𝐶𝑏𝐶𝑟作為運用。RGB 轉換至 𝑌𝐶𝑏𝐶𝑟的公式如下,

[ 𝑌 𝐶𝑏

𝐶𝑟] = [ 0.257 0.504 0.098

−0.148 −0.291 0.439 0.439 −0.368 −0.071

] [𝑅 𝐺 𝐵

] + [16 128 128

] (3-1)

(18)

9

(a) (b)

(c) (d)

圖 3-1、𝐶𝑏𝐶𝑟空間膚色機率分佈圖,該圖右邊垂直黑條表示機率值從 0 到 0.012 時,

表現在影像上的灰階值為從 200 到 0,(a)為黑人膚色,(b)為白人膚色,(c)為黃種人 膚色,(d)為三個人種的膚色分佈結合圖

其藉由輸入多張影像的膚色點和非膚色點(如圖 3-2,圖 3-2 (a)的紅色方框為膚色點,

圖 3-2 (b)為不具有膚色像素點的背景圖),各自建立直方圖(Histogram)統計膚色和非 膚色點在𝐶𝑏𝐶𝑟空間上分佈的區段和密度,公式如下,

(19)

10

𝑃(𝑠𝑘𝑖𝑛|(𝐶𝑏,𝐶𝑟)) = 𝑃((𝐶𝑏,𝐶𝑟)|𝑠𝑘𝑖𝑛)𝑃(𝑠𝑘𝑖𝑛)

𝑃((𝐶𝑏,𝐶𝑟)|𝑠𝑘𝑖𝑛)𝑃(𝑠𝑘𝑖𝑛)+𝑃((𝐶𝑏,𝐶𝑟)|𝑛𝑜𝑛𝑠𝑘𝑖𝑛)𝑃(𝑛𝑜𝑛𝑠𝑘𝑖𝑛) (3-2) 𝑃((𝐶𝑏,𝐶𝑟)|𝑠𝑘𝑖𝑛) =𝑠[(𝐶𝑏,𝐶𝑟)]

𝐶𝑠 , 𝑃((𝐶𝑏,𝐶𝑟)|𝑛𝑜𝑛𝑠𝑘𝑖𝑛) =𝑛[(𝐶𝑏,𝐶𝑟)]

𝐶𝑛 𝑃(𝑠𝑘𝑖𝑛) = 𝐶𝑠

𝐶𝑠+ 𝐶𝑛, 𝑃(𝑛𝑜𝑛𝑠𝑘𝑖𝑛) = 𝐶𝑛 𝐶𝑠 + 𝐶𝑛

其中,𝐻𝑆為膚色點建立的直方圖,𝐻𝑛為非膚色點建立的直方圖,再經由貝氏決策法 則判斷膚色,skin 代表膚色,(𝐶𝑏,𝐶𝑟)代表像素值,𝑠[(𝐶𝑏,𝐶𝑟)]和𝑛[(𝐶𝑏,𝐶𝑟)]代表在其直 方圖𝐻𝑆和𝐻𝑛上的值,𝐶𝑠和 𝐶𝑛代表在其直方圖𝐻𝑆和𝐻𝑛上的資料總數,𝑃((𝐶𝑏,𝐶𝑟)|𝑠𝑘𝑖𝑛)和 𝑃((𝐶𝑏,𝐶𝑟)|𝑛𝑜𝑛𝑠𝑘𝑖𝑛)為訓練階段統計出膚色和非膚色點在不同𝐶𝑏𝐶𝑟值出現之機率,

𝑃(𝑠𝑘𝑖𝑛)和𝑃(𝑛𝑜𝑛𝑠𝑘𝑖𝑛) 為膚色 和非 膚色點 於訓練資 料的 比重, 𝑃(𝑠𝑘𝑖𝑛|(𝐶𝑏,𝐶𝑟)) 為 (𝐶𝑏,𝐶𝑟)值上出現膚色的機率,即為我們所要求的。於此我們定義一個門檻值𝜃,當 𝑃(𝑠𝑘𝑖𝑛|(𝐶𝑏,𝐶𝑟)) > 𝜃 則此(𝐶𝑏,𝐶𝑟)視為膚色點,反之則為非膚色點,經由實驗發現,

當門檻值設定為 0.06 的時候,效果最佳。

(a)

(b)

圖 3-2、膚色和非膚色訓練資料範例,(a)膚色訓練資料(紅框),(b)為非膚色訓練資料

(20)

11

圖 3-3、膚色偵測執行圖

3.2 背景分離

在背景分離這個步驟,我們使用 Codebook 背景模型[34]。Codebook 一詞來自於 Vector Quantization(VQ),在 VQ 定義中,考慮一個由向量構成的樣本集合,將彼此比 較接近的樣本歸類為一群,如此可將樣本分類成數群,每一群用一個向量作為代表,

此向量即可稱為一個 codeword,而這些 codeword 形成的集合則為 codebook。K. Kim 等人於 2005 年 [34] 利用 codebook 來建立背景模型,其優點在於能將訓練資料進行 編碼壓縮,所需的記憶體空間遠少於紀錄原始資料所需的空間,且能藉由線上更新的 機制來動態更新背景資訊。Codebook 主要利用量化(Quantization)和分群(Clustering) 的技術來建立背景模型。輸入一連續的背景影像資料,將輸入的背景環境以像素點為 基礎學習,每一個像素點建立一個 codebook,包含一個到數個 codeword,在此用 𝐶 = {𝑐1, 𝑐2, 𝑐3, … , 𝑐𝐿}代表每個像素點 codebook 有 L 個 codeword,每個 codeword 𝑐𝑖(𝑖 = 1, … , 𝐿)是由像素點的 R、G、B 色彩的向量值 𝑣𝑖 = {𝑅̅ , 𝐺𝑖 ̅ , 𝐵𝑖 ̅ } 和六個參數 𝑖 𝑎𝑢𝑥𝑖 = (𝐼̌, 𝐼𝐼 ̂, 𝑓𝑖 𝑖, 𝜆𝑖, 𝑝𝑖, 𝑞𝑖 )構成,𝐼 ̌和𝐼 ̂分別代表最大和最小的亮度值,f 用來記錄和 codeword 比對成功的次數,𝜆代表 Maximum Negative Run-Length(MNRL)的值,表示 codeword 沒有更新之最長的區間,p 為第一個 codeword 建立的時間,q 為最後一個 codeword 建立的時間。

在訓練的階段,令𝑋 = {𝑥1, 𝑥2, 𝑥3, … , 𝑥𝑁}為在 N 張連續影像中同一位置上的 N 個 像素點之 RGB 向量資料。時間 t 的資料向量𝑥𝑡會於 codebook 中找尋相似的 codeword

(21)

12

𝑐𝑚,。若有找到符合相似條件的𝑐𝑚,便將𝑐𝑚更新,若無法找到相似的 codeword,則 建立一個新的 codeword,並將 codeword 數目加一。比對的相似條件分別是參考顏色 和亮度的差異值,若此二值皆小於設定的門檻值,則代表資料向量𝑥𝑡找到了相似的 codeword。方法流程如下:

Step 1. 將 L 初始化為 0,且 C 初始化為空集合𝜙;

Step 2. 時間 t 由 1 到 N,重複以下步驟;

a. 新進的資料向量𝑥𝑡 = (𝑅, 𝐺, 𝐵),計算其亮度值 𝐼 = √𝑅2+ 𝐺2+ 𝐵2; b. 在𝐶 = {𝑐𝑖|1 ≤ 𝑖 ≤ 𝐿}中,找尋 codeword 𝑐𝑚,符合以下兩個條件:

1. 顏色差異 𝑐𝑜𝑙𝑜𝑟𝑑𝑖𝑠𝑡(𝑥𝑡, 𝑣𝑚) ≤ 𝜀;

2. 亮度差異 𝑏𝑟𝑖𝑔ℎ𝑡𝑛𝑒𝑠𝑠(𝐼, 〈𝐼̌, 𝐼𝑚 ̂〉) = 𝑡𝑟𝑢𝑒; 𝑚

c. 若 C 為空集合𝜙或無任何比對成功的 codeword,則另𝐿 = 𝐿 + 1,並新增一個 codeword 𝑐𝐿,方法如下:

1. 𝑣𝐿 = {𝑅, 𝐺, 𝐵};

2. 𝑎𝑢𝑥𝐿 = (𝐼, 𝐼, 1, 𝑡 − 1, 𝑡, 𝑡 );

d. 如果找到比對成功的 codeword 𝑐𝑚,則對 codeword 進行更新,方法如下:

1. 𝑣𝑚 = (𝑓𝑚𝑓𝑅̅̅̅̅̅+𝑅𝑚

𝑚+1 ,𝑓𝑚𝑓𝐺̅̅̅̅̅+𝐺𝑚

𝑚+1 ,𝑓𝑚𝑓𝐵̅̅̅̅̅+𝐵𝑚

𝑚+1 );

2. 𝑎𝑢𝑥𝑚 = (𝑚𝑖𝑛{𝐼, 𝐼̌} , 𝑚𝑎𝑥{𝐼, 𝐼𝑚 ̌} , 𝑓𝑚 𝑚+ 1, 𝑚𝑎𝑥{𝜆𝑚, 𝑡 − 𝑞𝑚} , 𝑝𝑚, 𝑡 )

Step 3. 在 codebook 中,將所有的 codeword 的𝜆𝑖(𝑖 = 1, … , 𝐿)重新計算,公式如下:

𝜆 = 𝑚𝑎𝑥 {𝜆𝑖, (𝑁 − 𝑞𝑖+ 𝑝𝑖 − 1)};

顏色差異𝑐𝑜𝑙𝑜𝑟𝑑𝑖𝑠𝑡(𝑥𝑡, 𝑣𝑚)和亮度差異𝑏𝑟𝑖𝑔ℎ𝑡𝑛𝑒𝑠𝑠(𝐼, 〈𝐼̌, 𝐼𝑚 ̂〉)是利用 RGB 色彩空間進𝑚 行判斷。圖 3-4 為顏色分佈模型,當前的輸入資料向量𝑥𝑡的值落在分佈模型範圍之內,

則視為比對成功,反之則比對失敗。當前輸入的資料向量𝑥𝑡= (𝑅, 𝐺, 𝐵),codeword 𝑐𝑖的 資料向量𝑣𝑖 = {𝑅̅ , 𝐺𝑖 ̅ , 𝐵𝑖 ̅ },顏色差異的計算方法如下, 𝑖

(22)

13

𝑐𝑜𝑙𝑜𝑟𝑑𝑖𝑠𝑡(𝑥𝑡, 𝑣𝑡) = √‖𝑥𝑡2− 𝑝2 (3-3) 𝑝2 = ‖𝑥𝑡2cos2𝜃 =〈𝑥‖𝑣𝑡,𝑣𝑖2

𝑖2 (3-4)

‖𝑥𝑡2 = 𝑅2+ 𝐺2 + 𝐵2,‖𝑣𝑖2 = 𝑅̅2+ 𝐺̅2+ 𝐵̅2 (3-5)

比對完顏色差異後,仍須對亮度差異進行計算。因為,當輸入的資料過亮或過暗時,

仍有可能會通過顏色差異的判斷,因此必須再比對亮度差異,以選擇適合的亮度範圍。

我們定義一個亮度變化的範圍為[𝐼𝑙𝑜𝑤, 𝐼ℎ𝑖𝑔ℎ],其計算方法如下:

𝐼𝑙𝑜𝑤 = 𝛼𝐼 ̂, 𝐼ℎ𝑖𝑔ℎ = 𝑚𝑖𝑛 {𝛽𝐼 ̂,𝛼𝐼 ̌} (3-6)

其中𝛼和𝛽為常數, 𝛼 < 1且𝛽 > 1,通常𝛼值介於 0.4~0.7 之間,𝛽則介於 1.1~1.5 之間,

總結來說,亮度差異的表示式可以由下面的公式呈現,

𝑏𝑟𝑖𝑔ℎ𝑡𝑛𝑒𝑠𝑠(𝐼, 〈𝐼 ̌, 𝐼 ̂〉) = {𝑡𝑟𝑢𝑒 , 𝑖𝑓 𝐼𝑙𝑜𝑤 ≤ ‖𝑥𝑡‖ ≤ 𝐼ℎ𝑖𝑔ℎ

𝑓𝑎𝑙𝑠𝑒 , 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 (3-7)

當顏色差異和亮度差異兩個判斷式皆通過時,此輸入資料向量即為背景點。

(23)

14

圖 3-4、顏色分佈模型

當訓練完成後,仍然有可能存在包含雜訊或是前景資訊的 codeword,為了排除 這些錯誤的 codeword,MNRL 即是提出的解決機制。現實的背景中,除了固定不動 的事物外,也會有像樹木一般以某種頻率移動的背景像素點,因此將 MNRL 的參數𝜆 定義為 codeword 沒有更新之最長的區間,並定義一個門檻值𝑇𝑚,將𝜆大於門檻值的 codeword 視為雜訊而進行刪除,通常𝑇𝑚設定為訓練影像張數的一半 𝑁2。圖 5 為範例 圖,影像中框選的區域,其強度值隨著時間變化紀錄在圖 5 右側的曲線圖,其中藍色 方框為天空顏色的像素點強度值,𝜆值約為 15;綠色方框為樹木的像素點強度值,𝜆值 約為 100;而橘色箭頭框選的部分為行人的像素點強度值,其𝜆高達 280。按照所設定 的門檻值,即可將圖 5 中行人的部分刪除,留下真正的背景點。

(24)

15

圖 3-5、MNRL 範例圖

步驟至此,codebook 背景模型已建立,緊接著就要進入前景偵測的階段,其流程如 下:

Step 1. 新進的資料向量𝑥𝑡 = (𝑅, 𝐺, 𝐵),計算其亮度值 𝐼 = √𝑅2+ 𝐺2+ 𝐵2; Step 2. 將𝑥𝑡和所有𝑐𝑚依序進行比對,若符合以下兩項條件,即為比對成功;

a. 顏色差異 𝑐𝑜𝑙𝑜𝑟𝑑𝑖𝑠𝑡(𝑥𝑡, 𝑣𝑚) ≤ 𝜀;

b. 亮度差異 𝑏𝑟𝑖𝑔ℎ𝑡𝑛𝑒𝑠𝑠(𝐼, 〈𝐼̌, 𝐼𝑚 ̂〉) = 𝑡𝑟𝑢𝑒; 𝑚

若比對成功,則對 codeword 進行更新,更新方法如建立 codebook 時的 Step 2;

Step 3. 若𝑥𝑡和所有的 codeword 比對後,沒有跟任何一個 codeword 比對成功,即為前 景點,反之,只要有比對成功,即為背景點。其實驗結果如圖 3-6。

圖 3-6、背景偵測實驗結果範例圖

(25)

16

3.3 影像處理方法

(1) 邊緣偵測

由於手勢影像具有強烈的邊緣資訊,為了提高手部偵測的成功率,我們以 Sobel 運算子來進行邊緣偵測。一般而言,Sobel 遮罩可以反應影像中左右和上下影像點之 間的灰度值變化量,並用來計算影像中每一個影像點的邊緣強度值。我們使用兩種不 同的 3×3 遮罩(如圖 3-7)來計算水平邊緣強度𝐺𝑥和垂直邊緣強度𝐺𝑦。然後根據𝐺𝑥和𝐺𝑦 即可求出梯度值 Gradient。𝐺𝑥、𝐺𝑦和 Gradient 即為此區塊的面向判斷特徵,公式如下:

𝐺𝑥 = (𝑍3+ 2𝑍6+ 𝑍9) − (𝑍1+ 2𝑍4+ 𝑍7) (3-8) 𝐺𝑦 = (𝑍7+ 2𝑍8+ 𝑍9) − (𝑍1+ 2𝑍2+ 𝑍3) (3-9) 𝐺𝑟𝑎𝑑𝑖𝑒𝑛𝑡 = |𝐺𝑥| + |𝐺𝑦| (3-10)

一個 3 * 3 區域中的影像點

Gx Gy Sobel 運算子

圖 3-7、Sobel 運算子,利用 Sobel 運算子,分別測出 x 方向的及 y 方向的灰階變化

(2) 物件連通法與形態學

為了濾除可能出現的雜訊像素點,本論文使用物件連通法和形態學來進行處理。

膚色偵測和背景分離處理過後的影像為二值化影像,而二值化後的影像只形成 0 和 1

(26)

17

兩種像素,分別代表背景影像點和前景影像點。利用這些資訊,把具有相鄰關係的影 像元件找出,並給予唯一的標號,此方法即稱為物件連通法。其做法為由左而右,由 上而下的方式來檢查每個像素,若像素值為 1,則給予標號。不同元件會有不同標號,

而具有最多點數之標號所對應的元件影像即為手勢影像。一般而言,相鄰關係的判別 方式有兩種,分別為 4 連通元件(4-connected component)與 8 連通元件(8-connected component)判別。

由於所找到的連通影像有可能是破碎的,所以本論文使用形態學中的開放運算 (Opening)來去除雜訊和密合運算(Closing)來填補破洞。輸入影像通過兩種運算處理之 後,即能將影像的雜訊去除和破洞填補,其公式如下:

Opening => A。B = (A○-B) ○+ B Closing => A.B = (A○+B) ○- B A○+B = b

B b

A

A○-B = b

B b

A

(3-11)

3.4 手勢區域定位與前臂分離方法

經由膚色偵測、背景分離和邊緣偵測三種處理後,再通過物件連通法和形態學來 減低影像雜訊,會得到三個二元圖的結果。膚色偵測能有效偵測出膚色所在的位置,

但是若背景中存在與膚色相同的顏色,則也會被判斷為膚色而形成雜訊,且此雜訊即 使經由形態學處理後,仍無法消除;而背景分離能將前景偵測出來,但是有可能存在 非手勢資訊的其它前景;邊緣偵測能偵測出影像中所有物件的邊緣,包含了不屬於手 勢的資訊;因此,為了排除上述情況,我們使用一種線性權重的方式,將三個結果結 合後,即可定位出手部區域,公式如下,

𝑅𝑒𝑠𝑢𝑙𝑡(𝑥) = {𝑡𝑟𝑢𝑒 , 𝑖𝑓 [𝛼 ∗ 𝑅𝑒𝑠𝑆𝑘𝑖𝑛(𝑥) + 𝛽 ∗ 𝑅𝑒𝑠𝐸𝑑𝑔𝑒(𝑥) + 𝛾 ∗ 𝑅𝑒𝑠𝐶𝑜𝑑𝑒𝑏𝑜𝑜𝑘(𝑥)] > 128

𝑓𝑎𝑙𝑠𝑒 , 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 (3-12)

(27)

18

其中,𝑅𝑒𝑠𝑢𝑙𝑡(𝑥)為權重運算後的結果,𝑅𝑒𝑠𝑆𝑘𝑖𝑛(𝑥)為膚色偵測所輸出的像素點二元值 (0 或 255),𝑅𝑒𝑠𝐸𝑑𝑔𝑒(𝑥)為邊緣偵測所輸出的像素點二元值,𝑅𝑒𝑠𝐶𝑜𝑑𝑒𝑏𝑜𝑜𝑘(𝑥)為背景偵 測所輸出的像素點二元值,而𝛼、𝛽、𝛾為權重值,此三個值經由實驗而取的,設定為 0.3、0.1、0.6。

手勢辨識所需要的影像資訊為手掌,而手臂的前臂影像,不僅對於手勢辨識所需 的資訊沒有幫助之外,還可能成為雜訊,導致系統的辨識效能下降。因此,我們設計 了一個方法,能有效的將前臂影像去除,只保留手勢的資訊。利用手掌和手指比前臂 有更豐富的邊緣資訊之特性,我們將定位完成的二元影像位置對應回原始的輸入影像,

取出原始的輸入影像進行邊緣偵測處理,然後計算其邊緣資訊影像的重心位置,如圖 3-8 (a)所示。由於手掌部分的邊緣資訊較多,所以計算所得的重心位置將較為靠近手 掌的位置,如圖 3-8 (b)所示。再來,找出定位後手勢區域影像的最左、最右、最上、

最下的座標值,即可建立一個框住手勢區域影像的矩形範圍(如圖 3-8 (c)的紅色方框),

然後計算重心點與矩形四個邊的距離;若重心和矩形的左右(𝑥1, 𝑥2)或上下( 𝑦1, 𝑦2)兩 邊之距離不同時,則以較長距離更換為 1.1 倍較短距離的方式來建立新的矩形(如圖 3-8 (c)的綠色方框),藉此分離多餘的前臂資訊,判斷式如下,

𝑤ℎ𝑒𝑛 { 𝑥1 < 𝑥2, 𝑡ℎ𝑒𝑛 𝑥2 = 1.1 ∗ 𝑥1

𝑦1 < 𝑦2, 𝑡ℎ𝑒𝑛 𝑦2 = 1.2 ∗ 𝑦1 (3-13)

完成前臂分離之後,再將取得的手勢影像進行正規化成 128*128 的影像,即可做為 HTM 的輸入影像來進行學習和辨識。

(28)

19

(a) (b) (c)

(d)

圖 3-8、手勢定位示意圖,(a)利用邊緣資訊求取影像重心,(b)將重心對應回擷取出的 手部影像,(c)前臂判斷的處理結果(紅框為擷取出的手部影像,綠框為前臂分離後的

影像),(d)判斷式示意圖

3.5 影像正規化

前處理的最後一個步驟為影像正規化,原因是 HTM 訓練需要固定維度大小的影 像。為了能得到無損長寬比的擷取影像正規化,本論文使用由 Eric L. Schwartz[35]於 1980 年所提出的對數極座標轉換(Log-Polar Transform, LPT)來進行影像正規化處理。

其想法來自於人類的視覺系統,於人類的視網膜表面和視覺皮質層之間存在著 LPT 的映射關係,具有對影像大小、位移和旋轉的不變性之特性。LPT 是將影像自笛卡兒 (Cartesian)座標也就是直角座標轉換至極座標的一種轉換方式,透過映射將目標影像 的大小、和旋轉位移轉換為單一的位移變化,之後對目標影像的半徑進行對數運算,

(29)

20

即可得到無損長寬比的影像大小縮放。假設在直角座標系下的二元影像表示為𝑓(𝑥, 𝑦) 經過 LPT 處理的極座標系之下的影像表示為𝑓(𝑟, 𝜃),LPT(圖 3-9)可定義為,

{𝑟 = 𝑙𝑛√𝑥2 + 𝑦2

𝜃 = 𝑡𝑎𝑛−1( 𝑦𝑥 ) (3-14)

圖 3-9、LPT 示意圖

透過 LPT 處理,原始影像中的旋轉變化表現為極座標系下𝜃軸方向的循環位移,

原始影像中的比例變化表現為極座標系下 r 軸方向的平移。因此,LPT 可以用在圖形 辨識中抽取旋轉不變性特徵或是比例不變特徵。

(30)

21

第四章 手勢辨識方法

目前大部分的機器學習方法,僅依靠樣本的學習來建立樣本模型,但當輸入資料 與樣本模型差異量過大,往往無法達到正確的辨識,因為這些方法欠缺對輸入資料的 歸納性與藉由過去的學習結果來幫助學習新物件(Incremental learning)的能力。在 此,輸入資料的歸納性,可以定義為是對全新樣本歸類的能力,因此歸納性越佳的演 算法,對未知的樣本,越能得到正確的分類結果。

本論文選擇了由 Jeff Hawins[36]在 2006 年提出的階層式時序記憶(Hierarchical Temporal Memory, HTM)結合支持向量機來建立手勢辨識模型。HTM 為最近幾年新發 展出的機器學習模型,主要由 2004 年 Jeff Hawkins 於 On Intelligence[37]書中提出的 大腦皮質架構理論,根據記憶預測結構提出的八項假設[38]結合貝氏網路(Bayesian Network)[39]中的機率推論方式與隱藏式馬可夫模型,利用時間概念來發展出的一 種非監督式學習(non-Supervised Learning)架構。藉由學習時間連續的影像序列,將連 續出現的特徵視為具有相同的意旨,將這些特徵以分群計算產生時序相近的特徵,來 得到物件的不變性特徵,因此對於輸入資料,能得到較廣泛的辨識能力,可有效的歸 納手勢特徵因時間而產生變化的各樣資訊,對於克服角度變化進而提升手勢辨識率相 當有幫助。

本章節以四個部份說明 HTM 的演算法內容,第一部分,記憶網路架構,介紹記 憶網路的整體架構;第二部份,節點運算,描述節點內如何將輸入影像經由學習,結 合空間性與時序性的特徵,分群和歸納後,產生不變性特徵,而後,通過推論(Inference) 階段,將推論信念(Inference Beliefs)傳遞給下一階層的網路;第三部分,階層運算,

描述網路內,階層與階層間如何傳遞資料;第四部份,結合辨識演算法,由於 HTM 模型本身是將某一事物的特徵進行歸納後,產生不變性特徵,但是其本身並不具有識 別物體的能力,因此需結合一個有效的分類器,對歸納的資料進行分類。

(31)

22

4.1 階層式時序記憶網路架構

HTM 演算法加入時間線索來進行非監督式學習,歸納訓練資料,來產生出不變 性特徵,可以由下圖 4-1 來說明。HTM 主要由四部分所組成,

(1) 感測節點(Sensor Node):位於網路最底層,將感測到的資料(如影像、聲音和壓 力等),轉換成 HTM 能使用的資料格式,並將資料傳遞給 HTM 節點;

(2) HTM 節點(HTM Node):它是 HTM 的主要網路,可以是單個或多個 HTM 節點所 形成的階層式網路架構,每個 HTM 節點會進行非監督式學習,將輸入樣本進行 分群運算,產生時序相近的不變性特徵;

(3) HTM 頂層節點(HTM Top Node):監督式學習(Supervised Learning)的特殊節點,

基本構成和學習等同於一般的 HTM 節點,但可利用 Category Node 進行資料分類,

位於最高階的位置;

(4) 分類檔案節點(Category Node):為一個監督式分類器,學習 HTM 頂層節點所輸 出的不變性特徵,來辨識輸入資料的類別;

簡單來說,資料由最底層的感測節點 1 輸入網路,各 HTM 節點經由學習和推論產生 推論信念傳輸給下一層網路的 HTM 節點。如圖 4-1 中推論信念由節點 2 傳輸至下一 層網路的節點 3,接著於最高階的位置的 HTM 頂層節點 4 將歸納完的不變性特徵輸 入節點 5(Category Node),將標示好的資料使用分類器進行分類,最後由輸出節點 6(Output Node)來產生網路的輸出結果。

(32)

23

圖 4-1、 階層式時序記憶網路結構簡圖

4.2 節點運算

首先從資料輸入開始,由 HTM 網路中的感測節點將訓練的二元影像資料切分為 固定大小的區塊,轉換為一維的向量輸入進 HTM 網路,如圖 4-2 和圖 4-3。資料輸 入 HTM 網路之後,藉由 HTM Node 進行運算,HTM Node 主要分為學習和推論兩個 階段,在學習階段,輸入一串依時間而變化的訓練影像序列,並於每一個 HTM Node 中建立推論模型;在推論階段,HTM Node 依照學習到的特徵樣本(Feature Pattern)來 產生推論信念,即為每一個 HTM Node 的推論輸出。而每個階段又分為兩個主要步 驟,空間性分群(Spatial Pooler, SP)和時序性分群(Temporal Pooler, TP),如圖 4-4,分 別處理空間性與時序性學習和推論。資料首先經由 SP 做以空間相似度為主的分群後,

將得到的結果輸入 TP,歸納時序性的特性形成傳遞給下一層網路的推論信念。

(33)

24

圖 4-2、二元影像切分為固定大小的區塊,轉換為一維的向量輸入進 HTM 網路

圖 4-3、HTM 網路學習輸入的影像之流程結構示意圖

(34)

25

圖 4-4、HTM Node 的結構

(1) 學習階段

a. 空間性分群(Spatial Pooler, SP)

SP 的最重要的任務是量化無限可能的輸入資料,以簡單的編碼方式將其轉換成 有限的樣本集合,每一個編碼過的樣本(Pattern)稱之為量化中心(Quantization Center) 或是巧合(Coincidence)。在 SP 中,影像資料形成的向量輸入至節點後,和 SP 內記憶 的樣本進行相似度比較。若此向量和 SP 內記憶的樣本都不相似,HTM 便給此向量樣 本一個新的編號,並將此樣本記憶至 SP;若此向量相似於記憶在 SP 中的某個樣本,

則將相似度最高之樣本所屬編號的出現次數加一。相似度的計算方式是使用尤拉距離 (Euclidean Distance),公式如下,

𝑑2(𝑥, 𝑤) = ∑𝑁𝑗=1𝑑𝑖𝑚𝑠(𝑥𝑗 − 𝑤𝑗)2 (4-1)

其中,d 為距離,x 代表輸入向量,w 代表 SP 中某一個 Coincidence,而𝑁𝑑𝑖𝑚𝑠為特徵 的維度,也就是特徵長度。設定一門檻值 D,若輸入向量和所有的 Coincidence 計算 得到的 d 皆大於門檻值 D,便將其記憶為新的 Coincidence;反之,則更新和輸入向 量 x 擁有最小距離之 Coincidence 的累加次數。門檻值設定過高,則 Coincidence 的數 量變少,意味著記憶的樣本變少,導致辨識率下降;而門檻值設定過低,則 Coincidence

(35)

26

的數量變多,同樣會使節點的計算量上升,導致樣本的歸納性降低。

SP 在根據空間性來歸納特徵的同時,為了進行下一步的 TP 運算,建立一個時間 相鄰矩陣(Time-Adjacency Matrix)來記憶輸入資料和各 Coincidence 計算尤拉距離後所 出現的次數和 Coincidence 編號的轉換順序,依此來敘述輸入資料於時間上的相關性。

表 1 顯示一個時間相鄰矩陣範例,其中矩陣(𝑖, 𝑗)代表在𝑡 − 1時出現的 Coincidence 為 i,在 t 時出現的 Coincidence 為 j,而(𝑖, 𝑗)內的值代表此種狀況發生的次數。舉例來說,

矩陣(6,8)中的數字 12,代表在𝑡 − 1時出現的 Coincidence 為 6,在 t 時出現的 Coincidence 為 8,而(𝑖, 𝑗)內的數字 12 代表此種狀況發生了 12 次。學習階段結束後,

可以取得𝑁𝑐 ∗ 𝑁𝑐大小的時間相鄰矩陣,c 為 Coincidence 的總個數。最後將時間相鄰 矩陣轉換成馬可夫圖(Markov Graph)作為 TP 分群的依據,如圖 12 所示,可視為一個 機率性的有限狀態機,記錄每一個狀態轉換至其它狀態的機率。在 HTM 中利用馬可 夫圖紀錄各 Coincidence 之間的轉換機率。

表 4-1、時間相鄰矩陣範例

#1 #2 #3 #4 #5 #6 #7 #8

#1 4 2 13 1 3 2 3 1

#2 0 1 0 9 2 3 14 2

#3 8 2 2 7 5 0 4 1

#4 0 8 4 3 1 3 2 9

#5 2 1 7 1 3 0 2 1

#6 1 4 1 2 1 5 0 12

#7 1 9 4 0 1 3 4 2

#8 3 1 3 11 0 8 3 1

(36)

27

圖 4-5、表 4-1 的馬可夫圖

b. 時序性分群(Temporal Pooler, TP)

TP 是根據 SP 產生的時間相鄰矩陣所建立之馬可夫圖來進行時序分群。利用匯聚 階級分群法 [40],先將所有的 Coincidence 定義為個別獨立的樣本,根據分群相關性 高的兩個樣本將被分為同一群,然後再找尋下一個相關性高的樣本來分群。在此定義 一個參數,決定群的最大個數,當群內的樣本個數達到設定值時,即完成此次的分群。

之後將已完成分群的群組從馬可夫圖內移除,在重啟下一次分群,直到所有樣本皆完 成分群為止,如範例圖 4-6 所示,群最大數設定為 3,第一次分群為群組 2、4 和 7,

第二次分群為群組 3、6 和 8,最後,第三次分群為群組 1 和 5。

圖 4-6、匯聚階級分群法範例

(37)

28

(2) 推論階段

當節點訓練結束後,結束學習運算階段,開始對輸入資料產生推論。在推論階段 中,每筆輸入資料將與節點內部的 Coincidence 進行比對,來找出輸入資料與各 Coincidence 相似的程度。SP 以高斯機率分佈模型來表示:在高斯機率分佈模型中,

計算輸入與各 Coincidence 的尤拉距離,此距離使用下述式子轉換成信念向量(Belief Vector),藉由高斯機率分佈計算輸入之於節點記憶中各 Coincidence 的機率分佈強度。

σ 為自訂參數。

𝑦𝑗 = 𝑒−(𝑑(𝑥,𝑤))2/2𝜎2 (4-2)

在學習過程中,節點以時間資訊結合 Coincidence 形成 TP。每一個 Coincidence 會對 應一組 TP。於推論階段中,每一個階層式時序記憶節點的推論輸出是一個長度為 y 的向量,y 為 TP 學習產生的總分組數。向量中每一筆資料𝑦𝑗代表一個 TP,其內部資 料表示輸入之於該分群的高斯機率分佈。高斯機率分佈提供了節點歸納與增進學習的 能力,輸入可以藉由學習過的空間樣本表現,各節點不需要在一個階層中完全學習所 有訓練資料的輸入樣本,新的輸入可藉由過去學習的樣本表現出新的推論信念,並類 似於其他相似概念的推論信念。圖 4-7 敘述整個節點運算的過程:圖 4-7 (a)感測節點 讀入的資料首先在 SP 中建立 Coincidence,並同時統計各 Coincidence 出現的次數與 相互轉換的次數,形成馬可夫圖。圖 4-7 (b)中利用前述的馬可夫圖,TP 中使用匯聚 階級法將資料依照時間相關性的高低來分群。在推論階段中(c),所有的輸入將根據節 點內部於學習過程中形成的推論模型來輸出對應的推論信念。

(38)

29

圖 4-7、階層式時序記憶節點運算流程

4.3 階層運算

首先於學習階段中,影像資料輸入底層的節點,讓所有的底層節點進行學習。完 成學習之後,節點開始對學習的結果進行推論,輸出的推論結果將成為下一層的輸入 資料。重複學習與推論的運算步驟,再將新的推論結果傳遞至更高層,直到所有的節 點皆完成學習為止。

階層式時序記憶網路中的高層節點由多個子節點提供輸入,每一筆底層提供的輸 入在進入運算節點之前會先進行串接,形成一筆新的輸入向量,進入上一層節點的空 間共用群中來進行學習與推論,如圖 4-8。空間的資訊於 SP 中降低了樣本的解析度 (Resolution),常見的連續輸入被 TP 分群。網路於推論階段時,如果輸入的時間序列 關係如同 TP 內的分群,將會產生相同的推論輸出而降低時間性的解析度。新的空間 與時間關係將於下一個階層繼續歸類分群,形成空間於時間的不變特徵。

(39)

30

圖 4-8、階層間輸出的串接

(1) 階層訊息傳播方式

階層式時序記憶於各個階層之間的推論信念是使用貝氏網路[38]的機率推論概 念來傳播[38],如下圖 3-2。圖 4-9 的節點 m1與 m2的輸出串接後形成新的輸入,進 入節點 k。經過節點公式運算後,使用學習的推論模型產生來推論輸出。對靜態辨識 問題而言,階層式時序記憶演算法的輸出由公式 3-22 求出。其中節點內 Coincidence 的數量為𝑁𝑐

𝜆𝑘(𝑟) = ∑𝑁𝑗=1𝑐 𝑃(𝑐𝑗|𝑔𝑟)𝑦(𝑗) (4-3)

(40)

31

圖 4-9、貝氏機率傳播

圖 4-9 的參數說明如下:

𝐶𝑘表示節點 k 中記憶的 Coincidence 的隨機變數;𝑐𝑖𝑘表示節點 k 中第 i 個 Coincidence;𝐺𝑘表示節點中組成的時序分組的隨機變數;𝑔𝑖𝑘表示節點 k 中第 i 個 時序分組;𝑒表示節點所見的輸入樣本;𝑃(𝑒|𝐺𝑘):時間共用群的推論輸出,向 量長度為節點 k 中的總時序分組數。根據所記憶之時序分組推論輸入之於分組的 機率分佈;𝑃(𝑒|𝑔𝑖𝑘)為推論輸出中個別向量資料,表現第 i 個分組與輸入的機率 分佈;𝑃(𝑒|𝐶𝑘)為空間共用群的推論輸出,表現輸入與各記憶 Coincidence 的相 似程度;𝑃(𝑒|𝑐𝑖𝑘)\為空間共用群推論輸出中的個別向量資料,使用高斯推論模型 來求出其機率分佈;𝑃(𝐶𝑘|𝐺𝑘)為節點中各 Coincidence 與時序分組的對應關係,

藉由時間相鄰矩陣做出的馬可夫圖形與時間共用群產生的分群中而找出;𝜆k為節 點 k 的推論輸出,正比例於𝑃(𝑒|𝐺𝑘)。λk(r)為輸出向量中第 r 個元素中的資料,

正比例於𝑃(𝑒|𝑔𝑟𝑘)。

4.4 結合辨識演算法

為了將階層式時序記憶推論出的資料運用於辨識問題,如圖 4-10 於網路最高層 導入監督式學習概念的分類器。階層式時序記憶利用非監督學習的方式,藉由訓練資

(41)

32

料建立階層式推論模型。但模型的推論信念輸出若不加以命名,將無從得知其代表的 意義為何。為此,分類器使用標號資料行監督式學習,將學習模型根據訓練資料產生 的推論信念分類。訓練資料的標記,由標號資料輸入節點再讀入網路之中,面對視角 無關辨識問題的高維度推論輸出,本論文中使用支持向量機(Support Vector Machine)

作為高層分類器。因使用監督式學習訓練分類器,階層式時序記憶並不是一個純生成 模型,在文獻[36]中,將階層式時序記憶定位為非辨識模型(non-discriminative model)。 訓練資料的標記資料不參與頂層節點以外的學習與推論運算,僅在網路訓練的最後階 段分類模型行使非監督式學習歸納的推論信念。

圖 4-10、非辨識模型

(42)

33

第五章 實驗與分析

5.1 系統實驗環境

本論文的硬體設備及系統開發環境相關內容,如下表 5-1 所示。

表 5-1、系統環境表 系統的實驗硬體設備

CPU Intel Q9400 2.66GHz

RAM 4.0GB

系統開發環境

作業系統 Microsoft Windows XP 開發環境 Visual Studio 2008 使用函式庫 OpenCV library 2.1

使用 HTM 工具 Numenta Vision Toolkit 1.7.1

5.2 手勢資料庫建立

本論文所使用自行建立的多角度手勢資料庫,人數共有四人,背景環境共七類,

單純背景一種(單一顏色之牆壁,如白牆),複雜背景 7 種(周遭的生活環境,如圖 5-1 所示)。此資料庫包含三種手勢:剪刀(4242 張)、石頭(3841 張)和布(4097 張),影像維 度大小為 640*480,角度變化為左右至 60 度(如圖 5-2 (a)),前後至 45 度(如圖 5-2 (b)),

以中指為軸心旋轉至 30 度(如圖 5-2 (c))。相對於其它研究的實驗,本資料庫具有相當 豐富的光線和角度變化,將更能反應手勢辨識器在實際應用的執行效果。

(43)

34

圖 5-1、資料庫之不同背景圖

(a) (b) (c)

圖 5-2、角度變化示意圖,(a)左右 60 度,(b)前後 45 度,(c)以中指為軸心旋轉 30 度

5.3 實驗結果

由於本論文的主旨為克服手勢辨識上的角度問題,因此,於資料庫內挑選出包含 多種角度變化的原始影像,三種手勢各 150 張,經過第三章描述的前處理步驟處理後,

作為 HTM 模型的訓練影像,如圖 5-3。

(44)

35

圖 5-3、多種角度的訓練影像

另外,再挑選出單純背景的三種手勢各 1000 張和 3 種複雜背景的三種手勢各 200 張做為測試影像,辨識結果如表 5-2,圖 5-4 到圖 5-6 為測試影像。

表 5-2、本論文提出之多角度手勢的辨識結果

背景種類 手勢種類 訓練張數 測試張數 辨識率 平均 單純背景

剪刀 150 1000 92.4%

92.5%

石頭 150 1000 93.5%

布 150 1000 91.7%

複雜背景(1)

剪刀 150 200 87.5%

87.3%

石頭 150 200 93%

布 150 200 81.5%

複雜背景(2)

剪刀 150 200 91.5%

91.8%

石頭 150 200 95.5%

布 150 200 89.5%

複雜背景(3)

剪刀 150 200 92.5%

石頭 150 200 94.5% 91%

布 150 200 86%

(45)

36

圖 5-4、布的測試影像

(46)

37

圖 5-5、石頭的測試影像

(47)

38

圖 5-6、剪刀的測試影像

(48)

39

為了證實本論文提出之多角度手勢辨識方法的效能,本論文也使用 Adaboost 演 算法和 SVM 演算法來進行實驗比較。由於 Adaboost 需要龐大的訓練資料來建立辨識 模型,因此從資料庫中選取每種手勢各 1000 張做為正向樣本,以及不存在手勢影像 的 2500 張隨機背景圖作為負向樣本,來學習並建構手勢偵測模型,並結合 SVM 辨 識器對偵測出來的手勢進行辨識;在實驗方面,使用和驗證單純背景效能相同的 1000 張測試影像作為驗證,辨識結果如表 5-3 所示;而 SVM 演算法,則是挑選每種手勢 150 張,同樣由第三節描述的前處理步驟處理後,使用相同的 1000 張測試影像作為 驗證,辨識結果則如表 5-4 所示。

表 5-3、Adaboost+SVM 演算法的辨識結果

剪刀 石頭 布

訓練張數(正向) 1000 150 150 訓練張數(負向) 2500 2500 2500

測試張數 1000 1000 1000 辨識率 83.1% 90.9% 86.3%

平均 86.8%

表 5-4、單純使用 SVM 演算法的辨識結果

剪刀 石頭 布

訓練張數 150 150 150 測試張數 1000 1000 1000

辨識率 81.9% 92.1% 83.4%

平均 85.5%

由實驗結果可見,於角度問題上,本論文提出的方法確實比現行的辨識器具有更 高的強健性和正確性,且在有光線變化的環境也具有相當的容忍性。

(49)

40

5.4 分析與討論

觀察錯誤的辨識結果(圖 5-7),發現錯誤皆來自於剪影的錯誤,原因可分為兩種,

首先是前處理的問題,在膚色偵測或背景分離時的不穩定,讓手勢區域影像產生破碎,

或是在前臂分離時,由於手臂的邊緣資訊過於強烈,讓邊緣重心偏離手掌太遠,致使 前臂的雜訊過強;再者是角度的問題,像布和剪刀,若手的中心軸旋轉過大,讓攝影 機擷取的原始影像內,手指已經交疊在一起,那麼在之後進行的前處理之中,便無法 呈現出手指的存在,所以無法避免辨識的失敗;表 5-5 為多角度手勢辨識的混淆矩陣。

圖 5-7、辨識錯誤的影像

表 5-5、多角度手勢辨識混淆矩陣

辨識結果 輸入

剪刀 石頭 布

剪刀 96.4% 1.5% 3.1%

石頭 1.9% 97.5% 0.6%

布 3.5% 0.8% 95.7%

Figure

Updating...

References

Related subjects :