為方便大家更容易查詢到本工作室發表的文章,特設立此部落格,歡迎舊雨新知一同分享!
本部落格發表之文章會同步發表於 https://omnixri.blogspot.tw/

OmniXRI 發表在 痞客邦 留言(0) 人氣()


拿了投資者近26億美金的「Magic Leap」歷時七年多開發後最近終於開始將「Magic Leap One」(以下簡稱ML1)交到開發者手上進行實機測試,因此許多開箱文及影片陸續傳出,褒貶不一。雖然無緣成為第一批使用者,但前不久(2018/8/9)前也根據「What the Feature」所公開的影片及過往開發人機互動及使用過HoloLens經驗在FB上寫了一篇心得,獲得許多網友分享。這兩天又看到Lucas Rizzotto約15分鐘的試用影片及文章,覺得寫得相當不錯,於是我藉花獻佛將影片重點及個人心得整理一下分享給大家。
在Lucas Rizzotto的「Magic Leap One In-Depth Review」這個影片中,共分成六個項目進行解析,包括硬體、空間網格化及追蹤、操作系統、應用程式(APP)執行、WebMR瀏覽器(Helio)及視野(FoV)。接下來就依影片順序進行摘要並加上個人解讀。
 

OmniXRI 發表在 痞客邦 留言(0) 人氣()


一年一度電腦圖學及人機互動領域最頂級的研討會「ACM SIGGRAPH 2018」這兩天(8/12~16)在加拿大溫哥華盛大舉行。此次不只聚集了全世界最頂尖的學術研究人員發表最新研究成果,更吸引眾多廠商展出相關技術,連NVIDIA執行長黃仁勳都親自前往推廣自家最新技術及產品。
由於個人對實境互動這個領域非常著迷,所以每年總會花點時間關注這個研討會相關技術的最新動態。除了相關論文外,個人尤其對「先進技術(EMERGING TECHNOLOGIES)」這個分項特別感興趣,因為這個項目綜合了最新技術及實機展示,同時提供參觀民眾感受最具未來感的體驗,比起那些充滿學術理論讓人暈暈欲睡的論文要有趣的多了。
今年「先進技術」項目共收錄了來自全世界24個團隊的展出項目,很可惜台灣今年無人上榜。雖然今年無緣前往實際體驗,但從先前官方釋出的影片就可看出相當精采,不過遺憾的是官方只收錄了8個項目的片段,其它部份可能就得自行參閱官方網站了。目前這些展出項目的正式論文尚未釋出,為了讓大家能更進一步了解影片中介紹的內容,以下僅就個人觀點做一點簡單摘要及說明,希望能讓大家能對這些技術更加了解,如有認知錯誤或有其它看法歡迎留言一起討論。
SIGGRAPH 2018 Emerging Technologies官方影片:

OmniXRI 發表在 痞客邦 留言(0) 人氣()


最近看到一個新聞「30 萬日圓的 Gatebox 僅 2 萬就搞定?」本想有什麼驚人之作,這樣高度整合的技術竟如此簡單就被破解,沒想到只不過是用透明顯示器就搞定。回想我和朋友2014年參加Maker Fair Taipei時就DIY過一個用平板改裝的透明顯示器互動魚缸,早知道當年就搞個初音的影片來放,如今就不會有這條新聞。
【日本神人】影/高手在民間!30 萬日圓的 Gatebox 僅 2 萬就搞定? 網友:這不科學
https://www.limitlessiq.com/news/post/view/id/5754/
互動水族箱
https://sites.google.com/site/naivemaker/aquarium
目前智能語音助理已紅遍全世界,但相信大家更期待的是具像化的人工智能虛擬助理,今(2018)年三月時我曾針對Gatebox / HoloBox/ MxR Tube等三家AI智能虛擬助理寫過一篇文章介紹,有興趣的朋友可參考一下。
AI智能虛擬助理介紹Gatebox / HoloBox / MxR Tube
http://omnixri.blogspot.com/2018/03/aigateboxholoboxmxr-tube.html

OmniXRI 發表在 痞客邦 留言(0) 人氣()



今年Computex & InnoVEX 2018中可以嗅出一個方興未艾的風潮,那就是邊緣運算,本文將介紹邊緣運算為何興起,以及有哪些台灣廠商已推出相應的解決方案。
一年一度的Computex & InnoVEX 2018在不久前熱鬧閉幕,每年我總會撥個一、兩天去參觀,今年另外加碼了一天半參加了三場Computex Forum:「串聯AI生態系」、「遇見明日新科技」及「顛覆物聯新視界」,感受到不一樣的氣氛。

OmniXRI 發表在 痞客邦 留言(0) 人氣()


去(2017)年科技部喊出臺灣正式進入「人工智慧(AI)元年」預計在五年內投入160億台幣。臺灣人工智慧學校在各大企業贊助及學研單位的投入教學下,經過三個多月密集培訓,已於今年四月底培訓出第一批五百餘名的技術及經理人員。
經濟部工業局也為了協助國內大型企業導入人工智慧技術,積極推動企業出題,新創團隊解題的「AI⁺ Solution Match人工智慧加值應用商業媒合」活動,並鼓勵各民間企業主動提出「AI主題式業界科專」。

OmniXRI 發表在 痞客邦 留言(0) 人氣()


目前當紅的人工智慧(Artificial intelligence,AI)主要聚焦在深度學習(Deep Learning,DL)領域,想學習深度學習技術的人,第一步通常會遇到一大堆框架(Framework)卻不知如何選擇,而究竟什麼是框架?框架如何用來表示模型?哪些才是主流框架?本文將會完整告訴你,協助找出最符合自己需求的框架。

何謂深度學習框架?
深度學習簡單示意圖。(圖片來源:廖庭儀製作)

大家都知道只要準備一張紙和一隻筆,加上源源不斷的靈感,就能將想法轉化成文字,創作出一篇令人感動的文章。但現在手寫創作的人越來越少,只好選用一項電子書寫(數位表達)的工具來創作。以Windows舉例,可能用的是Note Pad(筆記本)、Word或PDF Editor,如果是學術寫作的人可能較常用的是Latex,在網頁上創作則可能是Html。
文章的好壞並不會因為工具的改變而有所不同,卻會影響寫作效率以及排版美觀,改變讀者對這篇文章的評價。雖然文章內容(基本元素)可輕易的在不同工具中轉換,但遇到字體格式、圖片、公式等特殊排版需求時,可能出現檔案轉不過去等問題,同時難以用來表達音樂、影像、視頻。
在解決深度學習的問題中,較常見的是非時序性辨識問題,以及時序性的分析或預測問題。為了方便表達模型(Net /Model)的結構、工作訓練以及推論流程,因此產生了框架,用來正確表達深度學習的模型,就像在Windows上寫文章需要有Note Pad、Word等,編輯影音內容要有威力導演、After Effect等一樣。

名詞解譯



非時序性辨識:針對影像、結構性資料等資料辨識。

時序性辨識:針對語音、翻譯、視頻等資料辨識。


因此,許多學術單位、開源社群甚至Google、Microsoft、Facebook這類知名大公司也紛紛推出自家的框架,以確保在這場AI大戰中能佔有一席之地。而有另一派人馬,想要產生另一種可輕易轉成各家的框架,例如微軟的Word可以另存網頁檔(*.html)、可攜式文件格式(*.pdf)、純文字檔(*.txt)等。在介紹各家框架前,先來認識一下深度學習的模型究竟用了哪些元素?就像玩樂高積木前,要先知道有哪些模塊可用,後續在學習各個框架的表示語法時才不會一頭霧水。
常見深度學習模型介紹
首先介紹兩個較著名的模型,包括非時序性的卷積神經網路(CNN) LeNet-5 [1]以及時序性的遞歸神經網路(RNN),方便說明模型中常用到的元素與流程,如何用深度學習框架來表示。
卷積神經網路(CNN)
圖一 卷積神經網路(CNN) LeNet-5 [1] (圖片來源:OmniXRI整理繪製)

(圖一)為最知名的卷積神經網路LeNet-5,主要是用來辨識手寫數字(MNIST數據庫),輸入為一張8 bit灰階32×32像素的影像,而輸出為十個節點,分別表示影像為十個數字的機率,這個模型幾乎是所有研究深度學習的入門起手式。目前先不解釋這個模型為何能學會辨識圖像,而是單純就模型組成以及表示方法來進行說明。
 
首先,說明卷積特徵圖 C1層,C1層上的紅點,是由輸入層(INPUT)紅色框(5×5個像素)乘上5×5的卷積核加總後而得,依序由輸入影像的左至右、上至下共用一個卷積核進行卷積,一次移動一個像素(Stride=1),如此即可產生一張特徵圖,而C1層共用了六組卷積核,因此產生六張28×28像素的特徵圖。再來將影像進行池化,較常見的方式就是把相鄰四點(如圖一綠色框所示)中最大的點當成新點,稱為Max Pooling,同時把影像長寬都減為一半,成為S2層。
接下來,對S2層以16組3×3卷積核進行卷積,產生C3層,共有16組10×10像素的特徵圖。同樣地再對C3層進行池化產生S4層,變成16組5×5像素的特徵圖,最後再以16組5×5卷積核把S4層的16個特徵圖卷積變成16個輸入點,再以傳統全連結神經網路進行連結。C5層就是以16個輸入點和隱藏層120點進行全連結,並依指定的激活函數將輸出傳到下一層,接下來再和下一組隱藏層F6的84點進行全連結,最後再和輸出層(OUTPUT)的十個輸出點進行全連結,並正規化輸出得到各輸出的機率,即完成整個LeNet-5模型(網路)結構。
綜合上述內容可得知一個基本的卷積神經網路會有輸入層、卷積層、池化層、全連結層及輸出層。卷積層要定義卷積核大小、移動距離、輸出特徵圖數量。而池化層同樣需要定義核的大小(一般是2×2)、移動距離(一般是2)及池化方式(可以是取最大值或平均值)。全連結層部份則需要定義節點數量及激活函數類型(如:reLu、sigmoid等),最後輸出層除了要定義正規化機率值(如:Softmax)外,還要定義損失函數以作為訓練模型用。
 

名詞中英對照


卷積神經網路:Convolutional Neural Networks(CNN)
遞歸神經網路:Recurrent Neural Networks(RNN)
特徵圖:Feature Map
節點:Node
池化:Pooling,Subsampling
全連結神經網路:Full Connection Neural Networks
隱藏層:Hidden Layer
激活函數:Activation Function
輸入層:Input Layer
卷積層:Convolution Layer
池化層:Pooling Layer
全連結層:Full Connected Layer
輸出層:Output Layer
積核大小:Kernel Size
移動距離:Stride
輸出特徵圖:Output
損失函數:Loss Function



 


前面提到的卷積神經網路CNN是一種前饋(Forward)的單向網路,其輸出結果不會影響輸入,但如果遇到如語音、翻譯、視頻這類時序問題時,CNN就搞不定了,此時就該輪到遞歸神經網路(RNN)登場了。
遞歸神經網路(RNN)
圖二  遞歸神經網路(RNN)及型態 (圖片來源:OmniXRI整理繪製)

(圖二)左圖所示就是RNN最基本入門的模型,把此次輸出的結果經過加權後,再和下一次的輸入一起計算出下一次的輸出,以串起輸入資料的時序關連。從展開圖可更清楚看出其關連,當前輸出(ot)是由目前狀態(st)乘上權重(U)加上前一狀態(st-1)輸出乘上權重(W)後,經過雙曲正切(tanh)函數並乘上輸出權重(V),最後取Softmax算式得出,依此類推可展開成任意級數的網路。
(圖二)右圖所示,RNN可以有很多種輸出型態,一對一就等於單純的前饋網路沒有時序關係,另外也可以一對多、多對一、多對多等不同的輸出方式,應用於時序性內容分類,例如語句情緒意圖、音樂曲風、視頻動作分析、影像加註標題等,或是型態移轉(Style Transfer),例如語言翻譯、文章音樂創作等。
對RNN而言,需要定義展開的級數、隱含層(或稱為狀態S)到隱含層權重矩陣(W)、輸入層到隱含層權重(U)、隱含層到輸出層權重(V)、激活函數(例如:tanh等)類型,以及輸出層機率正規化方式(例如:Softmax等)。
常見深度學習框架及選用考量
圖三  常見深度學習框架(圖片來源:OmniXRI整理製作)

許多人準備開始進入深度學習世界時,最常問的問題就是到底要挑選哪一種框架來入門?有如(圖三)、(表格一)所示,從最大的開源社群Github上,就可找到二十種星星數超過一千的深度學習框架,包括TensorFlow、Keras、Caffe、PyTorch、CNTK、MXNet、DL4J、Theano、Torch7、Caffe2、Paddle、DSSTNE、tiny-dnn、Chainer、neon、ONNX、BigDL、DyNet、brainstorm、CoreML等,而排名第一名的TensorFlow更有近十萬個星星。由此可知,深度學習非常受到大家重視,當選擇深度框架時可以從好幾個面向來考慮,以下將會分別介紹。
1. 程式語言
首先是開發時所使用的程式語言,如果要執行「訓練」及「推論」效率好些,則可能要用C++。若要上手容易、支援性強,則要考慮Python,從(表格一)中可看出有3/4的框架都支援Python。
若習慣使用Java開發程式,那大概就只有TensorFlow、DL4J和MXNet可選了。目前有一些框架(如TensorFlow、Caffe等)底層是C++,應用層API是用Python,這類框架能取得不錯的開發及執行效率。
若想改善底層效率時,還要考慮依不同硬體,學會OpenCL或Nvidia的CUDA/cuDNN等平行加速程式寫法。
2. 執行平台
再來考慮的是可執行的作業系統及硬體(CPU、GPU)平台,目前大多數的框架都是在Linux CPU+GPU的環境下執行,部份有支援單機多CPU(多執行緒)或多GPU協同計算以加速執行時間,甚至像TensorFlow、CNTK、DL4J、MXNet等框架還有支援叢集(Cluster)運算。
許多雲端服務商(Google、Amazon、Microsoft等)也是採取這類組合,方便佈署開發好的應用程式。另外也有些非主流的框架(如:tiny-dnn)只支援CPU而不支援GPU,這類框架的好處就是移植性較強,但工作效率很差,較適合小型系統。
如果是用Windows的人,英特爾(Intel)及微軟(Microsoft)也分別有提供BigDL及CNTK,若使用Mac系統則要考慮使用CoreML。不過最近Google的TensorFlow為了吃下所有的市場,已經可以支援Linux、Windows、Mac甚至是Android,因此成為開源排行榜第一名。
3. 模型支援
目前常見的深度學習模型包含監督型(如CNN)、時序型(如RNN/LSTM)、增強學習(如Q-Learning)、轉移學習、對抗生成(GAN)等,但不是每個框架都能全部支援。
舉例來說:老牌的Caffe適合做監督型學習,但對於時序型學習就不太合適,遇到對抗生成模型時就更使不上力。若不清楚那些框架可支援的模型類型,可參考(表格一)的對應網址,前往各官網了解使用上的限制。
4. 框架轉換
如果遇到需要串接不同平台或框架時,則要考慮選用具有提供跨框架功能。目前有幾大陣營,像Keras可支援TensorFlow、Theano、MXNet、DL4J、CNTK,而微軟和臉書聯盟推的ONNX可支援Caffe2、CNTK、PyTorch等,但Google的TensorFlow卻不願加入該聯盟。
另外,雖然框架之間可以轉換,但不代表轉換後的執行效率會和直接使用某個框架一樣好,此時只能依實際需求來取捨是否拿彈性換取效能。
5. 社群支援
最後要考慮選用的框架社群是否活躍,是否很久沒有維護(升級),甚至被預告即將淘汰,像Theano雖然功能強大也有很多人在用,但目前確定已不再更新版本,因此建議不要再跳坑了。另外對於英文不好的朋友,選用框架的社群討論區、文字教程、操作視頻等是否有中文支援也是很重要的,以免遇到問題不知向誰求救。

表格一  深度學習框架比較表(圖片來源:OmniXRI整理製作,廖庭儀重製;統計日期:2018/05/02)

 
總結
對於新手來說,目前用Python+Keras+TensorFlow是最多人的選擇,網路上也可取得最多資源(包含中文),可支援的作業系統、硬體平台、模型以及數學函式庫也是最豐富的。特色是彈性大,相對容易開發,也是最容易佈署在雲端的解決方案。
但這樣的組合並非完全沒有缺點,例如CNTK的執行效率相較於MXNet略差,而Python需佔用較多記憶體,不利於佈署在本地端(或嵌入式系統)進行邊緣計算,因此如何選擇合適的框架,有賴於大家多花點心思了。
(參考文獻在這裡,本文同步發表於MakerPro

OmniXRI 發表在 痞客邦 留言(0) 人氣()



近幾年來人工智慧(Artificial Intelligence, AI)喴的震天價響,吃也要AI,穿也要AI,連上個廁所也要來個AI智能健康分析,生活週遭食衣住行育樂幾乎無處不AI,彷彿已經來到科幻電影中的那個世界,面對這波「智能」新浪潮,身為Maker的我們自然不能缺席。本文將完整介紹AI晶片的發展,以及Maker們如何使用AI晶片與創作接軌。


AI這個領域看似深不可測,大家都說你得先學個線性代數、機率再加上一堆理論以及看了就頭疼的程式碼,再經過數年修練,就能小有成就。不過,大家請不必擔心,這些難的部份就先交給聰明的資料科學家和工程師,Maker們只要應用他們開發出的源碼及工具(SDK) 發揮創意專心創作出更具「智能化」的作品,解決更多人們的需求即可。

打個比方,「就像學開車不必先懂得車子如何設計,只需到駕訓班學基本原理、操作及交通安全規則就可上路了。」但是,如果你想精進駕駛技術,甚至當個專業賽車手或開發出專屬的車子,這時就必須更了解車子的設計原理,並學著如何改車及用何種方式駕駛,如此才能發揮車子的最大效能。


AI的應用不難,但想精通就得好好修練,就像除了知道怎麼開車以外,還需要知道車子的原理與架構



從開車的例子來舉例:AI晶片就如同引擎,計算能力等同於決定車子的馬力,而算法(模型)就像車型,不同的車型有著不同用途、解決不同的問題,如果開著跑車要載貨而開著貨車要競速,相信一定不會有好的結果。而大量的資料就像汽油,少了它車子肯定動不了。

接下來就從當下最熱門的議題「人工智慧晶片(AI Chip)」來切入,讓大家能更進一步了解AI基本術語及觀念,各家AI晶片技術到底有何不同及Maker們要如何運用這些資源來提升創作使其更智能化。

人工智慧與深度學習


自1950年代「人工智慧」一詞被提出,但受限於硬體計算能力、算法可用性及資料集的數量,幾經浮沈始終未能推出實用的結果。直到2012年Alex Krizhevsky 利用深度卷積神經網路(Deep Convolutional Neural Network, CNN)以大幅差距贏得知名影像分類ILSVRC大賽,大家才重新對人工智慧重燃起希望。

2016年Google的「Alpha Go」完勝最難攻克的圍棋,更是激起各國政府及普羅大眾對人工智慧的重視。聽到「人工智慧」這個名詞,相信大家腦中一定浮現各種科幻電影的場景,想像著電腦已經可以取代人類完成各種需要大量思考才能完成的事,但現實上並非如此。


2016年 Alphago 圍棋競賽



目前市面上說的人工智慧,大多是指深度學習(Deep Learning, DL)算法所產生的結果,其實只是在找一個最佳函數解,而非真正具有像人的思考方式

更進一步來說,如下圖所示(Fig. 1),人工智慧包含了機器學習(Machine Learning, ML),而其下又包含了有標準答案才能學習(訓練)的監督式(Supervised)學習(分類、迴歸),沒有標準答案可自動依資料屬性分群的非監督(Unsupervised)式學習(聚類)及具獎懲機制找出最佳答案的增強式(Reforcement)學習(分類)。

深度學習只是由監督式學習下的神經網路(Neural Network, NN)所演化出來的,經過這幾年不斷的演化,目前已從只能處理監督式學習問題擴展到非監督式及增強式學習。因此,目前市售的AI晶片發展趨勢多半鎖定在處理深度學習類型問題,而非處理傳統機器學習及真正人工智慧的問題。


Fig. 1  人工智慧、機器學習與深度學習關係 (圖片來源:OmniXRI整理繪製)


 


深度學習技術的應用


目前應用人工智慧或者更精準地說,深度學習到底能解決什麼問題呢?最常見的兩大領域就是影像及語音

在影像方面,可對單張影像進行單一項目分類( Fig. 2a),但若影像中,同時出現二種類型物件時,那就很有可能分類錯誤或者同時歸屬到多個類別中。再來,可找出影像中多個物件並定位出來( Fig. 2b)。

若想要再更精準描繪出物件輪廓就必須進行語義分割(Fig. 2c),換句話說就是以像素等級的方式進行分類,把每個像素分到指定的分類中,此時仍無法區分出相同物件不同個體。最高等級就是實例分割(Fig.2 d),不僅能精準分割物件輪廓且能分割出不同個體。當然,這四類型的難度也是依序提高,所需付出的計算量也相對提高。


Fig. 2  常見影像應用人工智慧使用情境 (圖片來源:OmniXRI整理繪製)



另一個較大應用的領域就是「語音」,首先要讓電腦聽懂我們在說什麼,就必須正確地把語音變成文字(Fig. 3e),才能提供給後續的語言(意圖)解讀(Fig. 3g)。當然要聽懂是誰在說話,而說話的情緒為何也是很重要的(Fig. 3f),在了解說話的內容後就必須產生回答,把通順的句子合成為柔美的語音(Fig. 3h),才能完成一個完整的對話過程,不然就變成雞同鴨講。

除此之外,如文章翻譯、影片摘要、股市分析、交通物流、醫療照護等,非影音領域的應用也都很適合以深度學習方式進行辨識及分析。


Fig. 3 常見語音應用人工智慧使用情境 (圖片來源:OmniXRI整理繪製)


 


AI晶片的神經網路(NN)工作原理


為了能更進一步了解以深度學習為主的AI晶片到底要如何工作,首先要了解組成「神經網路(NN)」神經元的工作原理。

如下圖(Fig. 4a)所示,每個神經元有n個輸入值,每個輸入值有一個權重(Weight)值,把所有輸入值乘權重值加總起來,有時會另外加上一個偏置值(Bias)來調整,將得到的值再經過一個激活函數(Activation function)即可產生新的輸出值。從另一個角度來看,相當於每個權重值決定對應的輸入值對這個神經元的影響程度。

以Fig. 4a為例,由左至右為推論(Inference),可得到算輸出結果,過程中需要n個權重值加上1個偏置值,而這些值是需要經由訓練(Training)而得。訓練前須取得許多(越多越好)已知答案或稱為標籤(Label)的訓練資料,假設輸出值只有二種答案,是(1.0)或者不是(0.0)。

如果第一組輸入資料已知答案為是(1.0),但經過推論後只得到0.6,則表示權重及偏置值不理想需要調整,此時利用根據差值(1.0 – 0.6 = 0.4)由右至左調整每個權重及偏置值,而至於調多少則隨不同方式也有不同。

同樣的步驟再輸入第二組資料進行調整,直到所有訓練資料都做過一輪(Epoch)。此時,大家可能會問這樣就訓練好了嗎?我們還得拿出另一組未曾出現在訓練資料中,但卻已知答案的資料來進行驗證,就如同學校老師教了許多內容,但要透過考試成績才能知道學生是否學會了,如果分數不及格,就要重新訓練加強磨練。

相同地,我們必須反覆執行這些步驟直到驗證資料都得到滿意的答案,因此,可想而知所需來回的次數相當大,所以通常訓練會需要設計什麼時候停止,可選擇成績(正確率)到達某個門檻,或者不管成績只考慮訓練次數。這就好比學校的模擬考,雖然學生每次都考高分,但真正考試時成績仍不理想,此時就得增加學習樣本重新訓練。

為了能處理更複雜的問題,一個神經元可擴展成一組簡單(單層)神經網路,如Fig. 4b所示,會有輸入層、隱藏層(Hidden Layer)及輸出層,推論及訓練的概念和一個神經元大致相同。若待解決問題更困難,如Fig. 4c所示,則可增加每一層的神經元或隱藏層數來解決。


Fig. 4 神經網路:(a)神經元工作原理;(b)簡單(單層)神經網路;(c)複雜(深層)神經網路 (圖片來源:OmniXRI整理繪製)


 


深度學習的代表作 – 卷積神經網路(CNN)


不過,問題來了,當輸入的資料為影像時,隨便一張32*32的單色灰階影像,就有高達1024個輸入;若是彩色影像還要乘以三倍(R,G,B),如此龐大的網路,參數(權重、偏重值)數量實在多到難以計算。於是深度學習的代表作「卷積神經網路(CNN)」因此誕生了。

如 Fig. 5 所示,這是一個用來辨識手寫數字(0~9)的案例(模型),稱為「LeNet」,輸入為32*32點單色灰階影像,輸出為0~9的機率。其中應用到一種名稱「卷積」或「迴旋積」的技巧,它讓權重值可以共用,在 Fig. 5中顯示的 C1層就是由六組 5*5的卷積核計算後的結果,則只需156((5*5+1)*6)個參數就夠了。當輸入點數降低到夠少點數時再採用全連結(Full Connection)方式(如上圖Fig. 4a, 4b)Fig. 5中的F6層。不過即便是如此,LeNet整個完整網路仍有六萬個參數需要進行訓練。


Fig. 5 神經網路:卷積神經網路(CNN, LeNet) (圖片來源:OmniXRI整理繪製)



為了解決各種不同問題,於是各種不同的網路(Net)結構或模型(Model)被提出。從Fig. 6 中可看出,橫軸是計算量,每個乘法或加法就算一次運算(Operations, Ops),不同算法從數千萬次到數百億次的計算才能推論一筆資料,通常計算量和參數量(圓圈直徑)有直接關係,參數量可能從數百萬到數億個。不過正確率和參數量及計算量則不一定有直接關連,對實際使用上來說當然希望找到計算量越低、正確率越高的模型,而正是AI科學家及工程師努力的方向。


Fig. 6 影像分類之神經網路之參數量、計算量及精確度比較圖(圖片來源



對Maker而言只需根據需求(正確率、計算量)及計算時間找到一個夠用的的模型及硬體平台(AI晶片)來用即可,就像只有幾個紙箱的東西要搬,不必找一台貨櫃車或一台千萬跑車來載。反之應用上若很在意正確率,則可能就要多浪費一些計算量(時間)及昂貴的硬體平台來換。

由上述內容可知雖然運用深度學習神經網路可得到較理想的辨識結果,但所需付出的代價也同樣非常驚人,光推論一筆資料就要計算數千萬次到數百億次,更不要說訓練時要訓練數萬到數百萬筆資料,數十到數千次循環週期(Epoch),所以如何加速訓練及推論時間就成了最重要的工作。


為了完成這麼龐大的工作,就必須有強悍運算能力的硬體平台。接著將詳細介紹目前市面上的各類AI晶片,進一步分析不同類型的晶片。


目前市面上對人工智能(AI)晶片常見的作法大致可分成五大類:通用型的CPU (Central Processing Unit)、半通用型的GPU (Graphics Processing Unit)、半專用型的FPGA (Field Programmable Gate Array)、專用型的ASIC (Application Specific Integrated Circuit)及混合型的SoC(System on ChiP),如下圖所示。接下來就針對各類型特色、代表性廠商及產品做一簡介,更完整的比較表請參考文末的比較表。


人工智能(AI)晶片主要分類及對應供應商(OmniXRI整理繪製)



一、中央處理器(CPU)─ 通用型AI晶片

一般電腦中一定會有CPU負責算術、邏輯、儲存及輸出入介面管理,因此可執行任何需要的演算法,當然也包括各式人工智慧、機器學習及深度學習的算法。其優點時可應付各種演算法的變化,彈性極高,並可處理邏輯運算及大量記憶體管理。現在較高階的CPU通常都會包含以往DSP(Digital Signal Processor)才有的乘加(MAC)指令,讓Y=A*B+C本來要兩次運算才能完成的指令,變成一次指令週期就能完成計算,加快運算速度。

但缺點是CPU計算用的核心(或執行緒Thread)數通常不會太多(一般型約1~10核,伺服器型32~72核),耗能較大,且未來核心數及速度已快達物理極限不易大幅提升,因此若要應付像深度學習這類大量演算時,通常只能選用核心(執行緒)數量較多或速度較快的晶片來解決,或者只執行較簡單模型的推論工作而不參與訓練。


Intel CPU(source


此類型較具代表的廠商有Intel、AMD、ARM、MIPS等(後兩家不生產實體晶片僅提供矽智財,都已被併購)。在AI應用上,Intel和AMD比較著重提供伺服器等級的高效晶片,如Intel Xeon Phi 7290F或AMD EPYC 7601都是屬於高核心數、多執行緒型。而ARM和MIPS則在移動式或嵌入式平台較為常見,通常會搭配其它AI晶片一起執行。若只單純使用多核CPU進行運算時,則通常僅能執行較簡單的網路(模型)。

二、繪圖晶片(GPU)─ 半通用型AI晶片


繪圖晶片原來是用於處理3D模型大量的三角面繪製、著色及顯示,幾乎都在處理矩陣演算(乘加運算),沒有邏輯處理,因此設計上有大量(數百到數萬個)的計算核心可供平行運算。後來,有人發現此特性比CPU更有利於進行有大量矩陣的科學計算,於是推出類似OpenGL的通用式的描述式語言,忽略繪圖功能,直接當成平行運算使用,如GPGPU(General-purpose computing on graphics processing units)、OpenMP、OpenVx、CUDA(Nvidia專用)、 OpenCL(大多數繪圖晶片)、 Android NN等。

當深度卷積網路興起時,GPU正好滿足這項大量平行矩陣計算的需求,因此造成洛陽紙貴,高階顯示卡一卡難求。雖然GPU非常適合當作訓練用,且可適用各種新的網路的開發,但不適合具有大量邏輯判斷的算法,且浪費許多時間及功耗在處理繪圖流水線(Pipeline)。另外,許多深度學習的框架(例如:PyTorch、Caffe、TensorFlow、Mxnet、CNTK、Keras等)不一定對所有的GPU都有支援,尤其是對行動裝置上的GPU更常遇到無法直接使用的問題。


Nvidia GPU(source



此類晶片最具代表性的廠商就是Nvidia,不但有完整的產品線(GeForce、 Tesla、Titan、DGX、Tegra、DriverPX等系列),從一般電腦、專業伺服器到嵌入式甚至自駕車都有對應產品,專業顯卡少則數千元,多則數百萬元。開發工具有CUDA, cuDNN等,更是促使GPU在AI應用上發揮更大算力,同時支援最多種深度學習框架,有完整的開發者生態圈,是其它GPU廠商難以憾動的。

雖然像AMD(Radeon系列)、Intel (HD Graphics系列)等大廠也有生產GPU,但目前可支援的框架就明顯少了許多。另外,在行動裝置上 Arm Mali系列、Qualcomm Adreno系列等較高階的可以用OpenCL來協助,但像Broadcom VideoCore系列就完全沒有框架可支援。

三、現場可程式邏輯閘陣列(FPGA)─ 半專用型AI晶片


GPU雖然使用上彈性較大,但畢竟不是專門用來做深度學習用的,有很長的工作流水線,所以在即時性、功耗及邏輯運算及記憶體管理等問題上都不易克服。如果設計成深度學習專用的積體電路(IC)又怕算法(模型)一直在演進,那好不容易才完成的IC就沒用了。一般IC設計完成後就不能變動,就像只能燒錄一次的光碟片,但FPGA卻允許隨時依需求變動,就像可重覆燒寫的光碟片,這項特性很適合在這個AI百家爭鳴的時代隨時可跟著一起演進又能保持執行效能。

不過這種方案最大的缺點是硬體成本很高,所以只適合放在機房當雲端訓練及推論用。此外由於記憶體不像CPU或GPU可以配置很大,所以並不適合參數量過大的模型。

目前Xilinx佔了約50%的市佔率,而深鑒科技(DeePhi)則主攻使用Xilinx Zynq 7000系列FPGA設計各種深度學習計算所需算法及開發工具,應用於無人機、安防、自駕車上,目前已獲多家知名創投投資。百度也利用Xilinx FPGA開發出XPU打造自家雲計算所需硬體。深思考(ideepwise)也利用FPGA製作專屬的AI晶片,鎖定醫療、情緒、自然語言、計算機視覺等領域。


Xilinx開發FPGA AI晶片(source



而Intel為了補足在AI晶片市場的不足,於是在2015年把市佔率40%的Altera買下。而微軟則另闢戰場,花了六年時間執行Catapult計畫將FPGA全面進駐至Azure雲端資料中心加速AI相關服務的計算速度。另外為了讓IC設計人員能對AI領域算法快速上手,Xilinx已開始把常用的AI算法(模型)及影像辨識功能以模組(xfDNN, xfOpenCV)方式導入,相信未來會有更多專門用於AI領域的FPGA快速開發工具會加入戰場。

四、特殊應用積體電路(ASIC)─ 專用型AI晶片


為了展現更好的計算效能、更低的價格及功耗並兼容CPU和GPU的優點,設計出專屬於深度學習的AI晶片就變成不可或缺的。但此類專用型IC缺點就是沒有彈性,只能處理單一功能,所以為了應付AI算法(模式)不斷演化,多半會搭配特定框架(例如:TensorFlow, Cafee, MXNet等)進行開發,甚至更窄化到只針對大量矩陣演算的優化。另外由於ASIC投產所需成本極高,若一年沒有賣個數百萬到千萬台的銷量,則可能難以支付開發成本。

所以目前主要市場可分為用於機房雲端訓練及推論用、行動通訊裝置本地(邊緣)端(Local/Edge)推論用及特殊用途小型嵌入式裝置(如自駕車)等。因此為了吸引市場的目光,許多廠商紛紛推出各種新名詞來突顯自家的能力,比方說Google的TPU (Tensor Processing Unit)、Movidius(Intel收購)的VPU(Vision Processing Unit)、寒武紀(Cambricon)的NPU(Neural Processing Unit)、聯發科(MediaTek)的APU(Artificial intelligence Processing Unit)、地平線(horizon-robotics)的BPU(Brain Processing Unit)、深鑒(DeePhi)的DPU(Deep Learning Processor Unit)、Graphcore的IPU(Intelligence Processing Unit)。


Google推TPU AI晶片



另外像Mobileye更將自家專用於自駕車的EyeQ系列中的平行運算單元依不同用途細分為VMP(Vector Microcode Processors)、PMA (Programmable Macro Array)、MPC(Multithreaded Processing Clusters)。不管名稱為何,其本質都大同小異,都是在處理大量的矩陣平行演算。

為了使深度學習能普及到各種行動裝置並免除雲端連線計算即時性不佳的問題,此類專門用於推論的ASIC已成了兵家必爭之地,目前仍以影像及語音兩大領域應用為主,另外像人臉(生物)辨識、自駕車、智慧零售、智能拍照、安全監控、智能音箱、機器人、無人機、實境(VR/AR/MR/XR)互動等應用也是熱門領域。

五、系統級晶片(SoC)─混合型AI晶片


一般以CPU為主的小型嵌入式系統或是行動通訊裝置為了省電通常沒有太強大的計算能力,所以如果要順利執行人工智慧或深度學習相關應用,通常要搭配其它AI晶片才能順暢運作。較常見的作法是將多種功能直接整合到單一晶片上,或者稱為SoC(System on Chip),尤其手機、嵌入式裝置、物聯網(IoT)晶片幾乎都是採用此種作法。
舉例來說:
1.Qualcomm的驍龍(Snapdragon) 845就包含8核CPU (Arm Cortex A75 * 4 + A55 * 4)、DSP (Hexagon 685)(AI用) 、Adreno 630 (GPU, VPU, DPU)(繪圖及影像處理用)。

2.Samsung的Exynos 9810包含8核CPU(四核客制+Arm Cortex A75 * 4)、18核GPU (Arm Mali G72-MP18)(繪圖顯示用)。

3.華為海思的麒麟(Kirin) 970包含8核CPU、12核GPU(Arm Mali G72-MP18)(繪圖顯示用)、雙ISP (影像影處用)、NPU (AI用)。

4.Apple的A11 Bionic包含6核CPU(Monsoon * 2 + Mistral * 4)、3核GPU (繪圖顯示用)、ISP (影像處理用)及具有0.6T Ops計算能力的Neural Engine (AI用)。

5.聯發科曦力(Helio) P60包含8核CPU(Arm Cortex-A73 * 4 + Arm Cortex-A53 *4)、GPU (Arm Mali-G72 MP3)、3核ISP,另外提供NeuroPilot開發平台串接CPU、GPU協同進行AI相關運算。



Samsung Exynos 9810(source


 

六、AI應用─自駕車領域


另外像自駕車領域的AI應用對於整合性、計算的即時性要求更高,因此通常都也會採混合式AI晶片設計。
舉例來說 :


1.Mobileye(Intel收購)的EyeQ4包含5核CPU(MIPS *4 + MIPS M5150 *1)、6核VMP、2核PMA、2核MPC,相當2.5TFlops的計算能力。

2.Nvidia TX2包含4核CPU(Arm Cortex A57 * 2 + Nvidia Denver 2 * 2)、GPU(Nvidia Pascal, 256 Cuda Core)。(主要用於空拍機及簡易車用)

3.Nvidia Drive PX Pegasus包含16核CPU(Nvidia Carmel)、4 組512 Cuda核GPU (NvidiaVolta iGPU * 2 + Nvidia post-Volta dGPU * 2),有320TOps的計算能力。

 
台灣目前僅有聯發科用了ARM的解決方案,開發出手機用SoC AI晶片Helio P60準備上市外,其它廠商可能都還在努力中或者只利用別家的AI晶片開發相關服務。相較於大陸已有十多家IC設計公司成功將產品上市,並且有眾多的AI晶片應用公司提供橫跨上、中、下游的服務,看來台灣得更加努力發揮創意突破這一困境了。

除此之外,目前還有幾家已被巨額投資但還未有產品上市的AI晶片公司也值得期待,如Intel收購的Nervana Systems、 知名創投Benchmark Capital投資的Cerebras Systems、SoftBank Ventures投資的Mythic,八位Google TPU團隊離職後開的公司Groq。


自駕車的AI應用採混合式AI晶片設計,要求整合性、計算的即時性。(圖片來源:Pierre-Michel Villa


 


綜合以上內容,CPU(伺服器等級)、GPU、FPGA、ASIC等AI晶片都很適合大量建置在機房中,有利於雲端訓練及雲端推論,但行動裝置(邊緣計算)受限於產品體積大小、運算效能、消耗功率、產品價格等問題,通常要採用ASIC或SoC類型的AI晶片,而訓練部份就得仰賴雲端訓練後再將參數值下載到行動裝置中進行推論。

至於全球AI晶片廠商產品的比較,請參考下表(本表頗長,點擊圖可完整觀看)


 


最後,將帶領各位Maker進入智能化的世界,你也能輕鬆成為一位AI應用創作者。


Maker如何進入AI領域?


對Maker而言,要如何進入智能化的世界呢?我們可從幾個方面來綜合評估:創作智能化目標、算力(AI晶片)、算法(模型/網路)、訓練資料及開發工具。

首先,確認創作內容的輸入和輸出項目為何?通常輸出與輸入的內容可能是數據(數值)、文字串、影像或語音。再來決定輸出的型式是分類(二分、多分類)還是迴歸(數值預測)問題(例如大小、位置、機率等)?或是更複雜的內容(例如一段影片、音樂、文章或連續動作產生)。

比方說想開發一台智能電扇,輸入的可能是一句話(命令、查詢)、一張影像(靜態手勢、表情等)、一段影片(動態手勢),或是溫濕度以及其它感測器。輸出的可能是一個動作(例如開關、調整電扇強度、轉動角度等)或是回答一句話(例如目前溫度、問候語句)。


小米智能風扇(來源



再舉一個例子,假設要開發一個智能花盆,輸入的可能是土壤溫濕度、酸鹼度、照度感測器所提供的數值,或是一張彩色影像、熱像圖或是一句詢問的話。輸出的可能是自動語音提醒、開關澆水設備或是預測開花時間等。

選擇合適的硬體平台


確認創作主題的輸入和輸出項目後,再來是為功能驗證選擇合適的硬體平台。

決定計算的硬體平台是在雲端、本地端(邊緣)或者混合計算,來決定可容許計算結果的反應時間(微秒或秒級)、正確率、誤判率。當然最重要的是產品製作成本,以及後續服務的費用是否能被接受。

大家可能會想說,還沒做怎麼知道系統複雜度及成本?其實通常直接使用雲端AI服務時,開發與硬體成本會低一些,執行時反應速度也會因為連網問題而慢一些,然而後續使用的服務費用會高一些。

反之,若以本地(邊緣)端硬體解決AI計算時,則製作成本及開發難度會高一些,不過後續通常不需要額外使用雲端服務的費用。若是預計使用雲端服務(例如:Google, Microsoft, AWS等)時,通常供應商會提供很清楚的費用評估。

假如想在本地端解決計算問題,則可用類推法,先在網路上找看看是否有類似的設計(部份亦可),參考別人用了哪些硬體平台(AI晶片)、算法(模型),則可以省去很多評估的時間。

可直接使用智能晶片


另外,目前已有很多常用的智能(AI)功能已被晶片化(詳見本系列(中)篇),可考慮直接買來用。如果只想開發軟體不想碰硬體,也可考慮直接用高階智能手機或SoC解決方案,或是採用像樹莓派這類Maker最常用的開發平台,加上Movidius (Intel)或海青智盈(Gyrfalcon)USB神經棒這類的AI加速工具,也能玩出許多新創意。像是Nvidia TX1這類的小型嵌入式開發板已包含強大的CPU及GPU可以提供強大算力,是個不錯的選擇。


Intel Movidius (source



接著要考慮的是訓練資料的來源,以及是否需要進行前處理或清理(Data Clean),確保訓練過程不會失控而無法收歛。當然以深度學習來說,資料數量及樣態越多時,訓練效果將會越好,然而訓練時間也會呈現幾何成長,費用也會相當驚人。因此犧牲一點正確率,通常訓練的資料量就能減少一些。

若輸入的內容是感測器的量測值或者是聲音時,則可能要注意取樣速度及資料穩定性,必要時加上一些硬體或軟體的濾波器(Filter)來穩定資料。若資料點數不多、輸出反應速度要求不高的情況下,有時可直接用CPU計算即可滿足需求。若輸入的是影像,在人眼還可以辨別之下,可考慮改成灰階或小一點的尺寸,這樣可減少許多訓練的時間。

有很多問題運用統計、特徵提取比較或是傳統機器學習方法就可完成智能化需求,至於是否要用到深度學習這類計算成本很高的作法,就要依實際創作內容來評估。假設無法避免使用深度學習這類方法來處理時,此時選用的硬體平台除了要考慮計算能力外,還要考慮開發時所需使用的程式語言(Python, C, Java)、工具包(SDK)、深度學習框架的支援性。因為AI晶片目前沒有統一的開發介面,所以只能盡量挑選有支援像TensorFlow、 Caffe、Mxnet 這類較流行的框架。

如果是使用手機的SoC方案時,在Android 8.0以上還有Android NN API,或者像Arm Project Trillium這類的工具協助整合CPU、GPU、NPU,以便開發AI相關應用,而少數AI晶片可支援例如OpenVX、Cuda或OpenCL等GPU專用平行計算語言,也可以考慮使用。

結論


在這個AI晶片百家爭鳴的時代,不管是從雲端(Cloud)到邊緣(Edge)再到晶片(Chip),甚至連生態圈(Ecosystem)都已有完整的發展且快速成長中,同時網路上也有取之不盡的免費教學資源,所以正是Maker創作智能化的最佳時代

俗話說:「沒有做不到只有想不到。」善用工具、發揮創意,相信不久的將來,每個人都會是最佳的AI應用創作者,就像在手機上開發程式一樣簡單。

各位Maker,就讓我們一起努力吧。


未來人人都可能是AI應用創作者


本文同步發表於MakerPro

OmniXRI 發表在 痞客邦 留言(0) 人氣()


2012年Google Glasses造成一股AR眼鏡旋風,大家都希望從此可以過著如科幻電影般的隨心所欲獲取及處理數位資訊,可惜地是當年很多條件都不成熟,所以這項產品不到兩年就消失於市場。後來2015年微軟推出Hololens時重新以MR(Mixed Reality)商業術語(其實就是Strong Augmented Reality)包裝,同時兼具AR/VR效果,加上強力的3D掃描及手勢互動,的確又吸引了一波市場熱潮,但可惜的是單價太高(US$3000~5000)難以全面普及化。去年及今年隨著AI語音、影像辨識及3D感測器(光學)技術的成熟,加上市場謠言不斷APPLE即將推出AR眼鏡,因此可想見未來一、兩年內穿戴式顯示及互動技術又會變成顯學。
 

OmniXRI 發表在 痞客邦 留言(0) 人氣()


2016年初日本廠商推出一台看似咖啡壺的AI虛擬助理原型機稱為Gatebox (Fig. 1a),這台機器可厲害了,浮空投影出一個3D動漫美少女管家,她不但會露出可愛的笑容問候你,眼神動作還會跟著你移動,最擅長唱歌跳舞,並且有像Siri的語音助理功能可以查詢天氣、控制家電等,還可以用手機APP和她連線,就像身邊多了一個貼心的女友,把你照顧的無微不至。2016年底開始接受預訂共300台,一台要價近三十萬日圓還是一掃而空。2017年底開始出貨,20183月再追加39台日本最紅的3D虛擬偶像「初音」版本。

OmniXRI 發表在 痞客邦 留言(0) 人氣()

undefined
雖然現在的小朋友可能已經不太認識「遊戲王」這個知名動漫,但當年我卻被它那個虛擬怪獸實像化的戰鬥場景深深吸引,甚至為此重新回到學校花了許多時間研究如何實現這項技術,包括多視角取像、三維重建、裸視立體顯示及360度全像成像技術。經過數年努力雖然有一些小小成果,但最終還是得向現實(物理極限及開發經費)低頭,心中總想著難道科幻電影「星際大戰」中全息(全像術)投影的莉亞公主、「鋼鐵人」中的浮空顯示及人機互動、「阿凡達」中的戰鬥沙盤在我有生之年都沒機會看到它們真正被實現了嗎?正當心灰意之際,好友傳來的一份資訊讓我眼睛一亮,原來這項超黑科技竟然在美國國防部高等研究計畫署(DARPA)的支持下(不知花了多少錢??),已成功被FOVI3D這家公司商品化了,稱為「光場顯示器(Light Field Display, LfD)」,甚至可以稱為真正的全像顯示器(Holographic Display)(大陸稱為全息顯示器),而FOVI3D正是知名全像術照片製作公司Zebra Imaging 2015年所收購的子公司。
FOVI3D公司推出的「光場顯示器」是一個看似桌子的顯示器,眾人不用戴著笨重的3D眼鏡,即可圍在桌邊俯視如同實體般的影像進行討論(Fig.1),如同上帝視角,每個人都可看到屬於自己視角的影像,且不會有傳統雙眼立體顯示器(或VR頭顯)那種令人暈眩的問題,雖然目前顯示效果離這些科幻電影差了一大截,價格也貴得離譜,但現有的成果仍是非常驚人。為了讓大家能更清楚這項產品(這不是業配文),接下來就為大家逐一介紹什麼是光場、如何取得及還原光場資訊、光場攝影機(Light Field Camera)的發展歷程,最後說明FOVI3D這項超黑科技「光場顯示器」到底是如何被實現及未來無限想像的應用方式。

OmniXRI 發表在 痞客邦 留言(0) 人氣()

undefined
我有沒有聽錯!3.3V / 8MHz 8bit MCU的Arduino Mini Pro竟然可以拿來做「動畫胸牌」,不是LED的那種(圖一左圖),而是64K彩色LCD的那種(圖一右圖)。它不只可以秀文字還可秀影像,並可選擇多張自己喜歡的影像及輸入自己想要的文字後再下載,更誇張的是竟然沒有用到SD卡,總成本不到二個小朋友(<NT$500)。各位Maker,這是真的!而最主要的功臣就是來揚科技(Lyontek Inc.)的那顆PSRAM(Pseudo Static Random Access Memory)(圖一右圖綠色板子上正中間那顆八隻腳的IC),到底什麼是PSRAM,又要怎麼才能完成這項作品,就讓我們繼續看下去。
 

OmniXRI 發表在 痞客邦 留言(0) 人氣()

1 2
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。