2020年2月28日 星期五

[AI] 「檢」紅奌:使用VIA Pixetto視覺感測器

「檢」紅奌:使用VIA Pixetto視覺感測器


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/

Mar. 5, 2020
88x31.png[1]

難易度

★☆☆☆

主題


你知道為什麼電影院的椅子要設計成紅色的嗎?人眼既然看不見這些隱形椅,那就讓我們一起開天眼見紅吧!

    任務


    利用8787的辨色(color detection)功能自動識別圖卡中的紅點數,並能自動計分。


    材料

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

    功能設計




      教學活動設計

      1. 撿紅點:總分21分,彩球2分。創造你的圖卡。

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

        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. 六種授權條款