Deep Learning

Deep learning is a branch of machine learning that attempts to use high-level abstraction algorithms that contain complex structures or multiple processing layers composed of multiple non-linear transformations.

Project I: Animal behavior recognition using Spatial LSTM

1. Dataset

In desire of understanding spatial-temporal LSTM (LRCN and Conv-LSTM) classification ability on animal behaviors, we see the needed of creating a whole new animal video dataset. The main reason is the lack of animal video on previous researches. So we decide to make a new dataset with 10 animal activity classes: dog runs, dog plays piano, dog eats, dog swims, dog plays with ball, cat runs, cat plays piano, cat eats, cat swims, cat plays with ball.

Based on these requirements, we create dataset in 2 main steps:

1.  Download videos from YouTube. We search each class key word by using YouTube API tool, the return result is a list of video URL. Use these link, we download video at resolution 360p or 480p.

2.  reprocessing: we split videos to 4-5 seconds length to make more clips then manually remove video which is not satisfy one of 3 conditions above.

We divide dataset into 3 subsets with ratio: train set 80%, validation and test 10% each.

Some screenshots from the dataset:

%e6%93%b7%e5%8f%96

2. Model

We investigate on 2 models:

1. Long-term recurrent convolution network (LRCN): LRCN was first proposed by Jeff Donahue. It adds Convolution Neural Networks (CNNs) layer before Long Short-term Memory (LSTM).

In the left figure is a basic concept of LRCN. In practice, network has more layers of CNN or LSTM. And we should add Pooling, Batch Normalization between CNN layers; also add Dropout between CNN and LSTM. In our experiment, we use 7 layers with contain 5 layers of CNN and 2 layers of LSTM (Between CNN layers, we add Pooling and Batch Normalization layers. Between CNN and LSTM, we add Dropout layers). Accuracy recognition    rate is around 70%.

%e6%93%b7%e5%8f%96

2. Conv-LSTM: a variant of original LSTM which change incoming connection of LSTM from linear to convolutional operator.

In the left figure is basic Conv-LSTM. The figure only demonstrates incoming connections from frame as convolutional connection, but in practices, recurrent connections between 2 Conv-LSTM also are convolutional. In experiment, we use 2 layers of Conv-LSTM. Recognition rate is 64-65%. For both models, the accuracy seems high due to small dataset. When we increase number of layers, models may over-fitting. We’re working on collecting more data and extending to more number of classes.

%e6%93%b7%e5%8f%96

3. Details of LRCN

%e6%93%b7%e5%8f%96

 

 Project II: Automatic classification of the different types of fireworks with the aid of deep learning

 

Research Objective:

We plan to apply deep learning mechanism in order to classify fireworks in to a limited set of types. The Caffe deep learning mechanism (http://caffe.berkeleyvision.org/) is the underlying tool to be used.

Method:

First, the Caffe Imagenet model is used. Input features of the Imagenet model are RGB values and mean image referred as abstraction. The current accuracy we achieved was 30%. Therefore, we are working on applying optical flow results in order to achieve higher accuracy. Hence, the first step is calculating optical flow between two consecutive frames, and then combining optical flow results with current results and feeding in Caffe. Proposed model is Convolution LSTM (Long Short Term Memory) Auto-Encoder. We manually classify types of fireworks according to way of motion as in the following examples.

 %e6%93%b7%e5%8f%96

Dataset:

At the starting stage our dataset consists of 500 video clips of fireworks and basically define 3 types of fireworks as follows for testing purposes.

%e6%93%b7%e5%8f%96

Current results:

We implemented the proposed system in Ubuntu Virtual Machine on a Windows platform. We used 10 number of sample videos with 3 basic classes as shown in the below figure.

%e6%93%b7%e5%8f%96

These two figures show the current accuracy, train and test loss.

%e6%93%b7%e5%8f%96

%e6%93%b7%e5%8f%96

 

Project III: 導盲行為分析及視障者人機互動推薦系統

計畫介紹

此計畫為整合型計畫 “視障人士的智慧夥伴” 其中一子計畫 “導盲行為分析及視障者人機互動推薦系統“。此子計畫二提出一個協助盲人之視覺系統(機器人之眼),而此系統包含兩個主要功能:

(1)此視覺系 統能偵測出如在街道上移動的人或是物體(如:騎士在行人道上騎乘單車),並在得知危險的情況下給 予盲人警示,避免災害發生。

(2)此系統包含一些人性化之手勢命令,目的為與機器人溝通。在一些特 殊環境下,盲人無法使用一些音訊命令來與機器人溝通(如子計畫三之音訊命令):

(a)過於吵雜之環境 下易干擾使用者之音訊輸入,

(b)盲人在使用音訊輸入下有所顧慮(如:在街道上之盲人不好意思吵到 其他路人),

(c)盲人不願意使用音訊作為命令輸入(如:不想讓其他人知道自己是與他們不同的盲人)。

因此,手勢命令將會在以上情況下被盲人使用.除此之外,此系統能在發現盲人是否跌倒或是過於遠 離機器人情況下輸出求救訊號(如:提醒盲人或尋求路人協助及)。此子計畫二將子計畫三之音訊訊號 視為輸入,在得到最後仲裁之決定後,將其指令動作傳送給子計畫一,控制機器之協助行為。

此子計畫負責機器人的視覺系統,利用深度學習計術自演算法和雲端深度學習神經網路語音辨識,實現複雜聲響環境下的遠距即時語音辨識。最後,再整合四個子計畫的成果,規 劃一組包含:視覺辨識、機器人控制、語音辨識等實用的共用指令集,提供高階的導盲機器人應用開 發軟體平台,如下圖的所示,由四個子計畫合作執行的高階平台功能完整實用,同時考慮視障者的視 覺、聽覺與安全信賴的需求,將會是視障者最佳的智慧夥伴。

        在手指手勢的辨識中,如何即時的辨識為此領域中最具挑戰之議題,而大多之手指手勢的辨別需 要使用影片分割(video segmentation)技術。使用卷積神經網路來給予物件作分割,且可應用語意在 分割之中,但在我們的研究中,必須解決其速度的問題。因此,我們必須使用我們之前所研發之技術來做物件之動量分割。當在學習與訓練的過程中需要影像的部分,即可使用 Recurrent Convolutional Network 來作學習與訓練。此網路之訓練概念將可變長度之影片(variable-length video)影 格當作輸入來源,且輸出可變長度之資料 (如: 影片之子字幕、或在我們研究中的手勢序列來表示一 句子,當作辨識的輸入),在深度學習(Deep Learning)中,此學習之機制定義是很重要的。雖然,在本 研究的開發中,除了提出一適用於本計畫之獨特類神網機制,另外會使用一方便開發深度學習之工 具,如 Caffe [42]。Caffe 是一個由 Berkeley Vision and Learning Center 所開發之深度學習框架,提供 一可在具有 CDUA GPU 計算能力設備下使用卷積神經網絡或其他學習模型,且 Caffe 可在不同之平台 或是雲環境(Cloud Environment)下開發。 子計畫二在整體架構上,主要在機器人的視覺與人機互動的部份,尤其是戶外環境的應用。本子 計畫分三個年度處理各種深入議題,系統架構圖見圖十五。第一年主要是研究如何處理深度相機的視 訊,以及找到適合的類神經網路結構,並開始訓練類神經網路。在相機部分,首先要處理雜訊及失真 資料的校正,並用動量分割(Motion Segmentation)的方法找出移動之物件,判斷粗略的速度,以及是否 有立即碰撞之可能。進而定義動態物件的事件(Event),並準備以 CNN 來做訓練。另外,除了雜訊處 理外,主要是研究一個基於 RGB-D 視訊之 3D 視訊融合機制。由於 RGB-D 相機視角較小,必須用多 個相機,以構成 360∘的視訊,追蹤視障人士位置。手勢及姿勢的資料,必須以 CNN 或 Recurrent Neural Network(RNN)來做深度學習。第一年中,我們研究神經網路的結構,必須使用兩種 (或兩種以上)神 經網路,做機器人周圍動態事件及視障人士指令之判讀。第二年最重要的目標是找到合適的 Neural Network 模型,做深度學習。雖然團隊在影片動態事件分析以及手勢判讀上已有一定基礎,仍需利用 深度學習機制,以達到較為精確及有效的判斷。在第二年中,我們將整合子計畫三的資訊 (如聲音命令),完成一個 Recommender System,融合事件及指令,以對機器人介面,做出正確動作的建議,並 與其他子計畫做初步之整合,使機器人能夠正確的協助視障人士。第三年是整合各子計畫、評估、並 改善效能的研究。我們將配合其他子計畫、於室外及室內做實地測驗,並就結果加以分析,提出如何 改善我們的深度學習機制。此改善計畫,將視實際之需求在各種地點做測試,並與科技部配合,做適 當的展出、以及進行技術移轉。

%e6%93%b7%e5%8f%96

方法

(1) 相機之選取 此子計畫目的在於開發一能在不同光線的環境中正確整合至導盲機器人之視覺系統。此系統之感 測器也能應用在因為紅外線而影響的戶外環境。在此條件下,此視覺系統必須能夠克服,在沒有深度 感測器下,只使用 RGB 相機辨識物体的困難。因此,在選取相機前必須考量以下因素: a. 機器人的有效範圍 (盲人與機器人的感測距離) b. 檢測物體的速度 c. 相機原始數據與 API 的可用性 由於機器人不能離盲人太遠,此計畫初步假設其感測之範圍介於 0.3 米至 3 米之間。另外因為深度相 機 (RGB-D camera) 有照射角度的限制,因此必須使用多台相機。當然,解析度是否足夠也是考量之 重點。經由我們的查證,市面上有多台相機之規格符合我們之需求,且其影格速率達到至少 30 FPS。 表二為各類相機之規格比較。

市面上還有一些深度攝影機,如 Leap Motion Camera,但由於無提供原始數據而不適用於本計畫之視 覺系統開發。本計畫預期使用 DUO MLX 或是 Kinect 1 相機來做開發。在本計畫的初步實驗中發現, Kinect 1 能較快速追蹤物件;而 Kinect 2 適用於高解析度的三維物件建模。

(2) 基於多點雲之相機校準 由於 DUO MLX 相機有水平照射角度之侷限,因此本計畫使用多台相機來建構出 360 度環景之點 雲,基於 360 度環景點雲可以得知環景內移動的物件 (如: 移動的人、車或物體)及盲人所發出之手勢 命令。因此,相機之校準是在此環節中重要步驟之一。在校準的步驟中,本計畫預計採用迭代最近點 (Iterative Closest Point, ICP) 來將相對之兩點雲註冊至相同之座標系統 (本計畫預計使用 3 或 4 台 相機)。因此,多台相機之點雲搭配此迭代最近點之方法能取得校準後的 360 度點雲空間。考慮到系統 的即時性能,ICP 沒有必要在每一個影格都執行。

(3) 點雲的動量分割 (Motion Segmentation) 此計畫之主持人於先前發表過一動量分割方法,該方法主要是藉由考量空間與時間域之物件與背 景來將物件與背景分離,本計畫在物件分割部分,將沿用此概念套用至影片的點雲中。意思是說,本計畫將結合深度相機之原始數據與時間域之考量來做物件分割。一般情況下,必須使用以下步驟來完 成此物件分割。 a. 使用延伸的 4 區塊搜尋法則來計算出各 patches 的三維向量。 b. 使用型態學算子 (morphological operator) 來移除各自獨立的 patches (向量差異大的 patches)。 c. 使用投票策略來將類似向量之區塊作合併。 上述之步驟適用於低解析度之深度相機,而我們發現並非解析度越高越能加強物件之分割,因為我們 不需了解物件之細節。只須能夠偵測到移動中的物件就足夠。藉由得知物件於 3D 點雲中之位置,可 開發一偵測物件軌跡的機制。因此,如果一個物件朝相機方向移動 (盲人與機器人的位置接近),即可 預測出物件碰撞之時間點,而命令將會被發送到機器人進行適當的動作。但還是存在物件遮蔽的問 題。通常情況下,機器人是在盲人的前面。如果一個街道行人是在盲人的背後,機器人將因為被盲人 遮蔽而無法偵測到此行人。我們假設盲人將在機器人後面行走。

(4) 使用者的手勢追蹤與骨架計算 由於三維點雲的資訊包含 0.3-3 米之間的物件,在此範圍內的物件將被拿來做追蹤與分析,而盲 人因介於此範圍之間,亦可得知其盲人之三維點雲資訊。若我們使用 Kinect 1,即可使用微軟所提供 之 API 函式來取得盲人的骨架;然而,使用 DUO 相機可將二維細化演算法應用在三維來取得盲人的 骨架。而此骨架的資訊對於使用者的行為判讀是很重要的。 另一方面,我們計算盲人的手指骨架,來取得手勢追蹤,藉由此方式讓盲人與機器人交流、控制 機器人的行為、詢問問題或藉由通話來向外尋求協助。在操作上,盲人的手勢與相機之距離必須局限 於一特定之距離範圍 (如: 30-50 釐米之間)。本計畫主持人之團隊於過去曾開發一虛擬樂器表演系統, 使用手部之追蹤技術來演奏虛擬吉他、鋼琴及其他樂器。本計畫預計將已經開發之手部追蹤演算法使 用在本計畫之視覺系統。

(5) 使用者的行為了解 當得知盲人之骨架與手勢,本計畫之視覺系統即可紀錄與分析盲人的行為,這些行為包刮: 盲人 是否站著不動 (似乎是在等待請求幫忙)、行走、休息或甚至摔倒等等。而這些在同一街道被記錄下來 的歷史行為將被視為參考之依據來給予盲人適當之警示。此外,此視覺系統定義了一套盲人手勢,進 一步加強盲人與機器人之間的互動。若手勢過多且複雜,會讓盲人在街道上不容易使用,因此我們定 義一套夠用的手勢語言集,讓盲人與機器人交流。

(6) 基於 CNN 之使用者行為分類 了解盲人的行為可以幫助盲人避免一些危險情況,如: 與其他行人的碰撞、潛在的危險路線或可 以休息的地點。藉由已知的盲人骨架資訊,可使用捲基神經網路來定義出一組如上的行為之狀況。本 子計畫在第一年實作的部分,預計於全景之影像與影片中採用 CNN 來學習與分類盲人行為。

機器人的手勢辨識命令

(1) 機器人的手勢辨識命令 我們有手勢命令的初步設計。第一個命令集,不需要手勢。我們可以擴展第二和第三組命令集以滿足 需求。 機器人的內部自發命令: 機器人的內部自發命令:機器人在不需使用者輸入下,自行藉由路況或是地形之判別,讓使用者適時 地避開可能發生之危險。 交通繁忙 (如大量的行人在街道上): 觸發語音來提醒盲人 盲人前方有靜態之障礙物 (如地板上有大石頭) : 命令機器人轉向, 並觸發語音來提醒盲人 盲人前方有行人 (或是物件) : 命令機器人轉向, 並觸發語音來提醒盲人離開最佳之推薦路線 (如果盲人的行進方位與推薦路線方位不同) : 觸發機器人調整為新航 線, 並觸發語音來提醒盲人 盲人離機器人太遠或是跌倒: 向外發出求救訊號,或將機器人靠近盲人 機器人的手勢命令: 機器人的手勢命令:使用明確的手勢為控制機器人之命令。 機器人”慢行”: 觸發命令讓機器人走慢點 機器人”快行”: 觸發命令讓機器人走快點 機器人”左轉”: 觸發命令讓機器人左轉 機器人”右轉”: 觸發命令讓機器人右轉 機器人”後退”: 觸發命令讓機器人後退 機器人”暫停”: 觸發命令讓機器人停止行走 機器人”繼續”: 觸發命令讓機器人繼續行走 機器人”開始”: 觸發命令讓機器人啟動運作 機器人”結束”: 觸發命令讓機器人停止運作 其他智能服務命令: 其他智能服務命令:這部分包含複雜的使用者手勢,機器人依取得之命令,來協助使用者。 機器人“我需要他人之幫助”: 向周圍的人發送需幫忙協助之訊號 機器人“我需要緊急撥號” : 連繫緊急連絡人並撥號 機器人“附近哪裡有旅館”: 搜尋附近之旅館及位置 機器人“附近哪裡有7-11” : 搜尋附近之商店及位置 機器人“多遠到目的地” : 計算盲人與目的地之距離及抵達時間 機器人“附近有椅子可以休息嗎?”: 搜尋附近是否有可座的地方 機器人“公車來了嗎?”: 搜尋公車是否已進站 根據需求,我們將定義其他手勢命令 此外,與子計畫四合作,我們定義了控制室內設備之手勢命令: 機器人“打開電視”,“關掉電視” 機器人“開啟空調”, “關掉空調” 機器人“開啟燈光”, “關掉燈光” 機器人“我的鑰匙在哪裡?” 機器人“我的手機在哪裡?” 根據子計畫四需求,我們將定義其他命令

(2) 選取合適之類神經網路 應用於硬體與軟體之深度學習,選擇一個合適的框架是必須的。在此,我們將一些知名之框架做 比較。執行效率上,Torch 比 TensorFlow 及 Caffe 還來得有效率。而目前沒有 TensorFlow 與 Caffe 在速度上的比較。Caffe 是由 Berkeley 視覺與學習研究中心 (BVLC) 所開發,本身是由 C++語言所 編寫,亦可在 matlab 平台下使用。在影像的分析(使用 CNN)及基於卷積類神網之圖像區域分析(Regions with CNNs, or RCNNs)能有不錯的成效。但不適用於文字、語音或是時間串列之資料。Caffe 的優點為: 適用於 feedforward networks 及影像處理、現有網路之微調、能在不須寫程式下給模型訓練。主要缺點 為: 必須在新的 GPU 層級中使用 C++/CUDA 語言、不適用於遞迴型網路 (recurrent networks)、不適用 於大型且繁瑣之網路 (GoogLeNet, ResNet) 。TensorFlow 由 Google Brain 團隊所開發,能在 C/C++下 使用 Python API 快速編譯。TensoFlow 產生一個由節點表示計算,而邊表示流(Flow)的一個計算圖表, 能自動分化從一節點到其他節點。TensoFlow 與其他的框架不同在於,能局部的計算其子圖,訓練全 部類神經網路中相關之子樣本。目前有支援強化學習 (reinforcement learning)及其他演算法。

TensorFlow 的優點為:可運算抽象圖 (Computational graph abstraction) 如 Theano,編譯速度更快、可 視化 TensorBoard、數據和模型的平行處理。而其缺點為:速度比使用其他框架還來的慢、計算圖使用 Python 所創建相對效能低。Torch 先由 NYU 以腳本語言 Lua 所開發,在開發上被設計為可攜式、快 速、易擴展及容易使用。在 Facebook、Twitter 及 NVidia 的支持下產生 Torch7 之最新版本,使其 Tourch7 有大量的用戶、部落格、互聯網及學術文獻。Torch 可使用 LoadCaffe 套件,從 Caffe 的模型 Zoo 中匯 入訓練過的類神經模型。Torch 的優點為: 大多的模組可以結合、可輕鬆編寫自己的圖層類型及適用 GPU、Lua 為易使用之語法、許多前置之模型。而其缺點為:Lua 之佈署有一點點難度、通常必須自 己編寫訓練碼。

(3) 使用 Caffe 之捲基神經網路 類神經網路及其變形能夠在影像的分割、預測與分類上得到不錯的結果。為此,我們於本計畫提 出一個適用於盲人手勢辨識的類神經網路模型。特徵點擷取在類神經網路的使用中,較少被視為分類 的重要因素。本計畫主要目的在於從影像之色彩及深度資訊中,預測手部的姿勢。由於手部姿勢在不 同之光影及背景下容易造成辦別上的誤差,我們的方法主要使用經由色彩與深度資訊所計算出來的黑 白影像,作偵測之考量。經由 CNN 可以將手的部分於影像之原始數據中 (Raw image) 分離出來。我 們可以建立一個影像資料庫,從影像之色彩輸入資訊中輸出影像之黑白分割。

在最常使用的 CNN 中,每一個 CNN 層級 (Layer) 由一個池層級(pooling Layer)所定義。如下圖。

%e6%93%b7%e5%8f%96

第一個 CNN 層級卷積地在第一個池層級中輸入影像。通常而言,在較低的層級中會使用最大池 (max-pooling)。而較高的層級中,我們使用平均池 (average pooling)。在最後一個層級,我們使用全聯 通層級 (Full-connected Layer),來結合所有的特徵圖 (feature map),使每一個神經單元都完全地與特 徵圖作連結。最後,SoftMax 層級將會統計其網路所丟失的部分。網路的複雜度與執行時間為最重要 且不可被忽視的考量因素。我們的盲人手勢分類預測系統必須能夠及時的作分類與辨別。例如,反應 時間不可大於 1 秒(甚至更少的時間)。幸運的是,需分類之指令不多,我們僅需考量每一個層級在類 神經網路結構中有多少個層級及特徵圖。藉由使用 Caffe 框架,我們可以經由微調來得到一個最佳的 模型。但是,在我們的預期實驗觀察中,輸入之灰階影像的解析度較低 (320X480),五個 CNN 層級 是合適的。因此,我們可以使用以下的步驟來運行我們的類神經網路。然而,我們還未對類神經網路 結構作效能之評估。我們需要進一步調查如何建構一個有效的類神經網路。

(4) 命令選擇與仲裁 此計畫使用音訊與手勢之交互式命令,最重要的是命令之選擇與仲裁策略。本子計畫在命令之選 擇策略中,音訊命令為最主要之觸發來源,其次為手勢命令之輔助。某些特殊環境中,手勢命令為主 要之觸發來原,特別是在一些不方便使用聲音命令之環境,盲人僅能藉由手勢命令來操控導盲機器人。

反饋分析加強訓練準確性

(1) 反饋分析加強訓練準確性 雖然我們使用 Caffe 為我們的初步試驗平台,也定義了三種手勢,我們仍然有必要探討其他方法,特 別是對效率的考慮。我們需完成幾個步驟: 從用戶收集並分析反饋。 改變 CNN 的架構以調整識別精度和速度。 設計新的手勢,或在需要時修改手勢命令。 收集新命令的訓練數據。 尋找其他更合適之類神經網路 合適之類神經網路 合適之類神經網路。 評估整個推薦系統的成果。

(2) 機器人介面與控制之整合 此子計畫將使用子計畫三與子計畫四之成果為輸入,並結合子計畫一所提供之機器人技術,開發出一 個操控導盲機器人之軟體介面。如同前面章節所敘述的,此命令選擇與仲裁系統將提供一組應用程式 接口 (APIs) 給子計畫一,隨之藉由得到之指令來控制機器人。

(3) 科技部展示與技術轉移 本計畫將會密切與其他子計畫合作,依照科技部之需求,展示整合之研究成果。此外,本計畫技術將 與其他子計畫整合之研究成果作技術轉移。