Tag Archives: Movidius

[ 活動記錄 ] 2018.10.18- Maker Faire Taipei 2018 RS DesignSpark展品精心製作 Check it out!

文字

RS DesignSpark

圖片

RS DesignSpark

展出時間

2018/11/3(六) – 11/4(日)

 

再過半個多月,Maker Faire Taipei 2018即將盛大登場!屆時,將有許多參展廠商與創客夥伴們齊聚一堂,展出自己的精心之作。而RS DesignSpark也會參與今年的Maker Faire Taipei,並在活動中展出Arduino、Raspberry Pi、Intel Movidius⋯⋯等等應用,分別有盤旋小魚、小型的Pidentifier、Pi-Top物件識別器、Arduino空氣吉他及簡報訓練器。為讓讀者們嚐嚐鮮、過過癮、吃吃味(咦),小編先介紹其中一個作品,Check it out

via GIPHY

簡易款Pi-Top物件識別器

這款應用運用樹莓派和Intel Movidius NCS,並配合Pi-Top CEED Pro及網絡攝影機,將影像與識別結果,顯示於Pi-top螢幕的20級識別小工具。

主要構成硬體:

  1. Raspberry Pi Model B+ (811-1284)

  2. Intel Movidius Neural Network Compute Stick (139-3655)

  3. Pi-Top CEED Pro, Green(122-6547)

圖1

 

其它的作品就請讀者們前往RS官網瀏覽,上面有很詳盡的說明。網址:https://www.rs-online.com/designspark/article-41-cn

 

這次RS DesignSpark參加Maker Faire Taipei 2018,只有作品參展嗎?當然不是囉!RS DesignSpark看準當前邊緣運算的科技趨勢,為參加者舉辦了一場「邊緣運算AI智慧裝置」體驗工作坊!

 

參加體驗工作坊可學到什麼?工作坊將運用Raspberry Pi 加上隨身碟大小的神經運算模組Intel Movidius NCS,展示低功耗又能達到高度運算負載的裝置,盼望讓使用者在AI運算高畫質圖像處理機械視覺類神經網路等應用上,觸發出新的解決方案。

 

有工作坊當然有好康囉!好康就是:凡報名體驗工作坊的夥伴,即可得到Maker Faire Taipei 2018活動票券乙張。(聽說今年的Maker Faire Taipei要購買門票喔!)所以,對邊緣運算有興趣的讀者們,請趕快報名!報名請點這裡

 

 And one more thing⋯⋯

via GIPHY

 

活動現場還將有抽獎活動,會送出Movidius、Raspberry Pi套件、Digilent Analog Discovery 2、Pmod HAT⋯⋯等等豐富獎品。所以,Maker Faire Taipei 2018,我們不見不散喔!

 

相關文章

[ 介紹文 ]CAVEDU教育團隊如何看AI 與科技教育

作者/攝影

文:曾吉弘

圖:CAVEDU教育團隊

主題圖片:Designed by Starline

文章分類介紹文
成本X
難度

X

時間X

 

CAVEDU怎麼看 AI 人工智慧

近年來全世界都掀起了一股「大家來coding」的風潮,台灣政府也開始推動基礎程式教育,目標是讓孩子們能在學習程式設計的過程中培養基礎的運算思維(Computational thinking)能力,能對這個快速變動的環境有更多的好奇心與觀察力。另一方面,自從大陸在今年(2018) 4月於上海發表全球第一本AI高中教材《人工智能基礎》之後,大家好像都緊張了起來:

  • 業界:「不 AI 一下,好像不行?得趕快說自己是 AI 產業。

  • 家長、同學:「我要找 AI 相關科系!」(當年的生科與資管也是這樣?)

  • 學校老師:「把原本的課程名稱加上AI兩個字!

 

上述也許誇大了點,但科技領域關鍵字一日數變,AI 領域又包山包海,除了極少數頂尖研究者之外,又有誰敢說自己是 AI大師、AI領航者呢?

 

AI 等資訊科技是現在進行式,今天弄得要死要活的東西,明天說不定點點按鈕就好了?近兩年物聯網教學就是很好的例證,使用 LinkIt 7697 搭配 MCS 雲服務,已經能讓國小學生也能做出簡單的物聯網專案,從網頁與手機就能監看感測器資訊或控制開發板。在此的並非說網路通訊協定不重要,而是對於非專業人士來說,這樣的設計能幫助他們聚焦在最重要的事情上:資料。如果資料對於開發者來說是有意義或是重要的,那先從資料本身開始是個相當好的出發點。

圖1

 

圖2

 

關鍵字會變,但流程與理論基礎不會。CAVEDU從2008年開始使用樂高機器人來教學(如果要回溯到我與鄭建彥最開始接觸樂高的話,那是1999年的RCX了),一路邁入手機App (Android / App Inventor@2010)、互動聯網裝置(Arduino / Rpi / LinkIt…@2013)、物聯網(@2015) 到去年開始如野火燎原一般的 AI。如果只追關鍵字的話,真的會無所適從。

 

根據美國麻省理工學院媒體實驗室終身幼兒園小組的Mitchel Resnick教授表示,幼兒(小學前)時期可說是我們一生中最具創造力的時候。該團隊所開發的 Scratch 已經是小學階段的最主要圖形化程式介面之一,Resnick教授也主張 「Scratch 是幫助孩子們成為創意思考者(Creative Thinker)的絕佳平台」,並致力於讓 Scratch 「很簡單」,他認為程式提供愈多功能或愈多元件反而會限縮孩子們的創造力。(關於創意思考者,請參考 Learning Creative Learning 課程,正體中文由阿吉老師與諸多好朋友一起翻譯完成。)

 

另一方面,MIT App Inventor小組創辦人 Hal Abelson 教授(阿吉老師於2017- 2018 於該實驗室擔任訪問學者)也說:「如果資訊科技一日數變,那為什麼還要讓孩子們和他們的祖父母一樣的方式來學習?” 因此,在這股浪潮下也有另一種反思:「是否人人都需要學如何寫程式?這樣同質化的過程會對孩子造成怎樣的影響?

 

CAVEDU的理念是:根據當前的科技發展趨勢,針對不同學習課群提供合適的教學內容。

 

對於孩子來說,好玩最重要

圖3

 

圖4

 

點我觀看與Hal Abelson教授的訪談   /   點我觀看與Mitchel Resnick教授的訪談

 

使用 Raspberry Pi 實作AI 視覺辨識無人小車

AI 對多數人來說,還是太虛無飄渺了。CAVEDU 為了讓學生理解 AI 諸多領域中最容易有感也是最容易實踐的:視覺辨識,我們使用 Raspberry Pi B3+ (後簡稱 Pi3)所設計的 「邊緣運算 AI 無人自駕小車」。

 

這是我們認為對於基礎 AI 視覺應用的最佳教學套件。之所以選用 Pi3 自然是因為其性價比以及豐富的教學資源,當年還是 Pi 2的時候就有相當不錯的 OpenCV 視覺追蹤效果,各樣的函式庫套件也非常豐富,一下子很多專題都可以使用它來完成,與Arduino 兩者號稱是學生專題救星呢(笑)!

 

AI 視覺應用的難點在於收集影像資料。喜歡養貓的阿吉老師開玩笑說:「我要幫我家的貓要拍多少張照片都沒問題,但是要蒐集十種不同的貓就難囉!」我們所設計的課程會帶學生體驗完整的訓練流程,不使用現成的資料集(因為訓練結果不會差太多),而是針對無人小車的場地實際收集影像,標記,最後選定模型來進行訓練。其中每一個環節都會影響到小車最終的辨識結果。一定有感!

圖5 學員自行收集的影像資料

 

圖6 AI視覺辨識課程實況

 

圖7 視覺辨識課程使用的AI無人小車

 

邊緣運算?

邊緣運算是指終端裝置也具有一定的能力來處理資料 ,可以加快資料的處理與傳送速度,只要把運算後的結果而非原始資料丟回雲端 (不過不一定什麼事情都要與雲端結合,後續會繼續討論)即可,自然能大幅減少因網路頻寬受限而產生的延遲。

 

例如就經濟面的考量,如果要做到抓到臉部之後能進一步辨識情緒/微笑或五官位置這類功能的話。後面的進階功能可以使用 Microsoft Azure 認知服務 或其他類似的雲端服務來做到,但這些雲端服務都需要付費(或部分免費),且多數需要信用卡來進行身份認證,這件事在多數學校就卡關了吧…   因此我們在課程設計上就朝「終端裝置就能做到」這個方向來努力。在此簡單做一些比較:

 

邊緣運算 VS 雲端服務

  1. 程式碼開源雲端服務很厲害,但它不會告訴你他是怎麼算的。我們能做的只能相信這些雲端服務供應商的結果。例如:Facebook 每天都有一大堆人在打卡與自拍,合理推斷在超大量的資料之下,Facebook在辨識臉孔上非常準,當然事實也是如此。如果把這些運算改到邊緣裝置來做的話,由於程式碼已知,就能循序漸進讓學生學到更多東西,也可以針對後續的情境來擴充。
  2. 不受網路環境影響:相信各位老師都體認到了:教室可以上網,不代表可以進行物聯網教學。能夠進行物聯網課程的話,教室的 router 要很夠力,基本要能夠負擔 「上課人數 x 3」的連線數:聯網裝置 + 手機 + 電腦 都要在同一個網段下才行。因此20人上課,連線數的基本需求就是 60。已經有許多學校著手升級網路基本設備,非常欣慰。
  3. 運算即時:以 CAVEDU 的AI教學車為例,這樣的情境就需要即時,而非連結雲端。Rpi 的速度不算太快,拍照上傳雲端,呼叫API,收到回傳結果來決定車子動作,這個過程再怎麼快也要3~5秒,這樣就算偵測到什麼東西,車子也已經撞牆了。因此有些標榜AI語音辨識結合自走車控制,好像有點奇怪⋯⋯。

 

作為邊緣運算裝置,如何提升 Raspberry Pi 的算力?

CAVEDU 的 Pi3 AI無人小車,直接讓 Rpi 執行使用 Keras 神經網路架構來進行視覺辨識,辨識張數每秒約2~5張(0.5 ~ 0.2秒/張)。這大大限制了車子的移動速度。畢竟,Pi 3只要開多一點網頁,系統就到100%了,何況大量的模型訓練呢?在不更換主板的前提下,要如何提升 Raspberry Pi 的算力呢?

 

Intel 所推出的 Movidius NCS神經運算棒來得恰到好處,可以把最耗資源的運算分一點去做。以 Pi3 小車來說,只要搭配一隻 Intel Movidius NCS 就可以讓每秒的張數提升到每秒約14~20張(0.07 ~ 0.05秒/張)。算是相當經濟實惠不錯的選擇,當然也可以期待 Pi 4就是了。根據 Intel 原廠文件表示,可以串接多隻 Movidius 達到更好的效能。

 

的確,覺得Pi 效能不佳的讀者,當然可以購買更高級的硬體例如 Nvidia TX1,但對於學校來說,經費可以買幾台呢?買一台大家圍著看嗎?另一方面,課程的延伸性呢?本課程已經與台灣微軟技術中心合作開辦多梯次的人工智慧實務工作坊(AGV),並搭配其 Azure 雲服務下的資料科學虛擬機器 (Data Science Virtual Machine) 來加速神經網路訓練速度,適合業界人士使用。另一方面,對於教學單位來說,可使用個人電腦來進行訓練,使用我們所提供的架構使用一般的電腦也可以完成訓練,並搭配 Pi3 完成至少一學期的課程(課表已經完成,歡迎來信索取或找我們去辦研習喔!E-mail:service@cavedu.com

圖8 Intel Movidius NCS神經運算棒

 

CAVEDU 提供各式各樣的最新課程,當第一線教學者的強力後盾。如果您也認同CAVEDU的理念,不喜歡好高騖遠的名詞大戰,歡迎來CAVEDU走走看看。

 

相關文章

 

 

[課程紀錄文] 2018.8.13-14-跟著CAVEDU學AI人工智慧:一堂結合機器學習中的影像辨識及邊緣運算的深度課程

記錄

宗諭

攝影

吉弘

講師

吉弘、豐智

上課地點台灣微軟大樓
課程時間

2018年8月13-14日

8月13至14日,一場AI人工智慧的深度學習課程,在台灣微軟大樓展開⋯⋯。

 

然而,早在課程開始前的一個月,CAVEDU教育團隊這邊的兩位講師:「阿吉老師」曾吉弘與徐豐智,以及與此次課程的相關人員,便已針對這門課程展開緊鑼密鼓地準備。從剛開始針對課程內容進行深入研究、討論;至中期的針對「Microsoft Azure DSVM資料科學虛擬機器」持續調整、設定,並且訓練模型;最後一週與課程各單位間的持續溝通、協調、聯繫,針對上課要使用的RK Car不斷調測,設計、印刷試跑RK Car需用的道路地墊⋯⋯等等。可以說,CAVEDU教育團隊真是為這次課程卯足全勁了!

 

課程的結果也是十分甜美。根據微軟方面人員的統計,參與課程21位學員的AI AGV車皆成功跑車,一個步驟都沒有漏掉。而微軟方面亦十分肯定CAVEDU教育團隊,在這次課程中展現出的專業能力

圖1 講師之一「阿吉老師」曾吉弘

 

圖2 另外一位講師徐豐智(中著紅衣者)

 

回到這門課程,究竟教授給學員的是什麼呢?

 

課程的設計是屬於實務導向,簡而言之,就是訓練無人車達成路牌辨識的目標,等學員訓練好模型後,再至CAVEDU教育團隊設計、製作的地墊上試跑。

圖3 學員讓RK Car在CAVEDU製作的道路地墊上試跑

 

我們運用什麼工具訓練模型呢?答案是微軟的Azure DSVM資料科學虛擬機器。Azure DSVM是一種雲端服務,透過常用於資料分析、機器學習服務及AI訓練的數個熱門工具,預先安裝、設定及測試的Azure虛擬機器映像。

圖4 資料蒐集並訓練模型

 

下圖是課程中使用的無人載具RK Car,車子由CAVEDU教育團隊自造,以Raspberry Pi單板電腦為核心。RK Car上藍色的是Intel Movidius神經運算棒,阿吉老師有向學員們展示Intel的AI模型,透過Movidius的加速,針對道路上各種車輛進行分類,以及街景影像的辨識,例如街道上的人、車牌、摩托車⋯⋯等等。透過Intel Movidius,能使硬體等級沒有非常高的Raspberry Pi單板電腦,以更快速度進行影像辨識。(若欲購買RK Car,請洽機器人王國商城。)

圖5 安裝上Intel Movidius神經運算棒的RK Car

 

下圖是學員們跑車的情況。每位學員的無人載具皆需學會辨識左轉、右轉、停止標示,才能成功完成道路地墊上的試跑。在阿吉老師、豐智及助教的悉心準備、指導下,所有學員皆跑車大成功!

圖6 所有學員順利完成跑車

 

對CAVEDU教育團隊而言,這次課程使我們在AI人工智慧領域又邁進一步。之前我們較著重在「邊緣運算」,也就是將應用程式、資料及服務的運算,由網路中心節點移至網路邏輯上的邊緣節點進行處理。

 

這次,我們實作了機器學習中的影像辨識,並整合剛剛提及的邊緣運算,成功達成一次AI實務的軟硬整合課程。套一句阿吉老師的課後感言:「我想,我們應是最先推出AI實務軟硬整合課程的團隊吧。」歡迎跟著我們一起成長、一起學習AI,微軟將繼續於9月份、10月開課,歡迎點此報名

 

最後,播放一段輪型機器人視角的跑車影片,給各位讀者欣賞。

 

相關文章

[AI 人工智慧應用] MovidiusNCS在PC中設定Ubuntu虛擬機並執行NCSDK(下)

 

作者

袁佑緣

時間

三小時

難度

***

材料表

  1. 電腦/筆記型電腦
  2. Movidius Neural Computer Stick

本篇是接續MovidiusNCS在PC中設定Ubuntu虛擬機並執行NCSDK(上), 在(下)篇中,我們將完成剩下的NCSDK安裝設定,分享如何讓虛擬機也可以跟Raspberry Pi遠端連線、在虛擬機中的Ubuntu作業系統可以使用Movidius NCS來做運算、壓縮並備份虛擬機的作業系統。

在Ubuntu虛擬機中安裝NCSDK

首先請將Ubuntu虛擬機開機,並登入您的使用者帳號,如下圖。

接下來請點選左上角的圖示, 叫出搜尋應用程式的選單, 接下來打上”terminal”來搜尋終端機, 最後點選terminal應用程式打開終端機。

另外補充一下,如果要是使用快捷鍵的方式來打開終端機, 可以按下<Ctrl>+<Alt>+T來開啟。

接下來請在終端機中輸入以下的指令, 來更新系統套件。

sudo apt-get update

接著請輸入以下的指令來升級系統的套件。

sudo apt-get upgrade -y

因為我們需要使用git來下載NCSDK的github原始碼, 所以請輸入以下指令來使用apt套件管理員來安裝git

sudo apt-get install git -y

 

接下來我們將NCSDK的github下載下來

git clone https://github.com/movidius/ncsdk

 

下載完成後, 我們使用cd指令將工作目錄移到nscdk這個資料夾中。

cd ncsdk

緊接著輸入以下的指令, 將NCSDK透過Makefile的設定安裝起來。

make install

 

安裝過程會花上不少時間, 請讀者耐心等候。

等安裝完成後, 程式會自動提示使用者要重新開一個新的終端機才會生效, 如下圖。

請讀者再重新開一個新的終端機, 並輸入以下的指令, 將工作目錄指定到一個hello_ncs_py的範例資料夾。

cd examples/apps/hello_ncs_py/

 

接著請將Movidius NCS 接到電腦的USB孔, 我們將要跑跑看這隻範例程式是否能正確的辨識到NCS, 並且能夠成功使用NCSDK的功能。

make run

如果說回傳的結果是上圖, 顯示NCS device working就代表成功囉!

測試NCSDK的examples

如果前面的NCSDK安裝與NCS裝置都可以正常運作的話, 我們可以來試試看跑其他的範例程式。

請打開終端機, 並切換工作目錄到ncsdk資料夾中, 並執行ncsdk中的examples。

cd ncsdk
make examples

 


執行程式的過程中, NCS會去下載並執行範例中的網路模型, 並實際評測跑出來的結果。

安裝SSH Server

有時候我們可能需要能透過SSH來連線到VirtualBox中的虛擬機, 那們這個時候就需要在Ubuntu作業系統中安裝SSH的server,

請輸入以下的指令來安裝openssh-server

sudo apt-get install openssh-server -y

安裝完成後, 我們必須將SSH的Service設置為啟用

sudo systemctl enable ssh

接下來下次虛擬機重開機的時候就會自動執行SSH Server了。

另外我們也可以透過指令的方式直接啟用SSH Server,

sudo systemctl start ssh

或者是查看SSH Server的狀態。

sudo systemctl status ssh

順帶一提, 如果是想要在Ubuntu作業系統中關機的話, 可以點選右上角的開關鍵, 並選擇Shutdown選項即可。

接下來我們看一下怎麼透過電腦來連到虛擬機中的Ubuntu系統中, 首先我們先下載Google Chrome瀏覽器, 並在瀏覽器中安裝一個 Chrome瀏覽器的插件Secure Shell

安裝完成後, 讀者可以直接在瀏覽器的網址列直接打上”ssh”, 接下來再按下Tab鍵就會自動進入ssh插件模式, 然後就可以打上”Ubuntu使用者名稱@localhost:2222″ 來連線到虛擬機中, 至於為什麼要連線到port 2222呢, 我們在之前的文章”完全不接螢幕鍵盤滑鼠,電腦一開始就用網路線遠端連線Pi” 有提到,在網路設定中有設定了Port Forwarding的緣故。

初次登入的話,一開始會先建立金鑰的認證, 請輸入”yes”來同意認證。

以下是成功登錄的畫面

另外這邊在分享一個進階的技巧, 其實有時候我們並不需要真的進到Ubuntu系統中的桌面環境, 大部分的時候我們只需要能夠登入系統中的shell即可對系統下指令, 讀者可以試著在啟動虛擬機時, 按下右鍵選擇Start→Headless Start, 這樣就可以省去開啟畫面的動作, 對電腦的計算負擔也會比較小喔。

虛擬機的Import/Export

最後,我們辛辛苦苦安裝完虛擬機並安裝了NCSDK函式庫後, 當然會希望可以把這個虛擬機直接存起來成一個VirtualBox的壓縮檔, 如此一來,在新的電腦上也可以使用VirtualBox來讀取這個輸出的壓縮檔, 直接引入安裝就可以使用。

首先點選左上角的File → Export Appliance

選擇要輸出的虛擬機,

接下來選擇檔名及儲存位置,

設定完成後就會開始輸出囉!

輸出完成後, 我們來看看如何引入這個OVA檔, 首先請點選File → Import Appliance

最後確認一下設定有沒有需要調整的, 比如說記憶體大小,USB Controller等, 預設的話會跟原始Export的虛擬機設定一樣。

另外,如果是想要直接使用CAVEDU團隊提供打包好的ova檔的話, 可以從以下的連結來下載,總大小約7GB左右, 裡面已經有完成本文上下兩篇的所有設定, 只要按照這一小節的教學引入即可喔。

 

相關文章:

[AI 人工智慧應用] MovidiusNCS在PC中設定Ubuntu虛擬機並執行NCSDK(上)

作者

袁佑緣

時間

三小時

難度

***

材料表

前言

為了要能夠在電腦上使用Movidius Neural Computation Stick(NCS), 我們必須在個人電腦上準備一些必要的工具, 例如:Ubuntu 16.04作業系統(目前NCS正式支持的系統版號)以及安裝必要的函式庫NCSDK。

由於一般人的電腦的作業系統都不是Ubuntu16.04, 所以我們必須要在電腦上安裝虛擬機來跑一個虛擬的系統。

以下我們將一步一步的帶各位讀者在自己的電腦上完成詳細的虛擬機設定, 如果是想要直接使用我們已經幫您做完的版本, 請直接跳到 “[Movidius NCS] 如何在PC中設定Ubuntu虛擬機並執行NCSDK(下) 的虛擬機的Import/Export 小節“。

懶人包教學影片可以看這裡,想一步一步自己設定請往下繼續看:

懶人包影片軟體連結,想一步一步自己設定請往下繼續看

1、更多Movidius AI運算連結,請下載2、3、4的檔案

2、VirtualBox軟體安裝檔連結

3、VirtualBox 作業系統懶人包安裝檔, Ubuntu for intel Movidius 神經運算棒 作業系統連結

4、VirtualBox USB2.0、USB3.0 Extension Pack.下載連結

安裝VirtualBox與下載Ubuntu作業系統

首先請先到以下的網址下載VirtualBox虛擬機, 並且根據您的作業系統來選擇要下載的安裝檔, 例如:假設讀者的電腦作業系統是Windows的話, 就在VirtualBox 52.6 platform packages, 就點選”Windos hosts”來下載。

接下來我們還必須要去下載VritulBox Extension Pack, 才能讓虛擬機使用USB3.0的功能。

再來請到以下的網站去下載Ubuntu 16.04系統,

新增虛擬機

下載完成後,請打開Virtualbox,並按下New新增一個虛擬機器。

接下來在Name上打上虛擬機的名稱, 並選擇Type為Linux, 選擇Version為Ubuntu (64-bit),如下圖。

接下來指定記憶體的大小,基本上至少要有2GB會比較夠。

接下來選擇建立一個虛擬的硬碟。

選擇硬碟檔案格式為VDI(VritualBox Disk Image)

指定硬碟維dynamically allocated。

最後指定虛擬硬碟的大小,建議10~15GB,或15GB以上。

設定安裝光碟

完成後在VirtualBox左邊的選單應該可以看到剛剛新增的虛擬機, 如下圖中的ubunutu-NCS, 接下來請按下右鍵,並點選Settings。

先選擇擇Storage, 然後在Optical Device點選光碟小圖示, 並選擇剛剛下載的Ubunutu 16.04安裝光碟。

設定USB Controller

接下來我們要來設定USB界面, 為了要讓虛擬機可以辨識到Movidius的NCS, 請先選擇Enable USB Controller, 並勾選USB 3.0 (xHCI) Controller。 如果不能勾選USB3.0的話,有可能是您沒有安裝前面提過的VirtualBox Extension Pack。

接下來在下面的USB Filter新增USB2跟USB3的設定,如下圖。

網路設定

最後,為了要讓使用者可以使用SSH遠端登入虛擬機中, 我們必須設定一個Port Forwarding的設定。

如下圖,將Host的port 2222轉送到Guset的port 22, 也就是說在讀者的電腦上如果用SSH連線到自己localhost的port 2222, 就會連線到虛擬機中的Ubuntu系統中(一般SSH Server預設是port 22)。

安裝Ubuntu系統

以上的設定都完成後, 請點選向右的箭頭(Start), 將虛擬機開機。

進入Ubuntu安裝光碟後, 請選擇右邊的Install Ubuntu。

接下來選擇Erase disk and install Ubuntu。

按下Continue繼續安裝。

選擇時區設定,如下範例中的台北。

在台灣的話,選擇預設的Keyboard Layout即可。

最後設定一下使用者名稱及密碼。

以上設定完成後, 虛擬機會需要花上一點時間安裝全新的Ubuntu作業系統。

當出現以下的圖示時, 就代表已經安裝完成了, 接下來只要按下Restart Now重新開機即可。

一般來說, 安裝完新的系統後,就會需要退出當初使用的安裝光碟, 不過不用擔心,VirtualBox會自動幫你做完, 所以讀者只要直接按下Enter繼續即可。

虛擬機重開之後, 應該就能夠進到新安裝的Ubuntu作業系統, 請輸入您設定的使用者密碼。

成功登入後, 讀者應該就可以看到如下圖的桌面, 代表已經安裝成功囉!

接下來,請讀者繼續到 [Movidius NCS] 如何在PC中設定Ubuntu虛擬機並執行NCSDK(下)完成剩下的NCSDK安裝設定。

 

相關文章:

[Movidius神經運算棒]五步驟打造Intel Movidius NCS影像分類器

(Original post from Intel Movidius NCS blog: “Build an Image Classifier in 5 steps”:https://movidius.github.io/blog/ncs-image-classifier/

 

什麼是影像分類?

影像分類是電腦視覺的重要課題。目標在於把圖像中的某個主題或物體歸類到預先定義的類別中。現實生活中的影像分類問題是把印有各種物體的卡片拿給小孩子看,並讓他們分辨卡片上所印的東西是什麼。傳統的作法是讓機器具備一定的視覺感知能力,這有賴於使用特徵描述器的各種複雜電腦演算法,描述器像是邊緣、角落與顏色等等,來辨識或辨認影像中的一或多個物體。

深度學習採用另一個更有效率的做法來解決現實生活中的影像問題。它運用了多層彼此互聯的神經元,每一層都採用了特定的演算法去辨識或分類某個描述符(descriptor)。舉例來說,如果您想要對交通的[STOP]號誌進行分類的話,要用到深度神經網路 (DNN) 來偵測號誌的邊緣與邊界,第一層則是用來偵測邊角的數量、下一層則是偵測紅色、再下一層偵測紅色周圍的白色邊界,一直反覆執行下去。DNN可以把一個任務分配到執行單一檢算法的多個層,這樣可以處理大量的描述符,讓基於DNN的影像處理應用於現實生活中能更有效率。

作者/攝影  曾吉弘
時間  2小時
成本
難度 * * * * *
材料表
  • Raspberry Pi 3單板電腦
  • Intel Movidius神經計算棒

 

Layer 1: 邊緣偵測(八角形)

Layer 2: 邊緣附近的白色邊界

Layer 3: 紅色本體

Layer 4: “STOP”字樣

注意:上圖僅用於示範DNN如何辨識物體中的不同描述符,並非DNN用於分類STOP標示的正確呈現。

影像分類與物件偵測是不一樣的。分類是假設整張圖中只有一個物體,例如上述的幼童圖卡範例。另一方面,物件偵測可以在同一張圖中處理多個物體,並計算各物體在圖中的位置。

邊做邊學!

您會製作:

從資料夾中讀取單張影像並進行分類。

您會學到:

  • 如何使用預訓練的網路來進行影像分類
  • 如何使用Intel® Movidius™ NCS 的API框架來編寫程式

您會需要:

  • Intel Movidius Neural Compute Stick 神經運算棒 – 購買請按我
  • 32/64位元的桌上型/筆記型電腦,作業系統須為Ubuntu 16.04 (“開發機器”)

如果還沒做的話,請在您的開發機器上安裝完整的NCSDK。請參考Intel Movidius NCS Quick Start Guide上的安裝步驟來完成。

先看結果…

如果想先看看程式輸出結果的話,請用以下使令來取得範例程式 (NC App Zoo) 並執行

mkdir -p ~/workspace
cd ~/workspace
git clone https://github.com/movidius/ncappzoo
cd ncappzoo/apps/image-classifier
make run

make run 指令會下載並建置所有的相依檔案,例如預訓練網路、二元graph檔、ilsvrc資料集均值等。只有第一次執行時要先執行make run;後續只要執行 python3 image-classifier.py 就可以了。應該會看到類似以下的訊息:

 ——- predictions ——–
prediction 1 is n02123159 tiger cat
prediction 2 is n02124075 Egyptian cat
prediction 3 is n02113023 Pembroke, Pembroke Welsh corgi
prediction 4 is n02127052 lynx, catamount
prediction 5 is n02971356 carton

開始吧!

感謝NCSDK 完整的API framework,只需要幾行Python就可以完成影像分類器。以下是image-classifier.py 中一些需要調整的使用者參數::

  1. GRAPH_PATH:要進行推論的graph檔路徑
    • 預設值為 ~/workspace/ncappzoo/caffe/GoogLeNet/graph
  2. IMAGE_PATH:想要分類的影像路徑
    • 預設值為 ~/workspace/ncappzoo/data/images/cat.jpg
  3. IMAGE_DIM:所採用神經網路之影像尺寸規格
    • 例如 GoogLeNet 採用 224×224像素,AlexNet則是227×227像素
  4. IMAGE_STDDEV:您選用之神經網路所定義的標準差(scaling value)
    • 例如:GoogLeNet不採用任何比例因子,但InceptionV3的比例因子為128 (stddev = 1/128)
  5. IMAGE_MEAN:均值減法(Mean subtraction)是深度學習領域中常用的資料整理技巧。
    • 對ILSVRC資料集來說,B、G、R的平均值分別為102、117與123

請先由mvnc函式庫匯入mvncapi模組,才能順利使用NCSDK API framework。

import mvnc.mvncapi as mvnc

 

Step 1:開啟enumerated裝置

如同其他USB裝置,當您將NCS接上應用程式處理器 (執行Ubuntu的桌上型/筆記型電腦) 的USB埠,前者會被後者枚舉為一個USB裝置。我們可以呼叫API來檢視各個NCS裝置。

# Look for enumerated Intel Movidius NCS device(s); quit program if none found.
devices = mvnc.EnumerateDevices()
if len( devices ) == 0:
print( 'No devices found' )
quit()

您知道在同一個應用程式中,可以連接多個NCS神經運算棒來提高推論效能嗎?以下語法是運用API 呼叫單一NCS並開啟 (意即準備好操作).

# Get a handle to the first enumerated device and open it
device = mvnc.Device( devices[0] )
device.OpenDevice()

 

Step 2:將graph檔載入NCS

為了簡易起見,我們採用已訓練好的AlexNet model中的某個已編譯的graph檔,這當您在 ncappzoo 資料夾中執行 make 指令實就已經編譯好了。後續會有文章教您如何編譯一個已經訓練過的網路,但現在先來看看如何把graph載入NCS中。

# Read the graph file into a buffer
with open( GRAPH_PATH, mode='rb' ) as f:
blob = f.read()

# Load the graph buffer into the NCS
graph = device.AllocateGraph( blob )

Step 3:載入單一影像至Intel Movidius NCS並進行推論

Intel Movidius NCS是以Intel Movidius視覺處理元件(VPU)為基礎。這個元件對數百萬種監控攝影機、可用手勢控制的無人機、工業級機器視覺設備提供了視覺智能。如同VPU,NCS在系統中扮演的角色好比是個視覺上的共同處理器。以本範例來說,我們採用Ubuntu系統來讀取資料中的影像並 and offload it to the NCS for inference。NCS負責所有的神經網路運算,,這樣就可以節省CPU與記憶體來執行其它應用層的任務。

我們得先對影像進行處理(預處理)才能將影像載入NCS。

  1. 調整或裁切影像,好符合後續預訓練的網路規格。
    • GoogLeNet格式為224×224像素,AlexNet則是227×227像素
  2. 從整體資料集中,減去各個頻道 (Blue, Green and Red) 的均值。
    • 這在深度學習領域中是常見的 center the data 的技巧。
  3. 將影像轉為半精度浮點數 (fp16) 陣列,接著使用LoadTensor函式將影像載入NCS。
    • 搭配skimage函式庫只要一行程式碼就搞定
# Read & resize image [Image size is defined during training]
img = print_img = skimage.io.imread( IMAGES_PATH )
img = skimage.transform.resize( img, IMAGE_DIM, preserve_range=True )

# Convert RGB to BGR [skimage reads image in RGB, but Caffe uses BGR]
img = img[:, :, ::-1]

# Mean subtraction & scaling [A common technique used to center the data]
img = img.astype( numpy.float32 )
img = ( img - IMAGE_MEAN ) * IMAGE_STDDEV

# Load the image as a half-precision floating point array
graph.LoadTensor( img.astype( numpy.float16 ), 'user object' )

 

Step 4:讀取並顯示NCS的推論結果

根據您想要如何將推論結果整合入應用中,您可以選擇blocking or non-blocking 函式呼叫兩者之一來載入上述步驟中的tensor並讀取推論結果。現在我們使用預設的 blocking 呼叫 (無需使用特定的API).

# Get the results from NCS
output, userobj = graph.GetResult()

# Print the results
print('\n------- predictions --------')

labels = numpy.loadtxt( LABELS_FILE_PATH, str, delimiter = '\t' )

order = output.argsort()[::-1][:6]
for i in range( 0, 5 ):
print ('prediction ' + str(i) + ' is ' + labels[order[i]])

# Display the image on which inference was performed
skimage.io.imshow( IMAGES_PATH )
skimage.io.show( )

 

Step 5:卸載graph與關閉裝置

為了避免記憶體洩漏與/或區段錯誤(segmentation fault),請記得關閉任何開啟中的檔案、資源以及 deallocate 使用中的記憶體。

graph.DeallocateGraph()
device.CloseDevice()

恭喜!您的DNN 影像分類器完成了。

 

還可以試試

延伸閱讀

相關文章

 

使用 Intel® Movidius™ Neural Compute Stick搭配Raspberry Pi 3執行MobileNets

(Original post from Intel Movidius NCS blog: “MobileNets on Intel® Movidius™ Neural Compute Stick and Raspberry Pi 3″:https://movidius.github.io/blog/ncs-rpi3-mobilenets/  

作者/攝影  曾吉弘
時間  2小時
成本需要上網下載的費用
難度 * * * * *
材料表

引言

深度學習之於邊緣運算讓世界各地的創新開發者得以建立各種架構與裝置來解決問題,並提出像是內建了Intel Movidius VPU 的 Google Clips Camera 這樣的創新方案。邊緣裝置應該便於攜帶、低功耗但同時又能為深度學習神經網路提供一定彈性的架構。本文將說明如何使用使用 Intel® Movidius™ Neural Compute Stick (神經運算棒) 搭配Raspberry Pi 3 做為深度學習邊緣運算的解決方案。

應用多個現成的分類網路,有許多具備一定擴充性的網路都提供了一定的客製化程度,針對使用者不同的功耗、運算與精確度需求來提供合適的方案。Google MobileNets就是這類網路其中之一,提供兩個可修改的變數讓您自訂網路來解決問題,並可在這類型低功耗裝置上實現高運算效能與高精確度。

 

* 資料來源:https://research.googleblog.com/2017/06/mobilenets-open-source-models-for.html

第一個變數為輸入影像的大小。如上圖,複雜度與精確度會隨著輸入大小而改變。Google 已針對不同影像尺寸提供了預先訓練好的ImageNet分類檢查點。

第二個變數則稱為depth multiplier。雖然網路架構維持不變,調整這個depth multiplier 會影響每一層的頻道(channel) 數量,進而影響網路複雜度並精確度與 frame rate。一般來說,網路的 frame rate 愈高,精確度就愈低。

接下來會介紹如何安裝並執行NCSDK、下載NCAppZoo,以及在 Intel Movidius 神經運算棒上執行MobileNet。最後要使用NCAppZoo 來示範benchmarkncs app 的用途,它可收集一或多個接在電腦 (例如 Pi ) 上的Intel Movidius 神經運算棒之執行效能。

 

所需硬體

Raspberry Pi 3、電源與記憶卡 (外殼建議有,但非必須)
  1. Raspberry Pi 3 外殼
  2. Raspberry PI 3 Model B
  3. micro SD記憶卡 (建議16g以上)
  4. 支援 HDMI 接頭螢幕 (或其他規格的轉接線)
  5. 鍵盤滑鼠
  6. Intel Movidius Neural Compute Stick

 

按部就班

Step 1:安裝最新的Raspberry Pi 3 Raspbian OS

樹莓派基金會取得最新的作業系統 Stretch img 檔之後,燒錄開機用的 sd卡。確認Raspberry Pi 開機並連上網路之後,使用以下指令更新系統:

注意:需使用 Raspbian Stretch,上一版 Jessie 確認不支援。

sudo apt-get update

Step 2:將 Intel Movidius神經運算棒插上Raspberry Pi 3 的 USB接頭

Step 3:安裝Intel Movidius Neural Compute SDK (NCSDK):

請用以下指令來下載並安裝NCSDK

git clone https://github.com/movidius/ncsdk
cd ncsdk
make install
cd ..

Step 4:取得NCAppZoo github

git clone https://github.com/movidius/ncappzoo
cd ncappzoo

Step 5:執行benchmarkncs.py來收集MobileNets執行效能

cd apps/benchmarkncs
./mobilenets_benchmark.sh | grep FPS

結果

在這些選項中,您一定可以根據自身的精確度與效能需求找到最適合的網路。下圖 (來源:Google’s blog) 可看出使用ImageNet分類時,精確度與效能的消長關係。圖中也可看到 Intel Movidius神經運算棒的效能(單位FPS,數據未經Intel原廠確認)。

* Network Accuracy Data from Google’s Blog https://research.googleblog.com/2017/06/mobilenets-open-source-models-for.html

如上圖,Raspberry Pi 3 搭配 Intel Movidius神經運算棒(橘色線)與單單使用Raspberry Pi 3 相比,前者執行 MobileNets 的FPS速度為後者的9倍 (參數皆為DepthMultiplier=1.0 / 輸入影像大小 = 224×224 / Top5 accuracy of 89.5%)。

Raspberry Pi 是一個相當不錯的開發平台。雖然單單使用Raspberry Pi 3 在推論上已能達到相當不錯的frame rate,NCS 卻硬是把效能提升一個量級,並讓這個平台在執行CNN-based的神經網路時的效能更好。如上表,Intel Movidius神經運算棒搭配Raspberry Pi 3 來使用 MobileNets進行推論運算的效能成長了 718% 到 1254%。