1.1 研究背景與動機
跟著時代科技的進步,人類對機械的控制逐漸從控制器轉變為感應控制,
不只增加了便利性,也增加了人機互動的可能性與多樣性,從對電器的控制到人 對人工智慧(Artificial Intelligence, AI)的各種生活應用,可以讓機器人成為人類的 夥伴。
AI 的產生是為了幫人類解決問題,但是科技日益漸新,面臨的問題是難度 一直增加,如果計算機能夠自己學習去解決問題,那生活將會變得非常便利,科 技來自於人的需求。
AI 的發展中有幾個瓶頸。計算機的運算能力,當時的記憶體的有限與計算
無法處理實際AI 面臨的問題;計算複雜度太高與指數爆炸,很多問題只可能在
趨近於無限的時間中獲得解答;無法回答人類不知道答案的問題,機器程序由人 類所編寫出來,所以機器同樣不能解決人類不知道答案的問題。到了近代,硬體 設備的進步,運算能力、平行處理的能力上升再加上儲存成本的降低,使得巨量 的資料可以在有限,甚至是短時間內運算完成;並且因為機器學習(Machine Learning, ML) [4]的興起,讓計算機開始有了思考學習的能力。
機器學習是人工智慧的一個分支,涉及統計學、機率論等多門學科,機器學 習的宗旨是讓電腦可以自動學習,利用規律對未知的資料進行預測。深入瞭解機 器學習的發展脈絡有助於我們學習機器學習,亦或者是人工智慧的框架。深度學 習是機器學習的分支,嘗試著使用複雜且多重非線性變化的函式構成多層對資料
2
作處理的演算法。
從1950 年代開始電腦的出現就被寄予厚望,希望能研發出超越人類運算能
力、比人類聰明的人工智慧。其中的分支之一在1980 年代曾經崛起一時,叫做
「類神經網路」(Artificial Neural Network, ANN),1986 年兩位學者 Rumelhar 與 Hinton 共同發表了反向傳播(Backpropagation, BP),成功的解決複雜計算量的難 題,掀起了對類神經網路研究的熱潮,但是好景不長,短期之內就遭遇瓶頸,深
度學習的反向傳播會造成梯度消失的難題,讓類神經網路達到3 層以上的層數就
幾乎是無功用的。 Schmidhuber 與 Hochreiter 在 1997 年後開始研究當時新穎並
相當重要的觀念,解決了訓練神經網路的難題,就是LSTM。
在深度學習中,其中一個熱門的模型為RNN,相較於其他神經網路擅長處
理與時間有密切關係的問題,但是類神經網路會因為遞歸權重指數爆炸或者消失
的問題的無法處理隨,與LSTM 結合便成為了很好的解決方式。
手勢辨識是一個基於想要便利生活而研究的方向,如果一直都使用電腦做為 運算的平台就顯得十分受限於場所,因此本論文決定使用可程式系統晶片 (System on Programmable Chip, SoPC)在 FPGA 上做硬體實現,不只是便利性,更 可以在硬體電路做平行加速增加運算速度,讓應用性與可能性的大幅提高。
緒論
1.2 研究目的與方法
本論文主要研究目的為連續手勢辨識,使用LSTM 的技術與收集本實驗室
成員產生的數據而成的資料庫,總數約為3000 筆篩選過後的優良資料,以 FPGA 之硬體架構實現。
一個完整的神經網路模型要經過學習後才具有辨識的能力,在學習的階段使 用Keras 之機器學習模型,使用 Keras 來對神經網路模型內部的權重參數(Weights) 與偏移值作學習,學習階段會使用到向前傳遞(Froward Propagation)與向後傳遞 (Back Propagation)調整參數到最佳的精確度,辨識階段使用 Keras 訓練的參數作 向前傳遞便可以得到辨識結果,本論文將辨識部分作硬體實現。
研究所使用的手勢數據資料為收集本實驗室研究生之手勢資料,分別把每個 人的訓練資料都經過圖形顯示確保資料的正確性,讓同學熟知手機的陀螺儀與加 速器感測器的使用方式,這樣採集2180 筆訓練資料,測試資料 1000 筆。
遞歸神經網路針對時間有高度相關的輸入資料有較好的學習效果,而長短期 記憶可以幫助遞歸神經網路來給予上級輸出、該級輸出權重,加權運算後為最後 的輸出結果。
在Keras 平台上訓練完成與辨識確保精確度與可信度後,要移植到 FPGA 上 實現硬體,但是由於Keras 使用的程式語言為 Python,是一種高階語言,很難去
瞭解內部的運算細節,本論文先選擇C 語言上再重現一遍手勢辨識系統,由於 C
語言更接近硬體描述語言,方便日後硬體電路設計的驗證與確定演算法的運算細 節。再來為了嘗試系統未來的可能性與即時連線辨識的可行性,使用了電腦編寫 JAVA 程式語言來重現手勢辨識演算法,並使用 WIFI 把手機陀螺儀與加速器感 測器的接收到數據即時傳送給電腦端運算,在手機與電腦成功的辨識後,開始最
4
後的硬體化階段。
本論文使用Altera Quartus II 作為硬體開發軟體,Altera Quartus II 為曾經 Altera 股份有限公司開發的電子設計自動化(Electronic Design Automation, EDA) 軟體。可以由使用者選擇使用Verilog、VHDL 等硬體描述語言(Hardware
Description Language, HDL)來達到邏輯模擬、電路正確性驗證、邏輯合成等相關 的功能,對程式的編譯,將完成編譯的程式碼成實體的硬體,並同時對電路電路 資源消耗、功率消耗、系統運算時間等多項效能的量測。最後模擬輸出結果,使 用ModelSim 來模擬電路輸出結果波形圖來檢視運作狀態,並確保硬體電路結果 的可信度與正確度。
緒論
1.3 全文架構
本論文的架構共分為六個章節,分別內容包含以下概述:
【第一章】緒論
說明本論文的研究時空背景與動機、研究目的與方法以及本文架構。