2020年10月5日 星期一

AI邊緣運算實作: TensorFlow Lite for MCU #1

[課程簡介]


隨著物聯網與人工智慧發展,工作負載開始由雲端移轉至終端,AI也隨之進入到嵌入式系統及物聯網終端裝置中。在終端或所謂邊緣裝置這類的超低功耗微處理器上所實現的深度學習,被稱呼為微型深度學習。然而在硬體資源受限下,要如何確保AI 效能,同時兼顧低功耗、成本與縮短開發時間,都是研發人員所必須面對的挑戰。

TensorFlow Lite for MCU正是專為邊緣裝置設計的TensorFlow模型預測框架,是TensorFlow的精簡版本,讓開發者可以在物聯網與嵌入式裝置中部署微型機器學習模型。 本課程將教授AI模型如何佈署於微控制器,包含模型訓練、模型最佳化以及TensorFlow Lite框架的程式開發等。此外,在實作上以Sparkfun edge board (ARM cortex M4)為例,說明如何以TensorFlow Lite 進行微控制器上面的人工智慧開發專案,包含人臉偵測、關鍵字的字詞偵測、姿態識別、異常偵測等


[心得]


TensorFlow Lite for MCU 在實作上會涉及Deep Learning 觀念及MCU開發技術,然而這是兩個截然不同的技術領域的人, 要能有效整合必須要能理解這兩邊的技術。在AI領域, 對於輸入的資料多半是.csv檔載入, 然而在邊緣運算上, 輸入的資料是來自硬體的感測器,因此要能正確且即時的對資料預處理並且轉換成模型所須要的x輸入型狀(x input shape)才能代入模型。但資料在抓取上要如何切成一個個完整的x 來進行轉換, 就需要有一個方法,因為訊號如聲音訊號進來是連續波, 沒有切成一段完整的聲音, 就不能再往後處理。有時資料取得有雜訊可能造成模型誤判,所以通常也不能只是用一次模型的預測結果當作測試結果. 這也是要有一個處理的機制。 此外,MCU本身運算速度就不快, 記憶體空間也有限,所以AI模型也不能太大 (要進行優化), 網路的每一層要進行的運算也要盡可能的優化才能加快運算速度。


OK 先從簡單的開始, 要先去觀察感測器看到什麼. 也就是x, 不對的x, 再好的模型也無法得到好的結果.





References:

https://bit.ly/3j2fIIt

<待續....>.

2020年9月26日 星期六

教學方法分享

下載並安裝wacom driver 


https://drive.google.com/drive/folders/1fXPbY3cqNh8vPpvjJj2LdIFp2uv-_L6Z?usp=sharing


安裝Pointofix 可以寫字在螢幕上


預設是德文, 中文化方法==> 將 pointofix_translation.ini 複製到 C:\Program Files (x86)\Pointofix
即可. 







試著熟悉數位筆的使用感覺, 同時熟悉幾個常用的快速鍵,會讓你的講課流暢度不會因為數位筆的關係,而不斷停頓




更多 Pointofix 使用說明 https://briian.com/6545/



ScreenShot 分享 

若在螢幕上用Pointofix 所寫的內容很多很重要,那麼也可以按下F7 擷最畫面存成.PNG檔, 順便幫同學做個筆記. 之後再利用HFS或google drive 分享給同學.


在google drive 建立一個目錄來分享檔案, 分享的網址可以建立短網址 (https://reurl.cc/main/tw) 
, 此網址於課程的第一堂課就可以給同學, 後續若有新增其他檔案, 同學也都可以在同一個地方下載或者想回家練習仍可以再次下載. 





此分享目錄最好也能有結構的分類



|--code
|-- doucment
|-- scrrenshot
        |-- scrrenshot_20200908
|       |-- scrrenshot_20200915










使用PowerPoint的快速鍵


一定要記住 PowerPoint 在播放投影片的快速鍵. 可以增加講課的流暢度. 
可以試著按F8 ,,可以直接切換成畫筆模式, 且不斷F8 還可以更換筆的顏色


老師的用心是決定課程品質的關鍵! 我們也得換位思考, 若我們是坐在底下的學生. 我們

一定也會期待這門課能獲得什麼, 而不是坐在那裡浪費生命

2020年9月18日 星期五

好用的SSH Client : MobaXterm


 MobaXterm 為一個SSH Client, 可以用來連入我們Linux 的伺服器

    新增SSH Session: 

       Remote Host: 虛擬主機的外部IP

使用MobaXterm的三大好處
  • 你可以用SFTP的視窗操作, 就可以直接上傳或下載遠端Linux主機的檔案,

  • 你可以遠端開啓,編輯Linux主機的檔案, 如果你不熟vi或nano這類UNIX文字編輯器,這可以讓你使用你所習慣的windows編輯器, 如Notepad++等.



  • 由於MobaTerm 內含X Server,所以你可以在遠端執行具有一個GUI 視窗的程式 (X Client), 而視窗畫面會出現在我們本機的windows上. (有興趣可以去google 一下 X Window, X11 protocol) 


  

     Note: 預設MobaXterm 使用SSH, 會啓動X11 Forwarding. 可以讓GUI 視窗仿佛要顯示在local端,然而實際上是走SSH 通道將畫面Forwarding 到windows系統這邊來.


Virtual Box 建置Linux主機


STEP 0:  Prepare Your VirtualBox Environment

下載VirtualBox 軟體: https://www.virtualbox.org/wiki/Downloads

下載 Ubuntu Image (取得一個已經包含完整系統的虛擬應用裝置檔案ova檔)

*ova 為VirtualBox使用的開放虛擬機器格式OVF (Open Virtualization Format)


STEP 2. Importing an Existing Virtual Machine into VirtualBox
 

啓動 VirtualBox , 並在 [File->Import Appliance]


選擇xxxx.ova檔, 載入後, 之後此VM系統及運作中在檔案系統所產生的檔案, 預設是放在
C:\Users\<user>\VirtualBox VMs\LinuxVMImages\xxxx下, 此即為Machine Folder 的位置。 若要變更預設Machine Folder位置, 則在Import Appliance時要點選
Expert Mode, 則可以在Import Appliance時, 變更Machine Folder的預設位置.



匯入需要一些時間....wait ..wait ..




STEP 3. Start Virtual Machine

接著點選剛匯入的VM, [Start] 

啓動時也許會跳出錯誤訊息, 大多數是因為VM內的網卡硬體裝置可能和你的機器不同, 所以只要重新選擇成你機器的網卡, 就可以正常啓動!


  

以使用者帳號 ubuntu (password: ubuntu) 登入, 大功告成.





其他

1.) Virtualbox Guest Additions


為了方便Host OS( Winodws) 和 Guest OS (Ubuntu) 方便交換資訊, 如 copy & paste 或拖拉交換檔案, 可以安裝Guest Additions , 先卸載 VBox_GAs_6.1.14.ISO (以光碟機型式出現), 再重新掛載

先Eject 此光碟


, 再掛載



 點選桌面上的光碟 (VBOX_GAS_6.1.14)  [Run], 則會開始安裝
 


2.) Shared Folder

可以讓Host OS( Winodws)  分享資料匣給Guest OS (Ubuntu), 則Host可以和Guest共用此資料匣來交換檔案. Host 啓動Shared Folder 並勾選自動mount , 則Guest OS (Ubuntu) 會mount 此 資料匣在 /media路徑下, 或者開啓檔案管理員 (nautilus) 也看到此共用的資料匣。


3.) 在windows使用SSH Client登入Ubuntu


在Ubuntu 下 , 開啓 terminal 執行 ifconfig 可以看到Ubuntu IP,  接著在windows 啓動SSH Client (如MobaXterm) 連入。接著用 SSH 的SFTP 功能, 如同FTP一樣, 可以很方便的讓Host 和 Guest 交換檔案。  ==> 更多關於Mobaxterm的使用















2020年9月7日 星期一

win10安裝 Anaconda +Tensorflow2.0

Win10 安裝 Anaconda + Python 3.7+ Tensorflow2.x
==================== 

1. ) 先安裝Anaconda 3.x    



2.) 接著開啓 [Anaconda Prompt] 執行下列指令

#新增conda虛擬環境

conda create -n tf2.0 python=3.7

#啓用虛擬環境並安裝TF2.0 (穏定版本)

conda activate tf2.0

pip install tensorflow==2.0.0-beta1

pip uninstall numpy

pip install numpy==1.16.2


#安裝其他套件

conda install jupyter

pip install matplotlib



#進入python 互動環境並檢查python版本

python

import tensorflow as tf

tf.__version__






#移除conda虛擬環境

conda env remove --name tf2.0

=======其他=============

# 將tensorflow 2.0 更新到目前最新版本(非stable 版本, 如果有必要的話才更新)
pip install tf-nightly --upgrade

# 安裝 tensorflowGPU 版本

pip install tensorflow-gpu==2.0.0b1

2020年9月3日 星期四

使用Google Compute Engine 建置Linux環境

 

申請Google Compute Engine 90天試用


利用 gmail 帳戶, 在Google Compute Engine (GCE) 快速獲得免費的LINUX主機
申請時雖然會需要輸入信用卡號.但90天內使用是不用錢的 ~

1.) 建置虛擬主機

 
新增一個 VM 執行個體



主要是選擇作業系統, 


這裡我們選擇了Linux Ubuntu 18.04 的版本






基本上其他的設定都預設就可以了, 在最下方, 按下 [建立] 就這樣清鬆地建立一台LINUX 主機了. 接下來就是遠端登入使用這台主機了.

2.) 使用SSH 登入GCE的Linux Ubuntu 

使用SSH登入, 只允許使用RSA認證的方式登入。我們可以使用puttygen.exe 來產生成對的RSA public key & private key


3.) 在GCE/[中繼資料] [安全殼層金鑰] 新增一組RSA Public key

  這裡的金鑰及值, 都是從puttygen.exe  貼上來的





2020年9月2日 星期三

Python Open GL及RL 套件安裝


進行下列軟體安裝  ( 底下安裝指令在Ubuntu 18.04的測試過,皆可順利安裝)

若沒有Linux 環境怎麼辦? ==> 請參考使用Google Compute Engine 建置Linux環境

得先確認 python版本須為3.6以後 (事實上, Ubuntu 18.04 所安裝的Python己經是3.6以後的版本), 

執行  python3 -V  會顯示python的版本 ==> Python 3.6.9
 



開始安裝套件

[Install pip3]
sudo apt-get install python3-pip


[Install PyOpenGL]
sudo apt-get install -y python-opengl

[Install RL SDK]
sudo pip3 install pybullet
sudo pip3 install gym

 執行 Hello PyBullet World 範例


可用SFTP 將測試檔案test.py 上傳Ubuntu 主機或直接在主機上新增程式

新增一個純文字檔案, 將下列代碼複製貼上, 並存為test.py 


執行python3 test.py , 終端機上會出現底下畫面



會開啓Open GL所顯示的3D畫面視窗, 恭喜你環境建置成功啦


[References]

https://github.com/bulletphysics/bullet3/releases
https://gym.openai.com/docs/#installation