2020年2月17日 星期一

[AI] VIA Pixetto視覺感測器大開箱(unboxing):AI開發工具(Development Kits)篇

VIA Pixetto視覺感測器大開箱(unboxing):AI開發工具(Development Kits)


FB2http://gg.gg/TedLeeMicrobitFB/
URL2http://gg.gg/TedLeeMicrobit/

Line:ted2016.kpvs
Email:Lct4246@gmail.com
FB1http://gg.gg/TedLeeFB/
Bloghttp://gg.gg/TedLeeBlog/
URL1http://gg.gg/TedLeeURL/

Feb. 20, 2020
88x31.png[1]

難易度

★☆☆☆

材料

項目品名單位數量
1VTS-8787視覺感測器1
2micro USB傳輸線1

豐富的內建(built-in)AI影像處理(Image Processing)功能與支援Google TensorFlow Lite深度學習框架(Deep Learning Framework)模型庫

8787可以處理影像(images)語音(speech)數位訊號(digital signals)來源,再利用機器學習(Machine Learning,ML)類神經網路(Neural Networks,NN)技術來做AI應用。
在本小節中,我們將一一說明7款8787對於影像處理的功能(Functions)
  1. 顏色偵測(Color Detection)
  2. 組合色偵測(Color Labels Detection)
  3. 形狀偵測(Shape Detection)
  4. 球體偵測(Circle Detection)
  5. 模板匹配(Template Matching)
  6. 特徵點偵測(Keypoint Detection)
  7. 人臉偵測(Face Detection)
以及內建的3款事先訓練好的(trained)深度學習框架TensorFlow Lite模型庫(Models)
  1. 手寫數字辨識(Handwritten Digits Recognition)
  2. 交通標誌辨識(Traffic Sign Recognition)
  3. 神經網路辨識(Neural Network Detection)
此外,讀者也可以餵給機器學習加速器https://mls.pixetto.ai/)(文後皆以雲加速器簡稱之)外部Tensorflow深度學習框架https://reurl.cc/A1Elmj)所產出的.pb(Protocol Buffers)模型檔https://reurl.cc/Na5oeQ):神經網路辨識(Neural Network Detection)

至於進階的自訓AI模型的方式則會在下節詳細說明。

7款影像辨識功能

在Pixetto Studio中提供了內含7種基礎影像辨識功能的展示工具Pixetto Utility,如圖1所示。

圖1:Pixetto Utility工具。

  1. 顏色偵測:可識別紅、黃、綠、藍、紫、黑色的單色物件。請按這裡https://reurl.cc/qDMz6y)觀賞展示影片。台北市仁愛國中楊昌珣老師的公子楊喻丞便使用此功能在防疫期間設計了這段鬥牛https://reurl.cc/Qp8WKO)小品。詳細的應用教學文件可參考拙著《辨色開燈:使用VIA Pixetto視覺感測器》(https://reurl.cc/V6622N)。
  2. 組合色偵測:可偵測有兩種以上紅、黃、綠、藍、紫、黑之複合色物件。請按這裡https://youtu.be/D6RjresfNZY)觀賞展示影片。詳細的應用教學文件可參考拙著《芝麻開門:使用VIA Pixetto視覺感測器》(https://reurl.cc/Aqq9zj)。
  3. 形狀偵測:可偵測圓形、矩形、三角形、多邊形物件。請按這裡https://reurl.cc/V63R3b)觀賞展示影片。
  4. 球體偵測:可偵測紅、黃、綠、藍、紫、黑顏色的圓球。請按這裡https://youtu.be/kVjhvl9hr-8)觀賞展示影片。
  5. 模板匹配:在畫面上框出範圍並套用後即可偵測此新的模板。請按這裡https://reurl.cc/W4p4ae)觀賞展示影片。
  6. 特徵點偵測:擷取特徵點來辨識物件。請按這裡https://reurl.cc/zymgm0)觀賞展示影片。
  7. 人臉偵測:可偵測出人臉的影像。

雲加速器上的3款內建模型

圖2的雲加速器https://mls.pixetto.ai/)提供了

圖2:雲加速器。
  1. 手寫數字辨識8787先接上電腦後再從Pixetto的雲加速器下載模型到8787上即可進行手寫數字辨識,如圖3左方按鈕所示。請按這裡https://reurl.cc/b6Zool)觀賞展示影片。

    圖3:雲加速器上的模型庫。

  2. 手寫字母辨識8787先接上電腦後再從Pixetto的雲加速器下載模型到8787上即可進行手寫字母辨識,如圖3中間的按鈕所示。
  3. 交通標誌辨識8787先接上電腦後再從Pixetto的機器學習雲加速器下載模型到8787上即可進行交通標誌辨識,如圖3右方的按鈕所示。

匯入(import)外部模型

神經網路辨識選項可以將我們事先訓練好的TensorFlow模型https://reurl.cc/Qp1ol2):HandwritingDigits.pb(圖4為使用Netronhttps://reurl.cc/Na585Q).pb檔的視覺化檢視工具)上傳到8787上辨識使用。請按這裡https://reurl.cc/RdKo7D)觀賞展示影片。


圖4:事先訓練好的模型檔:HandwritingDigits.pb


最後,Pixetto Junior與Pixetoo Utility在AI功能上的兩相對應控制積木程式請參照考《AI應用基礎篇:使用VIA Pixetto視覺感測器》一文所述。

我乃小智是也,自己神奇寶貝自己訓

經過上小節的介紹,大家一定和神奇寶貝的知名訓練師小智一樣,躍躍欲試地想要自訓自己的有趣應用了嗎?沒問題,跟著小智的腳步,讓我們一同邁向偉大的All Blue吧!
根據《Pixetto 教學手冊 中文版》(https://reurl.cc/vnyjgN)文內「訓練神經網路模型:使用三個交通號誌影片來訓練模型」的指引,我們使用雲加速器來解說自己訓練(training)AI模型的步驟。
  1. 先準備好要訓練8787的AI大腦的兩段Ball.mp4https://youtu.be/uID6GNAjPzk)及Hand.mp4https://youtu.be/rFN4DLRju0k)影片。
  2. 將這兩段影片上傳到雲加速器訓練(積木程式控制只要識別Ball及Hand兩類,如圖5所示)。

    圖5:TensorFlow的樣板程式。
  3. 將產生的.pd模型檔載到8787硬體上。
  4. 實測訓練好模型的辨識情形。如 https://youtu.be/izxTBAADaYY 所示。

應用實例:物體追蹤

如圖6所示,將8787連接開發板並加上會轉動的雲台後就可以追逐(使用內建的顏色偵測功能)外在物件的「身影」。請觀賞影片https://reurl.cc/4gkMOR)的詳實展示。本示例的
完整程式碼可由此https://reurl.cc/W4eogk)下載到Pixetto Junior上觀看或編輯。

圖6:8787架上伺服馬達控制的雲台而追逐紅球的影像追蹤實例。

    教學活動設計

    1. 1000.mpghttps://youtu.be/M5SXx5jzDX4)與100.mpghttps://youtu.be/GcXX6-ojdq0)訓練出8787可以辨識的TensorFlow模型,並實際測試訓練的成果。

      参考資料
      1. 六種授權條款

      2020年2月11日 星期二

      [Arduino] Arduino Nano操作手冊

      Arduino Nano操作手冊


      FB2http://gg.gg/TedLeeMicrobitFB/
      URL2http://gg.gg/TedLeeMicrobit/

      Line:ted2016.kpvs
      Email:Lct4246@gmail.com
      FB1http://gg.gg/TedLeeFB/
      Bloghttp://gg.gg/TedLeeBlog/
      URL1http://gg.gg/TedLeeURL/

      Feb. 11, 2020
      88x31.png[1]

      將手邊的Arduino Nano開發板翻到後頭,我們可以很清楚的看到它的USB控制晶片編號是FT232RL。要使它能正常工作,需要進行如下的三個步驟:

      1. 安裝FTDI驅動程式:從官方載點https://www.ftdichip.com/Drivers/VCP.htm下載CDM v2.12.28 WHQL Certified.zip。如紅框所示
      2. 手動更新驅動程式:在裝置管理員裡手動更新ftdiport.inf。如圖紅框所示
      3. Arduino IDE燒錄:選Old Bootloader。如圖紅框所示

      完成以上三個步驟後,我們就可以馬上叫出Arduino IDE提供的點亮光明燈範例Blink,測試一下軟硬體開發平台是否建置成功。然後,就可以準備開始後續的專案開發了。

        参考資料
        1. 六種授權條款

        2020年2月10日 星期一

        [AI] VIA Pixetto視覺感測器大開箱(unboxing):軟硬體開發工具(Development Kits)篇

        VIA Pixetto視覺感測器大開箱(unboxing):軟硬體開發工具(Development Kits)


        FB2http://gg.gg/TedLeeMicrobitFB/
        URL2http://gg.gg/TedLeeMicrobit/

        Line:ted2016.kpvs
        Email:Lct4246@gmail.com
        FB1http://gg.gg/TedLeeFB/
        Bloghttp://gg.gg/TedLeeBlog/
        URL1http://gg.gg/TedLeeURL/

        Feb. 10, 2020
        88x31.png[1]

        難易度

        ☆☆☆☆

        材料

        項目品名單位數量
        1VTS-8787視覺感測器1
        2micro USB傳輸線1
        3Arduino Nano(FT232晶片,含mini USB傳輸線)1
        4mini USB傳輸線1
        5Grove – 4x公端杜邦線+母座 to Grove 4pin連接線1
        6麵包板1



      • 測試用紅色外殼原子筆(或其他便於顏色識別物件)一只。 
      • 註:
        1. 如果讀者要將項目3的開發板換成Uno或其他Arduino版本,請自行將項目4的傳輸線做調當的調整。
        2. 技術咨詢(手機加Line:https://reurl.cc/Vadax6)。

        硬體介紹

        VIA Tech(威盛電子)https://www.viatech.com/tw/)新推出的 VTS-8787智慧感測器(Smart Sensor)(文後皆用8787稱之)是一款內建AI類神經網路(Neural Networks)的攝影機模組(module)。如圖1及圖2所示,它利用板載的攝影機鏡頭(圖1標示1處),將擷獲的影像經過處理後透過micro USB轉USB接頭(圖1標示3處)和電腦相接。或者我們也可以使用UART(Universal Asynchronous Receiver/Transmitter)的非同步傳輸(圖1標示2處)和像Arduino各系列相容板的各種開發板(development board)做對接處理。
        因官方並未公開8787的硬體規格,以下筆者僅就板上可視、可查的七大要件稍加說明。其中,下文編號數字是和圖1和圖2各黃底紅字的數字相互對應。

        圖1:VIA  VTS-8787智慧感測器正面。

        圖2:VIA  VTS-8787智慧感測器背面。

        1. 攝影鏡頭:圖1為鏡頭未掀蓋照。
        2. 4腳JST(Japan Solderless Terminal)https://reurl.cc/ZnDO6g)公座接頭:或稱Grove。接線和接腳的連接方式為:

          黃:Tx
          白:Rx
          紅:+
          黑:-
        3. micro USB接頭:亦可使用Andoid手機或平板的4或5線的充電/傳輸線。
        4. SpiFlash:串列存取(Serial Peripheral Interface,SPI)的快閃記憶體。(筆者從此IC的型號FP1928 SF1GQ4UBY16 HFW240查不到相關資料。故以下說明為筆者個人臆測,僅供讀者參考(若有謬誤,尚請包涵與指正):

          Gigadevice(北京兆易創新科技公司)https://www.gigadevice.com/)所生廠的快閃記憶體IC。
        5. 聲音感測器(sound sensor):這是一般常見的麥克風(microphone,mic),而8787搭載這個元件就很容易推測出它能利用內部的神經網路來做語音處理(speech processing)
        6. WiFi模組Hisilicon(海思)http://www.hisilicon.com/en/Products)的Hi 1131 IC,2.4G單頻、單通道。
        7. IP攝影機晶片https://reurl.cc/lLGneYHi 3518E。720p IP-Cam SoC
        8. SD卡插槽:。
        9. CPU:8787應該會有一個強而有力的心臟來處理大量影像的數值運算。因此,這部份就請看官猜猜它座落於8787的何處呢?

          完整的軟體開發工具(development kits)Pixetto

          8787提供的開發工具叫Pixetto,它ScratchBlockly風格的積木式與Arduino的C/C++Python語法式的四種程式開發語言供使用者挑選。

          離線(offline)/單機(standalone)版 讀者可從線上教學手冊https://reurl.cc/drEZyM)中軟體設置一節下載單機離線Windows版的Pixetto Juniorhttps://reurl.cc/EKkZla,安裝後就可以用Blockly方式來開發8787的機電整合電控程式,如圖3所示。
          本工具採Blockly積木和Arduino語法雙併設計,當我們從最左邊的積木抽屜拉一塊積木時,最右邊的小視窗會自動產生(Auto Generate)對應的指令語法。此外,我們也可以切換到手動編輯模式(Manual Edit)自行增刪指令以完成我們的Arduino程式碼。

          圖3:8787開發工具Pixetto Junior的介面。

          另一方面,我們可以把8787視為Arduino的擴充板(extension board)。所以,只要掛上Smart Sensor函式庫(從線上教學手冊https://reurl.cc/drEZyM)中軟體設置一節第三項的Arduino庫文件連結下載而後匯入(import)到Arduino IDE內),Arduino IDEhttps://reurl.cc/VaK59Q)就可立即使用。不過,請先照拙著:Arduino Nano操作手冊https://reurl.cc/vnV36l)掛上驅動程式(driver)才能讓電腦能認得到Nano。
          線上(online)版 Pixetto還提供了一套架在台灣主機上的線上版https://mls.pixetto.ai/)機器學習加速平台可以做連線編輯程式,如圖4所示。

          圖4:Pixetto線上版。

          1. Scratch風格的積木式開發工具:由點入。它的操作方法類似於Scratch for Arduino(S4A)。也就是結合Scratch與Arduino開發板的軟硬整合開發介面。如圖5所示。


            圖5:軟硬體整合的Scratch風格開發工具。
          2. Jupyter Notebook風格的Pyhton語法式開發工具:由點入後,我們可以用直譯(interpreter)編譯(compiler)兩種方式來編寫8787的控制程式。如圖6所示。


          圖6:Jupiter Notebook風格的Pyhton開發工具。

          讓我們一起Blink、Blink吧

          我們在離線Blockly版的Pixetto Junior上以Arduino界最具盛名的Blink(讓板載在D13腳位上的SMD LED不停閃爍)來測式與展示Pixetto在Arduino Nano開發板上的控制。至於8787強大的AI功能則詳見下篇所述:VIA VTS-8787智慧感測器(Smart Sensor)大開箱(unboxing):AI開發工具(Development Kits)篇https://reurl.cc/ZnD4kg)。
          1. 連接Nano:按下左上角的後讓Junior透過UART和Nano相接,如圖7所示



            圖7:連接Junior和Nano。
          2. 拉Blink積木:拉出控制D13 LED閃爍的程式積木,以便讓Junior在右側的小視窗內自動產生對應的Arduino程式碼,如圖8所示。


            圖8:撰寫Blink積木程式。
          3. 上傳Arduino程式:由於V0.2.3版的Junior還認不得Nano,我們要回到Arduino IDE上將程式碼上傳至Nano,如圖9所示。其中,讀者需要先照著Arduino Nano操作手冊https://reurl.cc/vnV36l)說明在Windows上預先掛載Nano驅動程式。然後在Arduino IDE上設定開發板型號與COM埠。

          圖9:在Arduino IDE上燒錄Blink。

            教學活動設計

            1. 在Junior上改用Arduino Uno讓Blink重現。

              参考資料
              1. 六種授權條款

              2020年1月18日 星期六

              [AI] 小小變色龍:使用VIA Pixetto視覺感測器之辨色(color detection)功能

              小小變色龍:

              使用VIA Pixetto視覺感測器之辨色(color detection)功能[1]

              FB2http://gg.gg/TedLeeMicrobitFB/
              URL2http://gg.gg/TedLeeMicrobit/

              Line:ted2016.kpvs
              Email:Lct4246@gmail.com
              FB1http://gg.gg/TedLeeFB/
              Bloghttp://gg.gg/TedLeeBlog/
              URL1http://gg.gg/TedLeeURL/

              Jan. 18, 2020
              88x31.png[2]

              難易度

              ★★☆☆☆

              主題


              模仿生物依據週遭環境來改變體色保護色機制。

                任務

                變色龍(Chameleon)是位擅於變裝的高手,一起來讓牠十八變吧~。
                利用8787的辨色功能讓小變色龍轉眼珠並變色。

                材料

                編號 品名 單位 數量
                1 VTS-8787視覺感測器 1
                2 micro USB傳輸線 1
                • 測試用紅、藍外殼原子筆(或其他便於顏色識別物件)各一。 
                • 技術咨詢(手機加Line:https://reurl.cc/Vadax6)。

                以Pixetto Scratch做為設計的思考面向,我們以要設計舞台(stage)背景(backdrop)角色(sprites)的造形,並以積木程式的功能控制劇本(script)演出(perform)。各如以下兩節分述之。成品展示影片連結為 https://reurl.cc/VXNRWA

                造形設計

                1. 設計一隻小變色龍https://reurl.cc/alW5nl),以及牠週遭的景緻。
                2. 將準備好舞台與角色的素材(assests)檔匯入Pixetto Scratch中。
                參考素材如下:
                1. 舞台的背景:小樹枝
                2. 角色:變色龍和眼珠子

                功能設計

                1. 下載並安裝Pixetto Studiohttps://reurl.cc/312Nej)。
                2. 使用Pixetto Utility將8787的組態(Configuration)設定為Color Detection,辨色功能
                3.  開啟Pixetto Link,pixlink。(這個步驟很重要!我們以下的Pixetto Scratch程式都要靠這隻中界程式(middle ware)來存取8787的。它在Pixetto Scratch程式的執行過程都必需「居中」協調。切記要一直開著讓它隨時在背景中待命。
                4. 在Pixetto線上版的Pixetto Scratch(https://mls.pixetto.ai/scratch/) 中,先加妥8787的擴充積木(extension blocks)
                5. 在Pixetto Scratch網頁上,接下連結按鈕
                  來設定8787和電腦透過USB傳輸線的連接 
                6. 使用Pixetto擴充積木的第一塊來援用8787的辨色功能


                現在,前置作業已就緒,我們可以開始設計要小小變色龍要如何變色了。讀者可参考以下的範例程式碼做修攻:
                1. 變色龍變色控制:讀者可參考顏色color亮度brightness特效的Wiki說明文件(https://reurl.cc/RdZdVn)來調整它們的數值,並觀察它們呈現出來的效果如何。參考程式片斷如下:。 
                2. 眼睛轉動控制:使用辨位積木可以取得辨識物所在的八個方位資訊。參考程式片斷如下:

                全部完整的參考範例程式可在此(https://reurl.cc/Ldzk37)下載。
                請特別注意:Pixetto Utility選定好顏色偵測的功能後要先関閉,以免佔住序列埠。接著開啟Pixetto Link中介程式。最後,在Pixetto Scratch(雲平台上的Blocks)上連接8787後才能順利用Pixetto Scratch存取到8787的辨識結果。

                  教學活動設計

                  1. 變色龍為什麼會變色https://reurl.cc/mdmqkM)?牠能變幾色?
                  2. 修改本單元的設置來設計一個介紹色彩學(Chromatics)的對比色、互補色…等概念的小工具。
                  3. 變色小夜燈 動手做一個小夜燈,並使用RGB LED當做燈泡。修改上述的範例程式使得LED會根據色卡自動調光。

                  参考資料
                  1. 本文系改編自VIA官網 https://reurl.cc/m992q1 。
                  2. 六種授權條款

                  2019年12月23日 星期一

                  [Arduino] 智慧植栽(Smart Plants)

                  智慧植栽(Smart Plants)


                  FB2http://gg.gg/TedLeeMicrobitFB/
                  URL2http://gg.gg/TedLeeMicrobit/

                  Line:ted2016.kpvs
                  Email:Lct4246@gmail.com
                  FB1http://gg.gg/TedLeeFB/
                  Bloghttp://gg.gg/TedLeeBlog/
                  URL1http://gg.gg/TedLeeURL/

                  Dec. 23, 2019
                  88x31.png[1]

                  植栽的照護可概括地分成兩個層面來考慮:監督(monitoring)控制(control)
                  我們搜集了植栽養植的相關數據(如:土壤溼度、環境溫溼度…)後來判斷是否該啟動相對應的措施,例如:讓馬達自動打水澆灌植物、打開光照…。

                  参考資料
                  1. 六種授權條款