• 沒有找到結果。

LSTM 法則應用於連續手勢辨識之研究──手勢辨識系統軟體與硬體於 FPGA 實作

N/A
N/A
Protected

Academic year: 2021

Share "LSTM 法則應用於連續手勢辨識之研究──手勢辨識系統軟體與硬體於 FPGA 實作"

Copied!
54
0
0

加載中.... (立即查看全文)

全文

(1)國立臺灣師範大學 資訊工程研究所碩士論文. 指導教授: 黃 文 吉 博士. LSTM 法則應用於連續手勢辨識之研究── 手勢辨識系統軟體與硬體於 FPGA 實作. Continuous Hand Gesture Recognition by LSTM── Development of Software and FPGA-Based Hardware Classification System. 研究生: 中華民國. 鄧凱中 109 年 107. 撰 76. 月.

(2) 中文摘要. 致謝 我要在此鄭重的感謝系統晶片實驗室的指導教授,黃文吉教授。在實驗室裡, 幫我有機會藉由修課、實驗室老師的教材與學長姐的傳承,讓我擁有完整的時間 與資源,好好的把研究完成,才得以順利完成學位論文。每當我遇到困難、瓶頸 時,老師總是很高興的給予我指點,同學總是在我低潮的時候給予鼓勵,讓我能 重新燃起信心,重拾動力的前進。我非常高興能加入黃文吉教授的研究團隊。 再來我要感謝默默支持我的家人,在這段時間裡給與我無悔的支援,有時受 到挫折,家人總是在家裡默默的等待我回家,給予我一個最溫馨、安全的避風港。 最後我要感謝研究室的研究夥伴,同學、學弟妹、學長姐們,在研究的路上 因為有你們的陪伴,我才能夠堅持的走完這一段路,有時我們因為論點不同而爭 論著,有時我們因為低潮而互相鼓勵著,在各種困難的克服後,我很高興我們可 以一起分享這快樂與成就感。 最後感謝所有幫助過我的人,無論是指教、質疑、亦或是指導,都讓我獲益 良多,由於篇幅的限制,無法一一列出,但我不會忘記你們的幫助,讓我能完成 研究。. i.

(3) 中文摘要. 中文摘要 本論文考量現實應用的方便性與實際應用,選擇現場可程式邏輯門陣列 (Field Programmable Gate Array, FPGA)來硬體電路實現,並對電路運算單元參數 化,以應變需求的變化。而演算法使用長短期記憶(Long Short-Term Memory, LSTM) [1]來訓練模型與手勢辨識。 LSTM 作為設計電路之模型,跟傳統遞歸神經網路(Recurrent Neural Networks, RNN) [2]不同的是,RNN 同一時間點 t 的輸入都在同一層面,將上一 層的輸出當作下一層的輸入,但時間點 t 產生的梯度在往後傳遞幾層後就消失為 一大難題。而 LSTM 使用 Input Gate、Output Gate 與 Forget Gate 三個控制閘成功 的解決時間軸上梯度消失的問題,因此選擇 LSTM 為本論文的演算法則。 LSTM 模型以 Keras [3]平台來訓練與驗證,辨識率高達 98%。本論文的訓練 與辨識資料庫使用擁有陀螺儀跟加速器的手機做為 Sensor 來收集手勢資料,並 收集本實驗室多人的動作為資料庫,並對資料做圖形化來篩選優良的訓練資料。 圖形或者影像辨識需要瞭解艱深且複雜的公式,還必須有能力編碼將公式實踐出 來,對手勢的辨識如果使用傳統影像辨識的方法將會增加運算的時間、大量的運 算資源消耗與記憶體儲存空間的需求。本論文分別使用手機陀螺儀與加速器的 X、 Y、Z 軸數據為訓練資料,與傳統的影像辨識相比,差別為輸入資料每一筆的維 度變成一維,節省硬體儲存資源與運算的複雜度。. 關鍵字: 類神經網路、摺積類神經網路、系統晶片設計、FPGA、RNN、LSTM、 Machine Learning. ii.

(4) 目錄. 目錄 內容 致謝.................................................................................................................................. i 中文摘要......................................................................................................................... ii 目錄................................................................................................................................ iii 附表目錄......................................................................................................................... v 附圖目錄........................................................................................................................ vi 第一章 緒論................................................................................................................... 1 1.1 研究背景與動機 ................................................................................................ 1 1.2 研究目的與方法 ................................................................................................ 3 1.3 全文架構 ............................................................................................................ 5 第二章、基礎理論及技術背景..................................................................................... 6 2.1 人工智慧介紹 .................................................................................................... 6 2.2 類神經網路介紹 ................................................................................................ 6 2.3 RECURRENT NEURAL NETWORK .......................................................................... 7 2.4 LONG SHORT-TERM MEMORY ............................................................................. 8 2.5 KERAS ................................................................................................................. 9 2.6 C 與 JAVA 程式語言........................................................................................ 10 2.7 FPGA ................................................................................................................ 11 第三章 手勢辨識軟體系統......................................................................................... 12 3.1 軟體系統介紹 .................................................................................................. 12 3.1.1 HDF5......................................................................................................... 13 3.2 辨識軟體架構 .................................................................................................. 13 3.2.1 C 語言 ............................................................................................................ 14 3.2.2 JAVA .............................................................................................................. 16 第四章 手勢辨識硬體系統......................................................................................... 17 4.1 硬體介紹 .......................................................................................................... 17 4.2 電路架構 .......................................................................................................... 17 4.2.1 Interface of Circuit .................................................................................... 18 4.2.2 Matrix Operations and Fully Connected Computation Unit ..................... 18 4.2.3 Gate Values Computation Unit ................................................................. 19 4.2.4 Updating of State and Memory Cell Unit ................................................. 23 第五章 實驗數據及分析............................................................................................. 35 5.1 開發平台與實驗環境介紹 .............................................................................. 35 5.2 軟體手勢辨識結果 .......................................................................................... 37 iii.

(5) 目錄. 5.3 硬體資源消耗 .................................................................................................. 42 第六章 結論................................................................................................................. 44 參考文獻....................................................................................................................... 45. iv.

(6) 附表目錄. 附表目錄 表 4.2.3- 1 單精度浮點數運算硬體資源.............................................................. 20 表 5.1- 1 PC 規格 ......................................................................................................... 35 表 5.1- 2 STRATIX IV GX EP4SGX230 規格............................................................... 36 表 5.2- 1 單一手勢辨識率 .......................................................................................... 41 表 5.2- 2 連續手勢辨識率-1 ...................................................................................... 41 表 5.2- 3 連續手勢辨識率-2 ...................................................................................... 41 表 5.3- 1 單位 SIGMOID 活化函數硬體電路之硬體資源消耗比較 .......................... 42 表 5.3- 2 單位 TANH 活化函數硬體電路之硬體資源消耗比較 ............................... 42 表 5.3- 3 MATRIX OPERATIONS UNIT 硬體資源使用圖 .............................................. 43 表 5.3- 4 FULLY CONNECTED COMPUTATION UNIT 硬體資源使用圖.......................... 43 表 5.3- 5 GVCU 與 UDU 硬體資源使用圖................................................................ 43. v.

(7) 附圖目錄 圖 2.2- 1 FEEDFORWARD NEURAL NETWORK 架構圖 .................................................... 7 圖 2.2- 2 RNN 架構圖 ................................................................................................... 7 圖 2.5- 1 KERAS BACKEND SELETION........................................................................... 10 圖 3.1- 1 軟體完整架構圖 .......................................................................................... 12 圖 3.1.1- 1 HDF5 架構圖 ............................................................................................. 13 圖 3.2.1- 1 C 語言連續手勢辨識系統架構圖 ............................................................ 14 圖 3.2.2- 1 JAVA REAL TIME 連續手勢辨識系統架構圖 .......................................... 16 圖 4.2- 1 手勢辨識架構圖 .......................................................................................... 17 圖 4.2.1- 1 INTERFACE 架構圖 ..................................................................................... 18 圖 4.2.3- 1 SIGMOID 與 HARD SIGMOID ......................................................................... 20 圖 4.2.3- 2 IEEE 754 單精度浮點數 .......................................................................... 21 圖 4.2.3- 3 GATE VALUES COMPUTATION UNIT 電路模型圖 ....................................... 21 圖 4.2.3- 4 SIGMOID 資料流程圖 ................................................................................. 22 圖 4.2.3- 5 HARD TANH 資料流程圖............................................................................. 22 圖 4.2.4- 1 UPDATING OF STATE AND MEMORY CELL UNIT 電路架構圖 ..................... 23 圖 4.2.4- 2 UDU CONTROLLER INTERFACE .................................................................. 24 圖 4.2.4- 3 FSM 控制訊號流實例............................................................................... 25 圖 4.2.4- 4 FSM 控制訊號流實例 2............................................................................ 25 圖 4.2.4- 5 FSM 控制訊號流實例 3............................................................................ 26 圖 4.2.4- 6 FSM 控制訊號流實例 4............................................................................ 26 圖 4.2.4- 7 FSM 控制訊號流實例 5............................................................................ 27 圖 4.2.4- 8 FSM 控制訊號流實例 6............................................................................ 27 圖 4.2.4- 9 FSM 控制訊號流實例 7............................................................................ 28 圖 4.2.4- 10 FSM 控制訊號流實例 8.......................................................................... 28 圖 4.2.4- 11 FSM 控制訊號流實例 9 .......................................................................... 29 圖 4.2.4- 12 FSM 控制訊號流實例 10........................................................................ 29 圖 4.2.4- 13 FSM 控制訊號流實例 11 ........................................................................ 30 圖 4.2.4- 14 FSM 控制訊號流實例 12........................................................................ 30 圖 4.2.4- 15 FSM 控制訊號流實例 13........................................................................ 31 圖 4.2.4- 16 FSM 控制訊號流實例 14........................................................................ 31 圖 4.2.4- 17 FSM 控制訊號流實例 15........................................................................ 32 圖 4.2.4- 18 FSM 控制訊號流實例 16........................................................................ 32 圖 4.2.4- 19 FSM 控制訊號流實例 17........................................................................ 33 圖 4.2.4- 20 FSM 控制訊號流實例 18........................................................................ 33 圖 4.2.4- 21 FSM 控制訊號流實例 19........................................................................ 34 vi.

(8) 圖 5.1- 1 STRATIX IV GX EP4SGX230 ........................................................................ 36 圖 5.2- 1 手勢示意圖 .................................................................................................. 37 圖 5.2- 2 手勢 1 波形圖 .............................................................................................. 38 圖 5.2- 3 手勢 2 波形圖 .............................................................................................. 38 圖 5.2- 4 手勢 3 波形圖 .............................................................................................. 39 圖 5.2- 5 手勢 4 波形圖 .............................................................................................. 39 圖 5.2- 6 手勢 5 波形圖 .............................................................................................. 40 圖 5.2- 7 手勢 6 波形圖 .............................................................................................. 40. vii.

(9) 緒論. 第一章 緒論 1.1. 研究背景與動機 跟著時代科技的進步,人類對機械的控制逐漸從控制器轉變為感應控制,. 不只增加了便利性,也增加了人機互動的可能性與多樣性,從對電器的控制到人 對人工智慧(Artificial Intelligence, AI)的各種生活應用,可以讓機器人成為人類的 夥伴。 AI 的產生是為了幫人類解決問題,但是科技日益漸新,面臨的問題是難度 一直增加,如果計算機能夠自己學習去解決問題,那生活將會變得非常便利,科 技來自於人的需求。 AI 的發展中有幾個瓶頸。計算機的運算能力,當時的記憶體的有限與計算 無法處理實際 AI 面臨的問題;計算複雜度太高與指數爆炸,很多問題只可能在 趨近於無限的時間中獲得解答;無法回答人類不知道答案的問題,機器程序由人 類所編寫出來,所以機器同樣不能解決人類不知道答案的問題。到了近代,硬體 設備的進步,運算能力、平行處理的能力上升再加上儲存成本的降低,使得巨量 的資料可以在有限,甚至是短時間內運算完成;並且因為機器學習(Machine Learning, ML) [4]的興起,讓計算機開始有了思考學習的能力。 機器學習是人工智慧的一個分支,涉及統計學、機率論等多門學科,機器學 習的宗旨是讓電腦可以自動學習,利用規律對未知的資料進行預測。深入瞭解機 器學習的發展脈絡有助於我們學習機器學習,亦或者是人工智慧的框架。深度學 習是機器學習的分支,嘗試著使用複雜且多重非線性變化的函式構成多層對資料 1.

(10) 緒論. 作處理的演算法。 從 1950 年代開始電腦的出現就被寄予厚望,希望能研發出超越人類運算能 力、比人類聰明的人工智慧。其中的分支之一在 1980 年代曾經崛起一時,叫做 「類神經網路」(Artificial Neural Network, ANN),1986 年兩位學者 Rumelhar 與 Hinton 共同發表了反向傳播(Backpropagation, BP),成功的解決複雜計算量的難 題,掀起了對類神經網路研究的熱潮,但是好景不長,短期之內就遭遇瓶頸,深 度學習的反向傳播會造成梯度消失的難題,讓類神經網路達到 3 層以上的層數就 幾乎是無功用的。 Schmidhuber 與 Hochreiter 在 1997 年後開始研究當時新穎並 相當重要的觀念,解決了訓練神經網路的難題,就是 LSTM。 在深度學習中,其中一個熱門的模型為 RNN,相較於其他神經網路擅長處 理與時間有密切關係的問題,但是類神經網路會因為遞歸權重指數爆炸或者消失 的問題的無法處理隨,與 LSTM 結合便成為了很好的解決方式。 手勢辨識是一個基於想要便利生活而研究的方向,如果一直都使用電腦做為 運算的平台就顯得十分受限於場所,因此本論文決定使用可程式系統晶片 (System on Programmable Chip, SoPC)在 FPGA 上做硬體實現,不只是便利性,更 可以在硬體電路做平行加速增加運算速度,讓應用性與可能性的大幅提高。. 2.

(11) 緒論. 1.2. 研究目的與方法 本論文主要研究目的為連續手勢辨識,使用 LSTM 的技術與收集本實驗室. 成員產生的數據而成的資料庫,總數約為 3000 筆篩選過後的優良資料,以 FPGA 之硬體架構實現。 一個完整的神經網路模型要經過學習後才具有辨識的能力,在學習的階段使 用 Keras 之機器學習模型,使用 Keras 來對神經網路模型內部的權重參數(Weights) 與偏移值作學習,學習階段會使用到向前傳遞(Froward Propagation)與向後傳遞 (Back Propagation)調整參數到最佳的精確度,辨識階段使用 Keras 訓練的參數作 向前傳遞便可以得到辨識結果,本論文將辨識部分作硬體實現。 研究所使用的手勢數據資料為收集本實驗室研究生之手勢資料,分別把每個 人的訓練資料都經過圖形顯示確保資料的正確性,讓同學熟知手機的陀螺儀與加 速器感測器的使用方式,這樣採集 2180 筆訓練資料,測試資料 1000 筆。 遞歸神經網路針對時間有高度相關的輸入資料有較好的學習效果,而長短期 記憶可以幫助遞歸神經網路來給予上級輸出、該級輸出權重,加權運算後為最後 的輸出結果。 在 Keras 平台上訓練完成與辨識確保精確度與可信度後,要移植到 FPGA 上 實現硬體,但是由於 Keras 使用的程式語言為 Python,是一種高階語言,很難去 瞭解內部的運算細節,本論文先選擇 C 語言上再重現一遍手勢辨識系統,由於 C 語言更接近硬體描述語言,方便日後硬體電路設計的驗證與確定演算法的運算細 節。再來為了嘗試系統未來的可能性與即時連線辨識的可行性,使用了電腦編寫 JAVA 程式語言來重現手勢辨識演算法,並使用 WIFI 把手機陀螺儀與加速器感 測器的接收到數據即時傳送給電腦端運算,在手機與電腦成功的辨識後,開始最 3.

(12) 緒論. 後的硬體化階段。 本論文使用 Altera Quartus II 作為硬體開發軟體,Altera Quartus II 為曾經 Altera 股份有限公司開發的電子設計自動化(Electronic Design Automation, EDA) 軟體。可以由使用者選擇使用 Verilog、VHDL 等硬體描述語言(Hardware Description Language, HDL)來達到邏輯模擬、電路正確性驗證、邏輯合成等相關 的功能,對程式的編譯,將完成編譯的程式碼成實體的硬體,並同時對電路電路 資源消耗、功率消耗、系統運算時間等多項效能的量測。最後模擬輸出結果,使 用 ModelSim 來模擬電路輸出結果波形圖來檢視運作狀態,並確保硬體電路結果 的可信度與正確度。. 4.

(13) 緒論. 1.3. 全文架構 本論文的架構共分為六個章節,分別內容包含以下概述: 【第一章】緒論 說明本論文的研究時空背景與動機、研究目的與方法以及本文架構。 【第二章】基礎理論及技術背景 介紹基礎本論文使用的類神經網路、基礎理論、軟體驗證。 【第三章】軟體系統架構 【第四章】硬體系統架構 【第五章】實驗數據及分析 【第六章】結論. 5.

(14) 基礎理論及技術背景. 第二章、基礎理論及技術背景 2.1. 人工智慧介紹 人工智慧的發展可以追溯到二次世界大戰末期,為了解決軍事上情報的問題,. 科學家開始發展擁有智慧的機器。1956 年 McCarthy 主持了 Dartmouth 會議,開 啟了人工智慧史。人工智慧的始祖中,最有名的為大家熟知的 Alan Mathison Turing,也是奠定電腦科學基礎的科學家。 現代人工智慧的定義是:一個計算機擁有人類的知識與思考能力,並具有學 習、推理判斷問題的能力,而人工智慧的產生過程是:人類對於外界的刺激與面 臨的問題,開始尋找解決的方法,開始推理、學習、最後找到解答的過程,將這 些過程分析拆解後,成為一些簡單的區塊,再分別把這些只有單一功能的區塊編 寫成程式碼,將這些問題模型化讓電腦更有能力與系統化的應付更難的問題。能 夠解決問題的系統,就稱為人工智慧系統。. 2.2. 類神經網路介紹 為了在語音跟影響辨識擁有與人腦相類似的功能,1940 年起,科學家. 開始發展最簡單的類神經網路,經歷了 40 年的發展,一度陷入低潮,近年來又 再度復甦。 電腦的功能日益強大,但還是無法完全的達到人腦所能及的地步,尤其在影 像處理與語音辨識尤為困難,證明了人類還沒有完全了解人腦的思考邏輯,而要 如何達到可以跟人腦匹敵的電腦,是科學家的夢想。 類神經網路已經發展多年,嘗試去模仿人類的神經系統,由眾多非線性的神 6.

(15) 基礎理論及技術背景. 經元間連結所組成,模擬生物傳輸訊息的方式,以類似的方式從外部環境或者其 他神經元接收訊息,而神經元通常以平行運算的方式進行,可以平行處理大量的 資料,並自動分析與學習特徵,使得最後能得到正確的輸出,其中在訓練階段需 要不斷的反覆訓練直到精確度達到目標。 本論文使用的類神經網路模型包括了一個 Input Layer、中間的 Hidden Layer 與最終的 Output Layer,輸入層為一層輸入的數量為 6,隱藏層為一層其中的神 經元數量為 32,輸出層為一層輸出的數量為 7,每一層之間的神經元使用可以調 整的權重相互連接。神經網路都需要經過訓練學習階段,藉由學習修正權重讓輸 入能夠正確的被辨識出來。下圖 2.2-1 為神經網路的向前傳遞與圖 2.2.-1 RNN 的 神經網路:. Input Layer. Hidden Layer. Output Layer. 圖 2.2- 1 Feedforward Neural Network 架構圖. 圖 2.2- 2 RNN 架構圖. 2.3. Recurrent Neural Network 近幾年 RNN 的發展,在處理與時間相關問題受到重視,相較其他的神經網. 路,遞歸神經網路在針對需要考慮前後文方面的問題有很好的結果。 遞歸神經網絡由 Jürgen Schmidhuber 來奠下基礎,Jürgen Schmidhuber 為一 7.

(16) 基礎理論及技術背景. 位瑞士人工智慧 Lab IDSIA 的類神經網路研究者,從 1987 年以來,一直鑽研於 自我改進式(Self-Improving)與問題解決(Problem-Solver)的研究,1991 年,他為了 度學習神經網路的先驅,奠下了非常重要的基礎。 Jürgen Schmidhuber 跟慕尼黑工業大學的實驗室共同合作研發遞歸神經網 路的其中一種分支,技術的革新對手寫體辨識、語音辨識、機器翻譯、與圖片註 釋技術,被現在各大公司所應用。 大多數的神經網路是需要人類給予答案來學習的,依賴著反向傳播來學習, 反向傳播是 1970 年 Seppo Linnainmaa 提出的自動鏈式求導方法(Automatic Differentiation, AD),是著名的反向傳播算法的雛形,但是反向傳播對深度學習 與 RNN 來說不是很好用,1991 年 Jürgen Schmidhuber 的學生 Sepp Hochreiter 研 究深度學習的時候發現了問題所在,就是梯度消失的問題。後來他們使用了一種 叫做 LSTM 的深度學習 RNN 解決了這個問題,到現在 LSTM 已經被廣泛的應 用。. 2.4. Long Short-Term Memory 長短期記憶是遞歸神經網路的分支之一,1997 年首次發表,由於獨特的結. 構,LSTM 適合處理與測量與時間序列相關或者時間延遲嚴重的問題。作為非線 性模型,LSTM 可以被拿來建構複雜非線性更大型的深度神經網路。 LSTM 使用記憶來輔助決策,使用三個控制閥(Gate)來輔助記憶過去的輸出 的使用,在控制閥的運算後都會經過 Sigmoid 函數決定是否要加入。除了影響輸 出外,使用一個控制閥隨著時間的更新,將當前記憶(Memory Cell)以𝑐̃𝑡 符號表示, 透過遺忘閥(Forget Gate)來給予上級 Memory Cell(𝑐𝑡−1)權重、輸入閥(Input Gate) 給予這次 Memory Cell(𝑐̃𝑡 )權重決定要不要加入長期記憶,最後做加權運算成為最 8.

(17) 基礎理論及技術背景. 後的 Memory Cell 以𝑐𝑡 表示。輸出閥(Output)決定𝑐𝑡 到輸出的權重,而𝑐𝑡 是否能夠 加入輸出通常使用 Hyperbolic Tangent 函數,數值會落在[-1,1]之間,-1 表示會被 否定不適合加入長期記憶之中。以下的為 LSTM 的基本公式: 矩陣 W、U 為權重矩陣,𝑥𝑡 為輸入序列,𝜎為 Sigmoid 函數,而 b 則為偏移 量,𝑖𝑡、𝑓𝑡、𝑜𝑡 分別代表三個控制閥,輸入閥、遺忘閥與輸出閥對應到公式(1)(2)(3): it = σ(W i xt + U i ht−1 + bi ),. (1). ft = σ(W f xt + U f ht−1 + bf ),. (2). ot = σ(W o xt + U o ht−1 + bo ),. (3). 𝑐̃𝑡 為該次的 Memory Cell, tanh 為 Hyperbolic Tangent 函數對應到公式(4): 𝑐̃𝑡 = tanh(𝑊 𝑐 𝑥𝑡 + 𝑈 𝑐 ℎ𝑡−1 + 𝑏 𝑐 ),. (4). 𝑐𝑡−1為上級的 Memory Cell,經過加權運算後才會得到𝑐𝑡 為最後的記憶 (Memory Cell)對應到公式(5): 𝑐𝑡 = 𝑓𝑡 ⊙ 𝑐𝑡−1 + 𝑖𝑡 ⊙ 𝑐̃𝑡 ,. (5). ⊙ 為矩陣內積運算,ℎ𝑡 為隱藏層的輸出,最後辨識的結果也是從這裡判斷 對應到公式(6): ℎ𝑡 = 𝑜𝑡 ⊙ tanh(𝑐𝑡 ).. 2.5. (6). Keras Keras [5]是基於 Python 程式語言的深度學習庫。Keras 是一個神經網路 API,. Keras 由 Python 編寫,可以選擇 Google 公司開發的 Tensorflow、或者由 de Montréal 大學 LISA 實驗室開發的 Theano 與 Microsoft 公司開發的 CNTK 等為後端 (Backend),如圖 2.5-1 所示,Keras 依照選擇的後端搭建設計者的神經網路,所 9.

(18) 基礎理論及技術背景. 以可以讓 Keras 站在巨人的肩膀上發光發熱,提供使用者快速的實驗,能夠把設 計者的 idea 迅速實作出來。. Keras. TensorFlow. Theano. CNTK. 圖 2.5- 1 Keras Backend Selection. 2.6. C 與 JAVA 程式語言 C 語言在 1972 年由貝爾實驗室的 Dennis Ritchie 基於 B 語言設計而來,現今. UNIX 系統的作業系統大部分是由 C 語言設計,而 Windows 作業系統,包括 Office、 各種應用軟體。C 語言擁有語法簡潔,執行效率高,又方便跨平台,運作模式也 較高階語言更接近硬體描述語言,方便硬體電路設計上的驗證。 JAVA [6]語言是一種被廣泛使用的程式語言,優點有跨平台,物件導向,等 特性,常被應用於網頁開發與行動應用程式開發,這也是本論文會使用 JAVA 程 式語言,來測試本論文系統 Real Time 運算的可能性。 在 Keras 平台上,已經驗證了手勢辨識的準確度,符合我們的預期後,同時 也證明了此演算法的可行性,但是由於 Keras 使用的是高階語言 Python,並無法 直接的瞭解其內部運算細節。 為了設計硬體架構先打下基礎,選擇使用 C 語言來實作手勢辨識系統,因 10.

(19) 基礎理論及技術背景. 為 C 語言與硬體描述語言結構相似,當 C 語言系統建立,硬體電路設計難度將 大幅下降,C 語言系統為了多重驗證 Keras 與演算法的正確性,與可以清楚明瞭 的知道 Keras 模型權重的排列與意義。 在瞭解權重的排列與意義後,本論文想嘗試未來的發展性,為了可以達到 Real Time 的及時手勢辨識,由於 Sensor 是使用 Android 手機,因此本論文使用 JAVA 程式語言來重建一次系統,可以讓 Sensor 直接把 Input Data 透過 Wi-Fi 傳 到電腦端坐 Real Time 計算,為未來在硬體電路的 Real Time 辨識先奠下基礎。. 2.7. FPGA 現今積體電路(Integrated Circuit, IC)設計產業蓬勃發展,不過同時也面臨幾. 個大問題,就是現在設計出來的產品生命週期越來越短,複雜度也隨著時間演進 日益複雜,當複雜度提高通專案的大小也跟著提高,因此對於設計者來說有一個 有彈性(Flexibility)的設計平台可以節省大量的人力與時間,因此使用 FPGA 應用 在積體電路設計,FPGA 是一種半定製的電路,給設者一定的彈性來設計電,路 常被使用在驗證硬體電路,可以方便使用者瞭解使用的面積成本、功率消耗與電 路效能。 在硬體電路設計,使用 HDL 來設計電路,方便工程師把實際的電路以程式 碼的方式進行設計,且能透過邏輯仿真來驗證電路功能,常見的硬體描述語言包 含 Verilog [7]、VHDL 等。 本論文選擇 Altera 公司的 FPGA 開發板,其中可以由設計者挑選規格,依照 需求來選擇,本論文使用的是 DE 系列母版中 Stratix IV 來實現連續手勢辨識系 統。. 11.

(20) 手勢辨識軟體系統. 第三章 手勢辨識軟體系統 3.1. 軟體系統介紹 本論文用 C 與 JAVA 程式語言與 Keras 平台驗證結果,並深入瞭解連續手勢. 辨識的系統與演算法的正確與細節,也是為了未來方便給硬體做對照組,確保硬 體電路設計時有對照的答案。而 C 語言與 JAVA 語言建立的系統差別於 C 語言 較接近硬體描述語言,而 JAVA 程式語言則是驗證 Real Time 連續手勢辨識的可 能性。本論文使用的參數為 Keras 訓練完的模型參數,以 HDF5 的檔案儲存,軟 體讀取 HDF5 檔得到權重後,進行手勢辨識。軟體完整架構如下圖 3.1-1:. Gesture Recognition. Testing Data C. C Result. JAVA. JAVA Result. Keras. Keras Result. Model Training Weights. Training Data. Keras Sensor. Model. Testing Data. 圖 3.1- 1 軟體完整架構圖. 12.

(21) 手勢辨識軟體系統. 3.1.1. HDF5. HDF5 Files 指一種為存儲和處理大容量科學數據設計的文件格式及相應庫 文件。群組(Group):資料夾,用來分類資料集;數據集(Dataset):數據內容,可 放置多維陣列。如圖 3.1.1-1 所示,HDF5 檔案裡可以放多個 Groups,而 Group 裡面又可以放 Group 或者 Dataset。. dataset group. group dataset. HDF5. group. dataset. 圖 3.1.1- 1 HDF5 架構圖. 3.2. 辨識軟體架構 在本節將會介紹使用 C 與 JAVA 程式語言在建立連續手勢辨識系統架構,. 主要依照黃文吉教授所撰寫的「LSTM 演算法──研究方法及進行步驟」 ,分別將 各個運算式轉換成函式(Function),在組合起來後完成規格參數化的功能,可以 增加未來的延伸性(Extensibility)與彈性。. 13.

(22) 手勢辨識軟體系統. 3.2.1. C 語言. 把「LSTM 演算法──研究方法及進行步驟」分解成數個函式,軟體架構如 圖 3.2.1-1 所示,主要的函式包含 Read File、Input Layer、Forget Layer、Output Layer、 Memory Cell、Memory Cell Updating、Hidden Layer Updating、Fully Connected Layer、Statistic、Classification。 Read File:讀取在 Keras 上訓練完的模型參數與手機陀螺儀與加速器數值。 並從 HDF5 檔讀取手勢辨識系統之權重。本論文一個完整的手勢取樣 80 個時間 點(Frame),所以在確定每個 Frame 都經過運算以後這一個手勢就可以判斷了。. Start. Read File. Frame < 80. Classification No. Yes. Input Layer. Memory Cell Updating. Forget Layer. Hidden Layer Updating. Output Layer. Fully Connected Layer. Memory Cell. Statistics. 圖 3.2.1- 1 C 語言連續手勢辨識系統架構圖 14. End.

(23) 手勢辨識軟體系統. Input Layer、Forget Layer、Output Layer:包含矩陣運算、浮點數加法與最 後的 Sigmoid 活化函數,對應公式(1) (2) (3): 𝑖𝑡 = 𝜎(𝑊 𝑖 𝑥𝑡 + 𝑈 𝑖 ℎ𝑡−1 + 𝑏 𝑖 ),. (1). 𝑓𝑡 = 𝜎(𝑊 𝑓 𝑥𝑡 + 𝑈𝑓 ℎ𝑡−1 + 𝑏 𝑓 ),. (2). 𝑜𝑡 = 𝜎(𝑊 𝑜 𝑥𝑡 + 𝑈 𝑜 ℎ𝑡−1 + 𝑏 𝑜 ),. (3). Memory Cell:包含矩陣運算、浮點數加法與 tanh 活化函數,對應公式(4): 𝑐̃𝑡 = tanh(𝑊 𝑐 𝑥𝑡 + 𝑈 𝑐 ℎ𝑡−1 + 𝑏 𝑐 ),. (4). Memory Cell Updating:包含點積運算、浮點數加法與 tanh 活化函數、更新𝑐𝑡−1, 對應公式(5): 𝑐𝑡 = 𝑓𝑡 ⊙ 𝑐𝑡−1 + 𝑖𝑡 ⊙ 𝑐̃𝑡 ,. (5). Hidden Layer Updating:ht 將會做為下一個時間點的輸入傳回第一層,同時也傳 給全連接層的到這個時間點的變式結果,對應公式(6): ℎ𝑡 = 𝑜𝑡 ⊙ tanh(𝑐𝑡 ),. (6). Fully Connected Layer : 矩陣運算、浮點數加法,與 Softmax 活化函數對應 公式(7): 𝑦𝑡 : 輸出序列、V : 權重矩陣、𝑏 𝑦 : 偏移量 𝑦𝑡 = Softmax(𝑉ℎ𝑡 + 𝑏 𝑦 ), Statistics: 統計每個時間點辨識出來的手勢。 Classification: 把最後辨識的結果顯示出來。. 15. (7).

(24) 手勢辨識軟體系統. 3.2.2. JAVA. 在完成 C 語言系統後,為了與手機連接做 Real Time 運算,使用了 JAVA 語 言建立了 Real Time 連續手勢辨識系統,如圖 3.2.2-1 所示,將 C 系統中的 Read File 換成了 ServerThreadCode,並對連接做一些判斷。. Start. ServerThreadCode. Flag End==1. Classification. Idle. Connection. No. Input Layer. Yes. Yes. Yes. No. No. Memory Cell Updating. End Forget Layer. Hidden Layer Updating. Output Layer. Fully Connected Layer. Memory Cell. Statistics. 圖 3.2.2- 1 JAVA Real Time 連續手勢辨識系統架構圖 ServerThreadCode: 使用了 Java Socket API,裡面採用 Server/Client 架構來實 作,也是本論文 Real Time 傳輸的核心。在手機端如果判斷手勢停止後,將傳送 一個 Flag End 訊號給電腦端達到告知的動作,而電腦端將運算完的結果顯示在 電腦螢幕上,在此時如果手機端再次起動傳輸就會重啟程式,否則就進入是否連 線的判斷,如果連線中斷則程式結束。 16.

(25) 手勢辨識硬體系統. 第四章 手勢辨識硬體系統 4.1. 硬體介紹. 選擇 Altera DE4 高階開發平台,內部晶片採用 Stratix IV GX 晶片,優點在 於高介面性與擴充性,可以充分利用內部資源,也可以使用多個 DE4 電路板組 成大型 FPGA 系統,亦或者 ASIC 驗證系統;大容量記憶體系統,讓設計者可以 擁有一個彈性,在空間與速度中取得平衡;可以有許多外接子板供使用者選擇, 其中 RF 子板為可以使用 WIFI 或者 Bluetooth 連線的選擇。. 4.2. 電路架構. 將依照功能把演算法分割成幾個區塊轉換成幾個單位(Unit),其中包含 Interface、Matrix Operations Unit、Gate Values Computation Unit、State and Memory Cell Updating Unit、Fully Connected Computation Unit,硬體電路架構如圖 4.2-1:. Fully Connected Computation Unit. State and Memory Cell Updating Unit. Interface Gate Values Computation Unit. Matrix Operations Unit. 圖 4.2- 1 手勢辨識架構圖 17.

(26) 手勢辨識硬體系統. 4.2.1. Interface of Circuit. Interface :為了銜接電路與 DE4 電路板,中間需要一個橋梁,如下圖 4.2.1-1:. Address. Avalon_Chip_Select. Network Interface (NI). Address. My_Reset. Write Write_Data. GR_Start Write_Input. Resetn. Read. Avalon Slave Interface. Write_Data. Gesture Recognition Circuit. Read_Data GR_End. Read_Data. Source_Ready. 圖 4.2.1- 1 Interface 架構圖 本論文硬體電路的 Interface 與電路版銜接的部分,就是讓兩塊電路之間可以 溝通,其中分別有 Chip Select 晶片選擇、Address 線、Write Data 與 Read Data 資料線、致能線 Write 與 Read、剩下最後的 Reset 線。. 4.2.2. Matrix Operations and Fully Connected Computation Unit. Matrix Operations Unit 對應到演算法 Input Layer、Forget Layer、Output Layer、 Memory Cell 中的矩陣運算與浮點數加法,對應到下列公式(8) (9) (10) (11): 𝑖𝑡 : (𝑊 𝑖 𝑥𝑡 + 𝑈 𝑖 ℎ𝑡−1 + 𝑏 𝑖 ),. (8). 𝑓𝑡 : (𝑊 𝑓 𝑥𝑡 + 𝑈𝑓 ℎ𝑡−1 + 𝑏 𝑓 ),. (9). 𝑜𝑡 : (𝑊 𝑜 𝑥𝑡 + 𝑈 𝑜 ℎ𝑡−1 + 𝑏 𝑜 ),. (10). 18.

(27) 手勢辨識硬體系統. 𝑐̃𝑡 : (𝑊 𝑐 𝑥𝑡 + 𝑈 𝑐 ℎ𝑡−1 + 𝑏 𝑐 ),. (11). Fully Connected Computation Unit 對應到演算法中的 Fully Connected Layer, 其中包含了矩陣運算、浮點數加法,對應到公式(12): 𝑦𝑡 = 𝑉ℎ𝑡 + 𝑏 𝑦 ,. (12). 得到的𝑦𝑡 即為手勢辨識的結果,一個完整的手勢須將所有 y 數量做統計,結 果將是最後的判斷答案。 考量到硬體資源的限制,本論文的每一層電路都採用參數話來控制平行運算 單元的數量,在 Matrix Operations and Fully Connected Computation Unit 電路設計, 參考廖振瑋同學的論文 [8]。. 4.2.3. Gate Values Computation Unit. 對應公式(8) (9) (10) (11),雖然這四個公式本身並不相依,但是考量到低硬 體資源與低功耗設計,本論文決定分次來完成,四個公式共享電路。這樣造成要 分辨輸入的資料,因此 GVCU Controller 使用 FSM 來實現。為了在硬體資源與 效能之間達到平衡點,本論文對電路單元進行了參數化,以此增加彈性。 由於本論文志在於實現低硬體資源之連續手勢辨識系統,因此深思熟慮如何 降低 sigmoid 與 tanh 活化函數的運算 cost。比較 sigmoid 與 hard sigmoid 如公式 (13)(14)與圖: e𝑥 sigmoid(x):y = 𝑥 e +1. y ≥ 1, y = 1 ,{ y ≤ 0, y = 0 else, y. y ≥ 1, y = 1 hard sigmoid(x): y = (x × 0.2) + 0.5 ,{ y ≤ 0, y = 0, else, y 19. (13). (14).

(28) 手勢辨識硬體系統. ■sigmoid ■hard sigmoid. 圖 4.2.3- 1 sigmoid 與 hard sigmoid 參考單精度浮點數運算硬體資源比較,如表 4.2.3-1 所示。由於單精度浮點 數運算單元消耗硬體資源甚多,尤其是指數與除法運算,而且硬體的發展將受侷 限於 DSP 運算單元的數量。考量到硬體資源與時間的因素,本論文使用 hard sigmoid 做為活化函數。 Operation. Adaptive Look-Up Tables (ALUTs). Dedicated Logic Registers (DLRs). 18-bit DSP. Exponent. 631. 521. 19. ADD、SUB. 594. 376. 0. MULT. 138. 148. 4. DIV. 1646. 2074. 0. DIV(Low Latency Option). 207. 304. 16. 表 4.2.3- 1. 單精度浮點數運算硬體資源. 20.

(29) 手勢辨識硬體系統. 而 sigmoid 與 tanh 存在著轉換的公式(15)如下: tanh(x): z = 2sigmoid(2x) - 1 ,. −1≤ z≤1. (15). 因此我們將 hard sigmoid 帶入,得到我們的 tanh 公式。本實驗在浮點數運算 中是使用 IEEE754 標準,如圖 4.2.3-2 所示。對應上方 tanh 公式,在 IEEE754 標 準中對於乘以二的運算,可以對指數部分做加一所取代。. 圖 4.2.3- 2. IEEE 754 單精度浮點數. 硬體電路將使用 hard sigmoid 與 hard tanh 活化函數做電路實現,分別有 Sigmoid Circuit 與 Tanh Circuit 兩個模型,一個 GVCU Controller 與多工器,Gate Values Computation Unit (GVCU)的電路架構圖參考下圖 4.2.3-3:. To State and Memory Cell Updating Unit. MUX. Sigmoid Circuit. Tanh Circuit. GVCU Controller. From Matrix Operations Unit. 圖 4.2.3- 3 Gate Values Computation Unit 電路模型圖 21.

(30) 手勢辨識硬體系統. 在 Gate Values Computation Unit 主要的功能就是實現活化函數 sigmoid 與 tanh,但是由於浮點數指數與除法運算的資源消耗太高,因此本論文用 hard sigmoid 與 hard tanh 做為活化函數。為了貫徹低硬體資源消耗的目標,在 sigmoid 與 tanh 轉換中,將乘以二的浮點數乘法以一個加法器取代,hard sigmoid 的資料 流程對應公式(14),如圖 4.2.3-4 所示。而 hard tanh 的資料流程對應公式(15),如 圖 4.2.3-5 所示。. 圖 4.2.3- 4 sigmoid 資料流程圖. 圖 4.2.3- 5 hard tanh 資料流程圖. 22.

(31) 手勢辨識硬體系統. 4.2.4. Updating of State and Memory Cell Unit. 在本節介紹 Updating of State and Memory Cell Unit(UDU),主要在做 State 與 Memory Cell 的更新,把前面運算的結果,包含 Input Layer、Forget Layer、 Output Layer、Memory Cell 來做運算,對應公式(5) (6),結果分別傳給 Matrix Operations Unit 與 Fully Connected Computation Unit,其主要的電路架構圖,包含 Buffer、FP Adder、FP Multiplier、Tanh Circuit、UDU Controller,如圖 4.2.4-1 所 示: To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. Buffer. From Gate Values Computation Unit. 圖 4.2.4- 1 Updating of State and Memory Cell Unit 電路架構圖. 𝑐𝑡 = 𝑓𝑡 ⊙ 𝑐𝑡−1 + 𝑖𝑡 ⊙ 𝑐̃𝑡 ,. (5). ℎ𝑡 = 𝑜𝑡 ⊙ tanh(𝑐𝑡 ),. (6). 23.

(32) 手勢辨識硬體系統. UDU Controller 由三個 FSM 所組成與 Flags 來控制電路達到效果,參考圖 4.2.4-3 所示:. Vaild_ht. Flag. Mux Control Signal. Computation Control Signal. FSM1. FSM2. FSM3. Buffer Control Signal. Sel_Sink. Valid_Sink. 圖 4.2.4- 2 UDU Controller Interface. FSM1 控制輸入資料儲入正確的 Buffer,並且在輸入資料準備齊全後,舉起 Flag 告之 FSM2。FSM2 控制運算單元的運算流程,當輸入資料準備好後,FSM2 會依照 FSM1 或 FSM3 舉起的 Flag 來進行運算,並舉起 Flag 告知 FSM3 儲存運 算完成的資料回 Buffer,並會偵測是否完全的運算結束而舉起 Flag。FSM3 控制 運算部分結果,如何正確的儲存回 Buffer,供下一次運算作使用。. 24.

(33) 手勢辨識硬體系統. 以 t=1 為例,下列為 FSM 的控制訊號流程,配合公式(5)、(6): To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. Buffer. 𝑖1. FSM. FSM2. FSM3. From Gate Values Computation Unit. 圖 4.2.4- 3 FSM 控制訊號流實例 To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. Buffer. 𝑐̃1. FSM 1. From Gate Values Computation Unit. 圖 4.2.4- 4 FSM 控制訊號流實例 2 25. FSM2. FSM3.

(34) 手勢辨識硬體系統. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. 𝑐̃1. 𝑖1 Buffer. FSM1. FSM2. FSM3. From Gate Values Computation Unit. 圖 4.2.4- 5 FSM 控制訊號流實例 3. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. ⊙x FP Adder. FP Multiplier. Tanh Circuit UDU Controller. Buffer. FSM1. From Gate Values Computation Unit. 圖 4.2.4- 6 FSM 控制訊號流實例 4 26. FSM 2. FSM3.

(35) 手勢辨識硬體系統. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. Buffer. ⊙x. FSM1. FSM2. FSM3. From Gate Values Computation Unit. 圖 4.2.4- 7 FSM 控制訊號流實例 5. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. Buffer. 𝑓1. FSM 1. From Gate Values Computation Unit. 圖 4.2.4- 8 FSM 控制訊號流實例 6 27. FSM2. FSM3.

(36) 手勢辨識硬體系統. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. 𝑐0. 𝑓1. Buffer. FSM1. FSM2. FSM3. From Gate Values Computation Unit. 圖 4.2.4- 9 FSM 控制訊號流實例 7. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. ⊙y FP Adder. FP Multiplier. Tanh Circuit UDU Controller. Buffer. FSM1 From Gate Values Computation Unit. 圖 4.2.4- 10 FSM 控制訊號流實例 8 28. FSM2. FSM3.

(37) 手勢辨識硬體系統. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. ⊙y. Buffer. FSM1. FSM2. From Gate Values Computation Unit. FSM 3. 圖 4.2.4- 11 FSM 控制訊號流實例 9. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. ⊙y. ⊙x Buffer. FSM1 From Gate Values Computation Unit. 圖 4.2.4- 12 FSM 控制訊號流實例 10 29. FSM2. FSM3.

(38) 手勢辨識硬體系統. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. 𝑐1 FP Adder. FP Multiplier. Tanh Circuit UDU Controller. Buffer. FSM1 From Gate Values Computation Unit. FSM 2. FSM3. 圖 4.2.4- 13 FSM 控制訊號流實例 11. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. 𝒄𝟏. Buffer. FSM1 From Gate Values Computation Unit. 圖 4.2.4- 14 FSM 控制訊號流實例 12 30. FSM2. FSM 3.

(39) 手勢辨識硬體系統. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. 𝑐1 Buffer. FSM1. FSM2. FSM3. From Gate Values Computation Unit. 圖 4.2.4- 15 FSM 控制訊號流實例 13. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. tanh FP Adder. FP Multiplier. Tanh Circuit UDU Controller. Buffer. FSM1 From Gate Values Computation Unit. 圖 4.2.4- 16 FSM 控制訊號流實例 14 31. FSM 2. FSM3.

(40) 手勢辨識硬體系統. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. tanh Buffer. FSM1. FSM2. FSM3. From Gate Values Computation Unit. 圖 4.2.4- 17 FSM 控制訊號流實例 15. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. 𝑜1 Buffer. FSM 1. From Gate Values Computation Unit. 圖 4.2.4- 18 FSM 控制訊號流實例 16 32. FSM2. FSM3.

(41) 手勢辨識硬體系統. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. 𝒐𝟏. tanh Buffer. FSM1. FSM2. FSM3. From Gate Values Computation Unit. 圖 4.2.4- 19 FSM 控制訊號流實例 17. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. ℎ1 FP Adder. FP Multiplier. Tanh Circuit UDU Controller. Buffer. FSM1 From Gate Values Computation Unit. 圖 4.2.4- 20 FSM 控制訊號流實例 18 33. FSM2. FSM3.

(42) 手勢辨識硬體系統. ℎ1 𝒉𝟏. To Fully Connected Computation Unit. ht-1 To Matrix Operations Unit MUX. FP Adder. FP Multiplier. Tanh Circuit UDU Controller. Buffer. FSM1 From Gate Values Computation Unit. 圖 4.2.4- 21 FSM 控制訊號流實例 19. 34. FSM2. FSM3.

(43) 結論. 第五章 實驗數據及分析 本章節將展示連續手勢辨識系統軟體單一手勢、連續手勢辨識率,採集本實 驗室多位同學的資料做為訓練與辨識之資料庫。. 5.1. 開發平台與實驗環境介紹. 本論文的軟體驗證演算法所使用的 C 語言平台為 Microsoft 公司開發的 Visual Studio 2013 開發平台,提供檢視與撰寫程式碼,輔助使用者偵錯、編譯程 式;JAVA 語言的開發平台為昇陽電腦(Sun Microsystems)建立的 NetBeans 8.2, 常用於開發 Java、PHP、HTML5 等程式的開發。本論文所使用的 PC 規格參考 下表 5.1-1: CPU. Intel Core i7 7700. 主機板. PRIME B250M-A. 記憶體. DDR4 32G. 顯示卡. NVIDIA GeForce GTX 1070. 硬碟. 1T. 表 5.1- 1 PC 規格 本論文的硬體架構是建立在 Altera DE4 高階開發平台的 Stratix IV GX EP4SGX230 為開發平台,如圖 5.1-1 所示。表 5.1-1 為 Stratix IV GX EP4SGX230 開發板的詳細規格。由於 SoPC 可以迅速的將設計者的想法實現與驗證,擁有可 重複燒錄與快速編譯的功能,因此選擇 FPGA 來做為本論文的開發平台。. 35.

(44) 結論. 圖 5.1- 1 Stratix IV GX EP4SGX230 Feature. Stratix IV. Device. GX EP4SGX230. Logic Elements (LEs). 228,000. Total Memory Kbits. 17,133K. 18x18-bit Multipliers Blocks. 1,288. PCI Express Hard IP Blocks. 2. User I/Os. 744. Phase Locked Loops (PLLs). 8. 表 5.1- 2 Stratix IV GX EP4SGX230 規格 本論文選擇 Altera Quartus II 14.0 為設計硬體描述語言─Verilog 的開發平台; Quartus II 提供相當多的功能輔助設計者:語法分析、計算時序、繞線布局、元件 配置、統計資源消耗,並可以使用暫存器傳輸級(Register Transfer Level,RTL) 模擬來驗證功能的正確性。系統設計完成後,將系統掛載上 SoPC,再燒上 FPGA 開發板後,就可以驗證實現硬體電路在 FPGA 上的成功與否。. 36.

(45) 結論. 5.2. 軟體手勢辨識結果. 本章節的實驗結果為檢驗 tanh 活化函數的簡化後的辨識率,實驗結果分為 單一手勢辨識,如表 5.2-1 所示,與連續手勢辨識,如表 5.2- 2、表 5.2- 3 所示, 因此針對不同的手勢採集不同的受試資料來驗證活化函數簡化的可行性。在 Keras 演算法驗證階段 sigmoid 函數已使用 hard sigmoid,到了硬體電路設計的階 段為了降低電路消耗,盡可能的避免 Exponential Function 的計算,因此將 tanh 也轉化成 hard tanh。 本論文目前辨識的手勢分為六種,如圖 5.2-1 所示:. 手勢 1. 手勢 2. 手勢 3. 手勢 4. 手勢 5. 手勢 6. 圖 5.2- 1 手勢示意圖. 37.

(46) 結論. 為了確定手勢的品質,本論文使用 Matlab2017b 將各種手勢的資料圖型化, 歸納並記錄出六種手勢陀螺儀與加速器所產生六個數值的軌跡,未來在判斷收集 資料的品質時,以此為參考。如下圖 5.2-2 所示,上方波形圖為加速器數值圖型 化,下方波形圖為陀螺儀數值圖型化。. 圖 5.2- 2 手勢 1 波形圖. 圖 5.2- 3 手勢 2 波形圖 38.

(47) 結論. 圖 5.2- 4 手勢 3 波形圖. 圖 5.2- 5 手勢 4 波形圖. 39.

(48) 結論. 圖 5.2- 6 手勢 5 波形圖. 圖 5.2- 7 手勢 6 波形圖. 40.

(49) 結論. 單一手勢: 各手勢數量 100 次。. 受試者 1. 手勢 1. 手勢 2. 手勢 3. 手勢 4. 手勢 5. 手勢 6. 100%. 99%. 100%. 100%. 99%. 99%. 表 5.2- 1 單一手勢辨識率. 連續手勢: 各手勢數量 30 次。 手勢 1-2. 手勢 3-4. 手勢 1-5. 手勢 2-6. 手勢 5-2-6-4. 受試者 2. 95%. 100%. 100%. 100%. 95%. 受試者 3. 85%. 100%. 100%. 85%. 97.5%. 受試者 4. 80%. 100%. 100%. 80%. 85%. 受試者 5. 95%. 100%. 90%. 100%. 100%. 平均. 88.75%. 100%. 97.5%. 91.25%. 94.375%. 表 5.2- 2 連續手勢辨識率-1. 手勢 1-2. 手勢 3-4. 手勢 5-6. 手勢 2-1-5. 手勢 5-6-2. 受試者 6. 90%. 100%. 100%. 100%. 95%. 受試者 7. 95%. 100%. 100%. 100%. 100%. 受試者 8. 70%. 100%. 65%. 100%. 83%. 受試者 9. 100%. 100%. 100%. 100%. 92.5%. 平均. 88.75%. 100%. 91.25%. 100%. 92.625%. 表 5.2- 3 連續手勢辨識率-2. 41.

(50) 結論. 5.3. 硬體資源消耗. 在本章節將顯示章節 4.2.3 GVCU 活化函數實現之硬體資源比較,如表 5.3-1 與 5.3-2 與顯示本論文硬體電路設計所使用的硬體資源,透過調整參數化的改變 電路單元的數量,分別對 Matrix Operations Unit、Fully Connected Computation Unit、GVCU 與 UDU 不同單元來呈現。. Activation Function. sigmoid. hard sigmoid. ALUTs. 2063. 732. DLRs. 1722. 524. 18-bit DSP. 54. 4. 表 5.3- 1 單位 sigmoid 活化函數硬體電路之硬體資源消耗比較. Activation Function. tanh. hard tanh. ALUTs. 2026. 1326. DLRs. 1577. 900. 18-bit DSP. 35. 4. 8-bit Adder. 1. 2. 表 5.3- 2 單位 tanh 活化函數硬體電路之硬體資源消耗比較. 42.

(51) 結論. 如表 5.3-1 與 5.3-2 所示。以下 n 代表𝑖𝑡、𝑓𝑡、𝑜𝑡、𝑐̃𝑡 的數量,由 Matrix Operations Unit 一次輸入到 GVCU 的 Input 數量,對應到公式(8)(9)(10)(11)中的輸出𝑖𝑡、𝑓𝑡 、 𝑜𝑡 、𝑐̃𝑡 。. n=1. n=2. Combinational ALUTs. 4,251/ 182,400 ( 2 % ). 8,690/ 182,400 ( 5 % ). Dedicated logic registers. 8,502 / 182,400 ( 3 % ). 12,141 / 182,400 ( 3 % ). Block Memory bits. 167,963 / 14,625,792( 1 % ). 167,963 / 14,625,792( 1 % ). DSP block 18-bit elements. 8 / 1,288 ( <1 % ). 32/1288(2%). 表 5.3- 3 Matrix Operations Unit 硬體資源使用圖 n=1. n=2. Combinational ALUTs. 947/ 182,400 ( 2 % ). 1,1592/ 182,400 ( 5 % ). Dedicated logic registers. 804 / 182,400 ( 3 % ). 1,291 / 182,400 ( 3 % ). Block Memory bits. 8,192 / 14,625,792( 1 % ). 8,192 / 14,625,792( 1 % ). DSP block 18-bit elements. 4 / 1,288 ( <1 % ). 8/1288(<1 %). 表 5.3- 4 Fully Connected Computation Unit 硬體資源使用圖. n=1. n=2. Combinational ALUTs. 3,731 / 182,400 ( 2 % ). 7,367 / 182,400 ( 4 % ). Dedicated logic registers. 3,044 / 182,400 ( 2 % ). 6,054 / 182,400 ( 3 % ). Block Memory bits. 0. 0. DSP block 18-bit elements. 16 / 1,288 ( 1 % ). 32 / 1,288 ( 2 % ). 表 5.3- 5 GVCU 與 UDU 硬體資源使用圖 43.

(52) 結論. 第六章 結論 本論文實現連續手勢辨識系統在 FPGA 實現,先透過 Keras 平台訓練及驗證 後,辨識率高達 98%。由於高階語言無法明確的瞭解運算細節與權重的編排,因 此經過 C 語言與 JAVA 語言實現連續手勢辨識軟體系統,確認正確性與未來的可 能性後,在進行硬體電路實現。為了想找到硬體平行處理與硬體電路面積的平衡 點,與為了因應未來需求改變的可能性,本論文對電路進行了參數化,把模型的 運算單元與儲存單元都由參數來控制數量,以增加電路的彈性,可應用在攜帶式、 嵌入式系統低功率消耗的應用,或者在需求短時間的高速運算。. 44.

(53) 參考文獻. 參考文獻 [1] S. Hochreiter and J. Schmidhuber, "Long Short-Term Memory," Neural Computation, pp. 1735-1780, 1997. [2] J. Schmidhuber, “Deep learning in neural networks: An overview,” Neural Networks, pp. 85-117, January 2015. [3] R. Neruda and P. Vidnerova, "Evolving keras architectures for sensor data analysis," IEEE Conferences, pp. 109 - 112, 2017. [4] A. Harris, H. True, Z. Hu, J. Cho, N. Fell and M. Sartipi, "Fall recognition using wearable technologies and machine learning algorithms," IEEE International Conference on Big Data (Big Data), pp. 3974-3976, 2016. [5] F. Chollet, “Keras Documentation,” [線上]. Available: https://keras.io/. [6] 洪維恩, Java 7 教學手冊, 旗標出版社, 2015. [7] 鄭羽伸, Verilog 數位電路設計-範例寶典, 儒林出版社, 2008. [8] 廖振瑋, “LSTM 法則應用於連續手勢辨識之研究──訓練系統軟體及辨識系 統 FPGA 之實作,” 2018. [9] H. P. Gupta, H. S. Chudgar, S. Mukherjee, T. Dutta and K. Sharma, "A Continuous Hand Gestures Recognition Technique for Human-Machine Interaction Using Accelerometer and Gyroscope Sensors," IEEE SENSORS JOURNAL, pp. 6425-6432, 15 AUGUST 2016. [10] C. Lin, J. Wan, Y. Liang and Z. S. Li , "Large-Scale Isolated Gesture Recognition Using a Refined Fused Model Based on Masked Res-C3D Network and Skeleton LSTM," IEEE International Conference, pp. 52-58, 2018.. 45.

(54) 參考文獻. [11] M. Milenkoski, K. Trivodaliev, S. Kalajdziski;, M. Jovanov; and R. B. Stojkoska, "Real Time human activity recognition on smartphones using LSTM networks," IEEE Conferences, pp. 21-25, 2018. [12] H. W. Chen, Carlos Andrés Betancourt Baca and H. C. Tou, "LSTM-RNNs combined with scene information for human activity recognition," IEEE Conferences, pp. 1-6, 2017.. 46.

(55)

參考文獻

相關文件

利用 Microsoft Access 資料庫管理軟體,在 PC Windows 作業系 統環境下,將給與的紙本或電子檔(如 excel

在這次的實作遊戲中,我們必須要先對所使用到的硬體 和軟體有其基本的認識,這樣我們才能充分利用我們所擁有 的條件,進一步達成目標。首先 DE2-70 繼承了 Altera 一系 列的開發軟體,如

‡ RFID 運作原理是透過一片小型硬體的無線射頻辨識技 術晶片( RFID chips),利用內含的天線來傳送與接

電機工程學系暨研究所( EE ) 光電工程學研究所(GIPO) 電信工程學研究所(GICE) 電子工程學研究所(GIEE) 資訊工程學系暨研究所(CS IE )

4.1 多因子變異數分析 多因子變異數分析 多因子變異數分析 多因子變異數分析與線性迴歸 與線性迴歸 與線性迴歸 與線性迴歸 4.1.1 統計軟體 統計軟體 統計軟體 統計軟體 SPSS 簡介 簡介

由於 Android 作業系統的開放性和可移植性,它可以被用在大部分電子產品 上,Android 作業系統大多搭載在使用了 ARM 架構的硬體設備上使裝置更加省電

為主要的積體電路單元元件,此元件同時利用電子與電洞兩種載子,來進行電流的傳

在軟體的使用方面,使用 Simulink 來進行。Simulink 是一種分析與模擬動態