Quantcast
Channel: CAVEDU教育團隊技術部落格
Viewing all 678 articles
Browse latest View live

Google Coral TPU Edge開發板 –執行影像分類與物件辨識範例

$
0
0

延續上一篇[Google Coral TPU Edge開發板 – 硬體介紹與開機],現在要示範基本的影像分類與物件偵測範例。

原廠網站也提供了很多範例,都可以做做看

Edge TPU Python API – 影像分類範例

預設的 edgetpu_demo sh是透過 Edge TPU Python library (edgetpu Python module) 來對影像中的每一個 frame 進行推論,可以看到效能還不賴。本函式庫包含了各種API,幫助您快速進行影像分類或物件辨識等相關視覺推論。後續還有其他範例來說明如何使用本API。

首先,請在 Coral 開發板的 terminal 中,回到 home 目錄並下載鳥類分類模型、標籤檔與分類用的照片:

cd ~

wget https://dl.google.com/coral/canned_models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
https://dl.google.com/coral/canned_models/inat_bird_labels.txt \
https://coral.withgoogle.com/static/docs/images/parrot.jpg

現在切換到範例目錄來對鸚鵡的照片進行影像分類,先來看看這隻鸚鵡:

https://coral.withgoogle.com/static/docs/images/parrot.jpg
cd /usr/lib/python3/dist-packages/edgetpu/demo/

python3 classify_image.py \
--model ~/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
--label ~/inat_bird_labels.txt \
--image ~/parrot.jpg

應該會看到類似的結果:

物件辨識範例

由此取得本範例程式碼object_detection.py 會透過 DetectionEngine API 進行物件辨識,這會用到偵測模型、標籤檔與要被偵測的影像。如果不指定標籤檔的話,預設會偵測臉部 (當然需要提供 face detection model).

本範例會使用 MobileNet SSD,已預先訓練好可偵測1,000種不同類型的物件 (或單純人臉)。

先取得檔案:

範例的貓與人臉

https://coral.withgoogle.com/static/docs/images/cat.jpg
https://coral.withgoogle.com/static/docs/images/face.jpg

執行範例:

cd /usr/lib/python3/dist-packages/edgetpu/demo

python3 object_detection.py \
--model $EXAMPLE_DIR/mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite \
--label $EXAMPLE_DIR/coco_labels.txt \
--input $EXAMPLE_DIR/cat.jpg \
--output $EXAMPLE_DIR/object_detection_results.jpg

應可看到以下結果,並會在 –output 資料夾把 cat 框起來

https://coral.withgoogle.com/static/docs/images/examples/object_detection_results.jpg

換一張圖試試看 (face.jpg)

python3 object_detection.py \
--model $EXAMPLE_DIR/mobilenet_ssd_v2_face_quant_postprocess_edgetpu.tflite \
--input $EXAMPLE_DIR/face.jpg \
--output $EXAMPLE_DIR/face_detection_results.jpg


微控制器板/嵌入式開發板的AI影像辨識福音 –千元上下且含螢幕的鏡頭模組 HuskyLens

$
0
0

DFRobot公司在kickstarter群眾募資的HuskyLens 可以讓Arduino跟micro:bit做影像辨識及訓練辨識模型

手中有Arduino、micro:bit的使用者想要嘗試AI影像辨識與訓練自己的物體偵測模型,可以參考DFRobot公司在kickstarter募資的HuskyLens,它內建常見的影像演算法如物體辨識及追蹤、臉部辨識、循線、顏色辨識、標籤辨識。想訓練HuskyLens辨識新物件,只需要像相機一樣按下按鈕就可以儲存影像以及框選新物體範圍。其內含的2.0英吋螢幕,用於顯示即時影像及操作介面,讓使用者能選擇要使用的演算法、調整設定、或是確認辨識效果,過程中不需要使用電腦。

作者 蔡雨錡
參考網頁 https://www.kickstarter.com/projects/1371216747/huskylens-an-ai-camera-click-learn-and-play/description

之前聽過李飛飛教授 TED 上的演講 [1],講述如何教導電腦看懂圖像,他說小嬰兒呱呱墜地後,他們的眼睛就如同生物相機一樣,每 200 毫秒就拍一張照片,蒐集數以百萬計的照片來學習辨識事物的能力。而這篇要介紹的 DFRobot 公司的 HuskyLens 鏡頭模組,有別於一般的相機僅能攝影或錄影,它不需要搭配複雜的演算法便可以透過拍攝的影像來學習,它使用 AI 功能的晶片 Kendryte K210 [2],讓你可以輕鬆的按按鈕拍照來教它認識物體、臉部辨識、以及顏色辨識。而且 HuskyLens 本身有 2.0 英吋的螢幕,可以顯示即時影像確認是否辨識成功及操作介面提供使用者選擇要使用的演算法與調整設定,不需要使用電腦調整任何參數。

使用 HuskyLens 內建的多種演算法,你除了可以拍照片讓它認識並記錄不同的物體,讓 HuskyLens 從不同角度或不同遠近距離來拍攝同一物體的各種影像,收集越多的影像,它的辨識就會越準確。

HuskyLens 擁有的演算法如下:

  • 物體追蹤 Object Tracking
  • 臉部辨識 Face Recognition
  • 物體辨識 Object Recognition
  • 循線 Line Tracking
  • 顏色辨識 Color Recognition
  • 標籤辨識 Tag Recognition

除了擁有上述的多種演算法之外,HuskyLens 還可以同時運行這些演算法,例如你可以做一台智能小車,讓它除了能沿著黑線循線行進之外,還可以辨識行進過程中看到的標籤,並根據標籤類別決定轉向方向。

在硬體規格方面,鏡頭分成200萬像素的基礎版(29 CAD,約 687 NTD)跟500萬像素 (65 CAD,約 1594 NTD)的進階版這兩種。在這樣的像素下能以30 fps的速度來做偵測。更重要的是,HuskyLens 使用UART埠通訊,除了能應用在嵌入式開發板 Raspberry Pi、LattePanda 上之外,也可以用在微控制板 Arduino 跟 micro:bit 上,讓使用者可以不使用複雜程式的情況下,快速且有效的做出各式各樣的作品。其他詳細規格可以參考 HuskyLens 在kickstarter募資的介紹 [3]。

HuskyLens 的功能多到令人心動,可以做很多有趣的專題:小編學生時代一直很想做的火影忍者結印解鎖門禁(手勢辨識控制)、耳熟能詳的自走車(循線)、課堂或公司自動影像點名打卡(臉部辨識)、放在野外協助野生動物偵測及標定(物體辨識)、發票對獎(數字辨識)、結合上述的各種演算法建立強大的智能機器人助理、製作大型互動式裝置藝術等等,等待你去進一步探索。

當然除了讚嘆 HuskyLens 的厲害程度之外,也必須跟市面上已有的產品做一下比較。大師級的人可以直接買AI專用晶片Kendryte K210來使用,Github上也有詳細的datasheet [3]。Arduino 的使用者原先可能有些人有碰過 ESP32-CAM (約435 NTD)[4] 或是 Pixy2,又稱CMUcam5(Amazon 上賣 59.9 USD,約1866 NTD,2014年發行)[5],小編兩種都有用過。ESP32可以搭配 Arduino 透過它建立的 stream server來做基礎影像處理以及辨識,也有臉部辨識功能,但框選範圍品質普通。最新的 Pixy2 可以搭配Arduino/Raspberry Pi/BeagleBone Black/LEGO Mindstorms EV3,擷取影像的更新速率是60fps,能使用內建的資料庫偵測上百種物件、會自動追蹤偵測到的物件、做顏色追蹤跟循線、也可以訓練他辨識新的物體。官方有提供PixyMon讓使用者可以在電腦上查看影像處理的結果。另外有一個宣傳概念類似的產品,JeVois A33 Smart Machine Vision Camera (49.99 USD,約1557 NTD,2017年發行)[6],自帶降溫風扇,可以接SD卡讓你可以裝作業系統、JeVois軟體、下載TensorFlow等演算法以及儲存資料。這個產品預設的競爭對手是Raspberry Pi 3 Model B,主打麻雀雖小五臟俱全,CPU有1.35GHz,但Ram只有256MB DDR3-1600。鏡頭部分使用最高的1280×1024解析度下能有15fps的影像更新速率。可以接Arduino/Raspberry Pi,或是接電腦使用。產品定位比較接近用途多樣化。

綜上所述,HuskyLens 是一個性價比高且能讓你快速開發AI互動專案的鏡頭模組,推薦大家有機會可以買來玩玩看!

(上述商品價格按照文章撰寫當下匯率做換算)

圖片來源皆來自於 DFRobot 在 kickstarter 上的群眾募資頁面 [2]

 

參考資料:

[1] 李飛飛教授TED連結 [2] DFRobot 在 kickstarter 上的群眾募資

https://www.kickstarter.com/projects/1371216747/huskylens-an-ai-camera-click-learn-and-play/description

[3] Kendryte K210 on Github

https://github.com/kendryte/kendryte-doc-datasheet/blob/master/en/001.md

[4] ESP32-CAM  on Github

https://github.com/topics/esp32-cam

[5] Pixy/CMUcam 官網

http://www.cmucam.org

[6] JeVois 官網

http://jevois.org

 

[ 開箱文 ] 大人小孩都會愛上的 M5GO IoT Starter Kit,愛樂高跟物聯網必看

$
0
0

福利社腦闆買了一套新的可以跟樂高結合的物聯網教學套件M5GO IoT Starter Kit!,M5STACK團隊:https://m5stack.com

產品購買:https://m5stack.com/products/m5go-iot-starter-kit-stem-education

這次要開箱的是M5GO IoT Starter Kit 是福利社腦闆從日本帶回來的新玩具,為2016年創立的M5stack團隊所開發的物聯網套件,協助使用者縮短開發到最終產品之間的距離。 官網上一盒 M5GO IoT Starter Kit 賣65.59美金。在初步測試M5GO套件之後,真心覺得一定要買這套給小孩或學生搭配樂高玩,除了硬體上體積小好收納、可以跟樂高結合(私心喜歡樂高相關跟小體積的套件),又能讓他們學會物聯網、基礎感測器、使用者介面設計、以及練習從圖像化程式過渡到python程式並讓他們做比較,這個價格很物超所值!

不得不說,這五六年物聯網的市場有各式各樣的開發版跟套件,大部分因為難以使用或開發者少而消失在市場上,所以一開始拿到這一套的時候有點不期不待,但 M5GO IoT Starter Kit 顛覆了我的想法,讓人驚豔。

作者/攝影  蔡雨綺
難度 *
材料表
  •  M5GO IoT Starter Kit一套

 

套件開箱

先來看看套件外觀,高度約15公分左右,體積不大。

打開內含樂高零件(M5橫桿x2M9橫桿x21:1短插銷x12)、M5GO主機(內含電池)、六個模組(包含環境感測器溫度/濕度/壓力、動作感測器、RGB LEDIR感測器、角度感測器、感測器擴充模組)、灰色USB充電線、黑色TpyeC充電線、連接感測器模組線長短各兩條

彩色說明書寫得非常詳盡,接下來會按照說明書的指示完成開箱以及試著寫出第一個程式。

本次開箱為了方便用黑色type C線接電腦充電,但並不是透過電腦傳程式,而是使用m5stackserver透過wifi傳輸。

 

Let’s get started!

接上電源後,按紅色按鈕一下開機,之後想要關機則是按兩下。一開始看到笑臉心情很好,使用下方的三個按鈕觀看官方用心的新手教學,新手教學很詳盡如下圖。有各種感測器的使用方式、開關機教學、port ABC所在位置等等。

設定M5GO的網路

但按完使用教學就不能做任何事,研究了一下才發現要在剛開機的一秒內按下白色右鍵來設定M5GO的網路。接下來就按照以下步驟進行M5GO主機的網路設定:

Step 1. 進入選單畫面後,選擇 Switch to Internet mode,會出現M5GO主機的 Wi-Fi SSID。

Step 2. 請用你的手機從Wi-Fi設定頁面連線該Wi-Fi SSID,協助M5GO主機連接local wifi,讓主機等等可以從網路上下載你寫的程式。

Step 3. 成功與手機連線後,會跳出QRCode,請掃描QRCode或是在瀏覽器打192.168.4.1

進入wifi設定的網頁後,就可以連接任何你想要的local wifi,本範例中是連接名稱為Happywifi

Step 4. 看到下方圖片就代表M5GO主機成功連接到 local wifi 啦!

撰寫程式

Step 1. 連接上 local wifi 後,你的手機就自由了。主機也會緊接者顯示下列畫面,圖中的APIKEY是你等等在網路上寫程式後要上傳給這台M5GO主機的專屬編號。QRCode則是官方提供八分鐘左右的實用程式教學影片(中英文雙語字幕),有興趣的人可以在看完這篇開箱文後按照影片基礎實作。

Step 2. 在瀏覽器搜尋flow.m5stack.com,進入以下畫面。輸入主機上顯示的APIKEY,其他按照你的喜好設定。

Step 3. 完整畫面如下,左方為主機介面設計區,以及新增模組的地方;右方則是程式撰寫界面,可以選擇使用類似App Inventor的圖形化介面,或是使用Python

除了常見的迴圈(Loop)、數學(Math)、文字(Text)等等,也有一些有趣的,像是GraphicEmoji等作圖用的指令庫。

Step 4. 在寫程式之前,先來將模組接線到主機上,要注意每個模組後面都會特別寫他只能接哪個Port ,本範例中使用的環境感測器只能接Port A。(對環境感測器特別有感情,也是IoT最常見的感測器之一,故選之。)

Step 5. 硬體接線完成後,點選畫面右下角的Units下方的加號來新增該專案中的模組,勾選完所有的模組後,這些模組就會出現在Units區,且也有程式可以直接使用。由於環境感測器有溫度、濕度、壓力三種感測值,所以有三個相關指令可以使用。

Step 6. 範例程式想要寫一個可以簡單顯示溫度、濕度、壓力等資訊的使用者介面。所以首先先來做使用者介面(User Interface, UI)設計。從左上方欄位拖曳一個Title到螢幕區域,並將顯示文字(text)改為HelloWorld,並選擇自己喜歡的顏色。

Step 7. 再拉三個label分別對應溫度、濕度、壓力資訊。建議調整x, y 來對齊這些label。設計完成後介面如下圖。

 

Step 8. 接下來就是撰寫圖像化程式。簡單介紹一些功能:

  1. 可以在UI區找到 Title, Label, Screen 的相關指令。
  2. 相同屬性的元件可以透過內建下拉式選單選擇很方便。
  3. 沒有用到的指令會呈灰色網格狀。
  4. 可以輕鬆切換圖像化程式跟Python程式介面,進行基礎Python教學。

Step 9. Abracadabra! 我撰寫了一個程式,一開始會顯示3秒的螢幕背景黑底,以emoji指令用pixel顯示白底紅字的CAVE,希望大家看得出來。接下來再用螢幕背景黑底指令覆蓋CAVE emoji。接著使用 while loop 100毫秒更新一次偵測到的溫度、濕度、壓力資訊,這邊記得使用Text當中的文字連接指令(+),不然使用兩個label會覆蓋,layer(可調整)比較高的才會出現。也記得將環境數據轉換成文字(Convert to str指令)才能順利顯示!

Step 10. 點選右上方的三角形符號,就可以根據你一開始打的APIKEY上傳該程式到M5GO主機上。範例程式成果如下!你也可以下載或儲存程式,其副檔名為.m5f

Hint 1. 撰寫有錯誤的話,主機會提醒你哪裡有錯(error message)。如下圖,因為沒有將float轉成文字而有錯誤。

 

Hint 2. 如果你有很多台M5GO主機,可以前往 http://cloud.m5stack.com 進入以下畫面進行簡單的註冊及登入後,用官方平台管理這些主機。

 

對於教學、自學或是想要快速佈建物聯網做簡易測試的模組,M5GO IoT Starter Kit 是一個不錯的選擇,希望大家看完後,跟我一樣喜歡上M5GO IoT Starter Kit ,一起來研究這套物聯網套件,很期待試著將它跟樂高結合做更多有趣的專案!

108課綱來襲,科技素養教育我們該如何規劃?讓CAVEDU與您一同成長 2019/9/28【AI世代與科技教育講座】活動講者介紹

$
0
0

AI X 程式 X 科技教育
[科技新世代來臨 X CAVEDU陪您一同成長]

🌟活動時程:9/28(六)10:00-17:00(講座時間:13:00-17:00)
🌟活動地點:FABLAB TAIPEI 台北自造實驗室台灣台北市104臺北市中山區玉門街1號自造者協會
🌟活動頁面:https://www.accupass.com/event/1909041033402660613030

【AI世代與科技教育講座】

科技一直有型無形地影響著我們的生活,十年前iphone上市了,想想看這十年來我們的社交、溝通、學習與娛樂方式都有了不同改變,那麼以目前的資源與議題上,我們又該如何規劃給下一代的孩子們走向什麼樣子的科技領域的教育規劃?
由CAVEDU整合六大主題,並邀請了各界領域專家來分享,讓我們一同面對下一代的科技教育吧!

以下依照9/28當天講座分享順序來介紹:

[科技教育與我們的年輕人]

周懿謙,台北市立中崙高中資訊老師

周老師是我認識諸多資訊科技教學者中,對於將新科技應用於教學環境中抱持著積極樂觀態度的一位老師。108課綱講了很久終於上路,但不論如何紛紛擾擾,實際進行教學的是如周老師等第一線教學者,他們會直接接收到學生、家長與教學環境的回應。

非常開心邀請到老師分享她多年來對高中生的資訊科技教學心得。

[Scratch, Now and Next]

方毓賢,均一教育平台內容開發專案經理

毓賢兄任職於均一教育平台,該平台無須多言,好內容都在這。另一方面,他也默默投入Scratch 社群,例如我們曾一起參與過Scratch 3.0 與 Learning Creative Learning1的繁體中文翻譯工作(使用 transifex.com)。對於Create Project要翻譯成[建立專案],或是[創建項目],有些朋友可能覺得無傷大雅,但我們卻是再三斟酌才行。一些爬格子的小事,累積起來才能讓孩子們有好的教學內容。

來聽聽毓賢對於Scratch的心路歷程吧。

[用 ROS 平台來控制 7697 小車]

Mason Chen陳豐生,一位愛玩機器人的爸爸

自稱 「愛玩機器人的爸爸」,我想很多maker界的爸爸們都是這樣光明正大的偷渡很多玩具回家的吧(ㄎㄎ) 。LinkIt76972 有Wi-Fi, 藍牙又有圖形化介面讓各種聯網應用變得輕鬆又愉快。Mason進一步將LinkIt 7697與熱門的機器人作業系統(ROS, Robotics Operation System)3 結合,一起來看看會迸出哪些不一樣的火花。

[ROS on Windows – The foundation for your intelligent robots]

吳志忠,微軟 Senior IoT solution architect

志忠是阿吉的政大學長,歷年來都很支持我們舉辦的活動。平常的興趣應該是自己做機器人吧,連寶貝女兒的電動車車都不放過就知道先動手再說的實戰派。很榮幸邀請他以業界的角度來看ROS這套作業系統。

歡迎到志忠的[物聯強力教] facebook page 按讚喔!

物聯網AIOT / [打造智慧型手機AI視覺辨識app] 

曾吉弘 |阿吉老師,CAVEDU教育團隊創辦人&技術總監

很不客氣講了兩段:第一段是物聯網AIoT,從2015年之後,各類可上網的開發板愈來愈多,免費的雲服務也讓我們對於和這些板子互動有更多選擇。這些物(things) 蒐集各種資料連上網路(internet) 之後,正是 AI 介入的好時機。我會分享這幾年CAVEDU從國小到大學的物聯網教學分享

再來是[打造智慧型手機AI視覺辨識app],智慧型手機 ,使用這個網頁C就能夠直接收集資料,訓練網路,最後把模型檔放入您的 app inventor 專案中,聽起來很有趣對吧?先看看這篇教學喔

 

心動不如馬上行動!趕快點擊報名連結吧!

我要報名


註1:Learning Creative Learning 為 MIT Media Lab Lifelong Kindergarten 小組的線上教學網站

註2:LinkIt 7697為 Arduino相容開發板,相關內容請點我

註3:ROS是專為機器人軟體開發所設計的開源電腦作業系統架構。

一片樹莓派便能買到的AI影像辨識及硬體套件 Sipeed MAix Go Kit

$
0
0

Sipeed MAix Go Kit 具有官方資源以及開發所需的基礎零件,能協助使用者快速開發AI影像辨識的邊緣運算裝置

開發AI影像辨識或是深度學習等專案的時候,採購需要的零件往往耗費不少時間與精力。Sipeed MAix Go Kit 幫你把初步開發所需要的基礎零件都準備好了,除了MAix Go這片包含相機模組的邊緣運算開發板,上面附有LED、麥克風、喇叭、拇指旋轉開關等基礎零件,套件中還包含了鋰電池、2.8吋的螢幕、壓克力外殼等,協助使用者能更快速的開發邊緣運算裝置。Sipeed MAix Go 採用能做影像辨識及學習的 RISC-V 64 bit 雙核 Kendryte K210 晶片,能夠不依賴電腦獨立運作,也可以使用C/C++或是micropython開發。它支援 tiny-yolo、mobilenet-v1、以及TensorFlow Lite 訓練出的模型,並承諾未來會建立模型交易平台供使用者交換彼此訓練好的模型。

作者 蔡雨錡
參考網頁 https://www.seeedstudio.com/Sipeed-MAix-GO-Suit-for-RISC-V-AI-IoT-p-2874.html 

相較於之前發文過的HuskyLens,Sipeed MAix Go Kit也同樣使用了Kendryte K210 晶片,鏡頭模組也跟基礎款一樣選用OV2640,照這樣的趨勢,之後可能會有使用相同零件的類似產品出現。但它們的目標客群是不太一樣的,HuskyLens的目標客群比較接近AI影像辨識的體驗裝置,而 Sipeed MAix Go Kit 則是讓原本有完成訓練的辨識模型的進階使用者開發硬體裝置更方便。

值得注意的是 Sipeed MAix Go Kit 已經上市,並且官方有提供不斷更新中的資源如Youtube影片或是Github程式協助使用者上手。相關資源連結如下:

Youtube 影片

 有趣的應用

MAIX Go feature map display

寵物自動餵食器(用同樣MAix系列的板子製作)

mobilenet-v1 辨識成果

人臉偵測

Real-time 邊緣偵測

組裝教學

Github

官方 MAix Go in micropython (圖片截圖於下方連結)

https://github.com/sipeed/MaixPy

最後附上相似產品比較表,以官方提供文字內容為主,整理出四種鏡頭模組比較表如下 [1] [2] [3] [4],若內容為空代表沒有提及,可以參考模組選用的零件的文件來判斷官網沒有提及的效能或規格。在製作不同專案時會有對應的不同需求,可以參考下列比較表做出最適合的選擇。

ESP32-CAM Pixy2

(CMUcam5)

HuskyLens Sipeed MAix Go 套件
製作公司  AI Thinker PixyCam DFRobot Seeed Technology
大約價位(NTD) 365 1856 基本款:687

進階款:1594

1265
鏡頭 OV2640 Aptina MT9M114 基本款:OV2640

進階款:OV5640

OV2640 + M12 4mm 鏡頭
解析度 最大解析度為200萬畫素,但受RAM大小限制, 該片板子僅能最高到 800×600 1296×976 基本款:200萬畫素

進階款:500萬畫素

FOV

(Field-of-view)

65度 水平60度

垂直40度

核心晶片 32 bit 雙核Tensilica LX6 雙核NXP LPC4330 RISC-V 64 bit 雙核 Kendryte K210 RISC-V 64 bit 雙核 Kendryte K210
時鐘頻率 160 MHz 204 MHz 400 MHz 400 MHz
SRAM 520KB 264KB 8MB
flash 4MB 2MB 8MB/16MB/128MB
程式語言 Arduino IDE

micropython

Arduino IDE

C/C++

Python

C/C++

micropython

演算法/深度學習模型 內建 內建 tiny-yolo mobilenet-v1 TensorFlow Lite
相容開發板 Arduino

Raspberry Pi 等

Arduino

Raspberry Pi 等

Arduino

micro:bit

Raspberry Pi

LattePanda

資料傳輸 UART

SPI

I2C

PWM

UART

SPI

I2C

USB

digital/analog 輸出

UART (9600~115200bps)

I2C

(100k~400k)

TypeC USB
wifi 802.11 b/g/n 802.11 b/g/n
藍牙 BLE
附螢幕 2.0 inch IPS

解析度 320 x 240

觸控螢幕

2.8 inch LCD

觸控螢幕

最大影像傳輸率 UXGA / SXGA:15 fps

SVGA:30 fps

CIF:60 fps

60 fps 30 fps 60 fps
重量 5g G.W 20g

N.W 10g

耗電 180mA@5V(關閃光燈)

310mA@5V(開閃光燈)

140mA 310mA@3.3V

220mA@5.0V

600mA
尺寸大小 27mm x 40.5mm x 4.5mm 42mm x 38mm x 15mm 52mm x 44.5mm 88mm x 60mm
其他附屬硬體 micro SD 卡插槽、閃光燈 RC servo micro SD 卡插槽、按鈕 I2S 輸出數位麥克風、喇叭、 RGB LED、麥克風陣列接頭、拇指旋轉開關(數字密碼鎖開關)、micro SD 卡插槽、wifi天線、鋰電池、Type C-USB線
功能 拍照 1. 顏色辨識

2. 物體辨識

3. 物體追蹤

4. 偵測及追蹤線

5. 偵測叉路口及各個分叉路

6. 可訓練自己的資料庫做物體辨識

1. 物體追蹤

2. 臉部辨識

3. 物體辨識

4. 偵測及追蹤線

5. 顏色辨識

6. 標籤辨識

7. 可訓練自己的資料庫做物體辨識

8. 可以獨立運作

1.     可訓練自己的資料庫做物體辨識

2.     可以獨立運作

上述商品價格按照文章撰寫當下匯率做換算 – 2019/09/16

 

參考資料:

[1] ESP32-CAM datasheet

https://loboris.eu/ESP32/ESP32-CAM%20Product%20Specification.pdf

[2] Pixy2 官方 datasheet

https://media.digikey.com/pdf/Data%20Sheets/Seeed%20Technology/102991074_Web.pdf

[3] HuskyLens 群眾募資:

[4] Sipeed MAix Go Kit 官方販售頁面

https://www.seeedstudio.com/Sipeed-MAix-GO-Suit-for-RISC-V-AI-IoT-p-2874.html

[Azure Custom Vision]如何在邊緣裝置上實作物件辨識

$
0
0

繼與資策會合作,開給高中生的一日AI體驗營活動結束之後,來自各方的回響非常熱烈,因此我們決定手把手教大家如何使用Microsoft的Customvision服務來訓練自己的AI,以及如何利用Anaconda實作不須聯上網路的邊緣運算!!

作者 陳俊霖
時間 30分鐘~60分鐘
難度   * *
材料表 Azure 或 office365帳號

在開始之前,要先建立一個Azure帳號,請點此

個人使用可以有一個月的免費額度,但是需要新增信用卡號碼,這部分在建立帳號的時候需要多加留意。

建立完成之後,點擊下方連結前往Custom vision網站:

Microsoft Custom Vision

點擊登入後就可以進到以下頁面。

若您的帳號是屬於資源群組,則進入主畫面後可以看到同一個群組的其他資料,同時也可以對其進行編輯、修改、甚至是刪除。

筆者的畫面就是在一日AI實作營的同學發揮創意做出來的專題,可以看到大家都充滿創意與巧思。

接下來,今天的主題是Object Detection,也就是物件辨識。

何謂物件辨識?

物件辨識與物件分類最大的區別在於:

物件辨識(Object Detection)能夠在一張圖像中指出特定物件的位置以及種類,回傳值會包括物件的標籤、座標以及物件佔據畫面的範圍。

但是物件分類(Classification)只能夠將一張圖片分類為一個種類,無法框出物件的位置、大小等資訊。

因此,我們在實際使用的時候需要依照我們的用途、需求、以及功能來決定要使用的辨識種類。

接下來,讓我們建立一個物件辨識(Object Detection)的專案。

點擊New Project

這時候會出現如下視窗,請將專案命名,並將其他設定選擇如下:

Resource Group​:      選擇自己建立的資源群組,若尚未建立請點選create new

Project Types​:          Object Detection​

Domains:​                  General (compact)​

 

要選Compect才能夠將訓練完成的標籤檔與模型檔匯出

Export Capabilities:  Basic platforms (Tens​orflow, CoreML, ONNX, …)​

此處選擇邊緣運算使用的神經網路平台,我們這次使用Tensor flow,故選基礎平台(Basic platforms)。

點選建立之後,會出現如下的專案畫面,點選Add image即可新增照片

在這裡,同學可自由發想要讓AI辨識什麼東西,從食物、動物、植物、玩具、人臉、卡通人物……都可以辨識。

但是因為微軟的Customvision內部是如何運行的我們不得而知,所以我們唯一能改變的只有資料及的豐富程度以及準確性。

我們大致上可以想像AI是一位沒見過世面的小嬰兒,你教他蘋果是圓形的紅色果實,那他的認知就會和我們對蘋果的認知相同,但是假如同學亂餵他錯誤資料,拿香蕉的圖片跟他說這是草莓,那這個AI一輩子都會認為草莓是黃色,且長條狀的。

因此在上傳資料集(Dataset)的時候要先由人類把正確且具多樣性的照片篩選出來在做訓練比較好。

下一步,將每一張圖片個別標記並且框出欲辨識物件的大小與範圍。

請注意!這裡的標記名稱一定要使用英文,且每一個類別至少都要有15張照片作為資料集(Dataset),否則資料量太少無法訓練,除此之外,每個類別的資料量要盡量一樣多,以避免機率抽樣產生的誤差。

這一個步驟是監督式學習人工智慧最複雜繁瑣的地方,也有人戲稱這個動作是”工人智慧”。

其名的由來是因為在建立資料集(Dataset)的過程中,只有人類才能正確辨識出物品的種類與其所在的位置,因此有些大型人工智慧廠商會僱用一群工作人員專門標記(label),因此才有”工人智慧”戲稱。

在這裡跟大家分享框圖的小撇步,在框出物品時,盡量包含該物品的特徵與型狀,且在蒐集同一種標籤的資料時盡可能找各種大小不一的圖片,這樣AI才能夠知道不同距離的情況下,同一種物品的不同形狀與特徵。

標記好所有圖片之後,可點下右上角的綠色按鈕Train,並且訓練模式(Training Types)選擇快速訓練(Fast Training)。

接下來會出現如下畫面,代表AI正在訓練中。

這一個步驟是在微軟的雲端伺服器上執行的,因此我們並不知道其神經網路的層數、權重、以及其細節配置。圖中的iteration1代表這是第一次迭代。若資料集沒有變化,再次按下Train按鈕是不會有任何動作的。

 

稍等一到兩分鐘後(取決於同學的資料量),我們的AI就訓練好了!

同學會看到這樣的畫面:

讓我們來認識一下左邊兩個圈圈分別代表的意思。

引用微軟官方說明:

  • Precision(精確度)表示識別的正確分類所得到的分數。例如,如果模型識別 100 張影像為狗,而實際上有 99 張為狗,則精確度為 99%。

模型預測為狗的總數正確分類為狗 之比例。

也就是

  • Recall(召回率)表示正確識別實際分類所得到的分數。例如,如果實際上有 100 張影像為蘋果,而模型識別 80 張為蘋果,則回收為 80%。

即資料中實際正確為狗 但正確辨識 的比例。

也就是

Recall這比較符合我們直觀認知的機器的”準確率”。

但是這兩個數值都會被左上角的兩個閾值(Probability Threshold與Overlap Threshold)所影響,在實際應用上也僅供參考,因為真實環境中的變數非常多,包括攝影機的角度、光線、影像的白平衡都會改變他的判斷結果。

在機器學習應用上,我們一般會參考Recall值來作為我們判斷模型好壞的依據,畢竟我們的最終期許是希望機器取代人類做一些簡單的工作,所以機器跟人類辨識出一樣的東西的比例要越高越好。

附註:這裡的”張”指的並不一定是照片的張數,只是一個比較好理解的單位,因為在物件辨識(Object Detection)中,標記的面積也會影響到準確度的數值,這裡不多做篇幅介紹,好奇的讀者可以搜尋”檢測評價函數IoU”)

完成的同學可以點選Performance下方,標籤欄位可以看到機器取樣並自我檢測的結果。

機器認為的地方會用紅色框框框起來,而人工標記的地方是白色框框。

接下來回到Customvision,按下Export(匯出)

接下來選取TF(Tensor flow)並點選Export -> Download

下載完成並解壓縮之後會得到兩個檔案,分別是label.txt 與model.pb

成功下載並解壓縮後,我們要用邊緣運算裝置來執行不須連網路的AI辨識,這邊為了方便沒有樹莓派的讀者使用,我們用Anaconda作為執行的環境。

尚未安裝Anaconda的同學可以到這裡,有Anaconda安裝教學文

本身已有安裝Anaconda的同學,請先開啟虛擬環境的prompt視窗,

或者進入Anaconda prompt後輸入:

>conda activate (虛擬環境的名稱)

閱讀我們教學文的同學可以直接輸入:

>conda activate testAI

或者直接在windows的開始視窗中選取虛擬環境的prompt視窗(如下圖)

啟動Anaconda虛擬環境後,先將虛擬環境的目錄移動到C槽的testAI資料夾

>cd C:\testAI

接下來,我們把剛剛解壓縮好的所有檔案複製到這個資料夾裡。

完成後,把python資料夾內的predict.py 與object_detection.py拖曳出來放到testAI內,並且到網路上找一張AI沒看過的圖片放到testAI資料夾中。

你的資料夾看起來要像這樣:

這裡的01.jpg與02.jpg是我要用來測試的檔案,同學也可以自己改檔名。

複製完成後我們回到Anaconda Prompt,並輸入

>python predict.py 01.jpg

此命令意思是用python軟體執行predict.py檔,且此檔案需要的附加檔案檔名為01.jpg。

因此讀者的測試圖檔檔名若不是”01.jpg”,亦可更改為其他檔名,但是副檔名只支援”jpg”、”png”、”bmp”,且檔案大小不可超過4MB。

執行成功會出現如下畫面:

Prompt視窗會顯示所有Bounding Box的起始座標、高度、寬度、信心指數,以及辨識出來的標籤。

當然同學可以自己利用opencv的功能將Bounding Box繪製在測試圖片上,甚至也可以在Bounding Box的左上角顯示標籤名稱:

體驗到這麼強大的人工智慧,你有甚麼想法或應用呢? 又或者,這麼方便的視覺辨識功能可以為你解決甚麼困擾? 都歡迎與我們聯繫唷!

【活動實紀】20190928_ AI x 程式 x 科技教育(內含講者提供簡報)

$
0
0

CAVEDU教育團隊在每一年都會設定一日作為CAVEDU作品展示以及邀請各相關領域強手來與大家分享現況的科技教育與實際規劃,而今年於2019/9/28 舉辦的 [AI x 程式 x 科技教育] 科技世代CAVEDU陪您一同面對分享會,也非常感謝所有來賓與師長好友不畏風雨參與,我們會持續提供更好的教學內容給大家。以下為0928活動紀錄影片快剪喔!

【AI世代與科技教育講座】講座精彩內容回顧

1. 開場 – 阿吉老師,CAVEDU教育團隊

今年是CAVEDU第11年,每年我們都想把更多實用又有趣的東西帶給台灣的孩子們。從投影片中您可以回顧CAVEDU這10年來的成長軌跡。講義下載連結

2. 科技教育與我們的年輕人 – 周懿謙老師,台北市中崙高中資訊老師

周老師是位對於將新科技應用於教學環境中抱持著積極樂觀態度的一位老師。108課綱終於上路,不論如何紛紛擾擾,如周老師這樣實際進行教學的第一線教學者們,他們會直接接收到學生、家長與教學環境的回應。非常開心邀請到老師分享她多年來對高中生的資訊科技教學心得。講義下載連結

3. Scratch, Now and Next – 方毓賢先生,均一教育平台內容開發專案經理

毓賢兄任職於均一教育平台,該平台無須多言,好內容都在這。另一方面,他也默默投入Scratch 社群,例如我們曾一起參與過 Scratch 3.0Learning Creative Learning的繁體中文翻譯工作(使用 transifex.com)。對於 “Create Project” 一詞究竟要翻譯成[建立專案],或是[創建項目],有些朋友可能覺得無傷大雅,但我們卻是再三斟酌才行。一些爬格子的小事,累積起來才能讓孩子們有好的教學內容。講義下載連結

4. 物聯網 AIoT as Data – 阿吉老師,CAVEDU教育團隊

講義下載連結,分享這幾年CAVEDU從國小到大學的物聯網教學分享。物、聯、網,三個字都代表個許多人的努力成果:平價可上網的開發板、網路基礎建設普及還有免費雲服務,既便是小學生都能做出相當不錯的物聯網專題。(參考連結

5. 用 ROS 平台來控制 7697 小車 – Mason Chen 陳豐生先生,一位愛玩機器人的爸爸

一位愛玩機器人的爸爸,這個標題可以看出技術力以及愛孩子的心。除了常見的 microbit / 7697 機器人之外,Mason進一步將這些簡易開發板與熱門的機器人作業系統(ROS, Robotics Operation System)3 結合,一起來看看會迸出哪些不一樣的火花?

講義下載連結,也歡迎追蹤 Mason 的 Facebook有更多作品分享~

6. 打造智慧型手機AI視覺辨識app- 阿吉老師,CAVEDU教育團隊

感恩讚嘆MIT App Inventor,一直都有新東西出來。這個網頁(https://classifier.appinventor.mit.edu)可以讓您一站式完成收集資料(webcam拍照或上傳),訓練網路,最後把模型檔放入您的 app inventor 專案中。如果不想用Python開發機器人的朋友,改用本做法再透過藍牙,一樣是AI機器人喔!講義下載連結,也請參考本文說明

CAVEDU作品展示

AI 輪型/人型機器人相關展示

使用 Raspberry Pi 或 NVIDIA Jetson Nano 做的視覺辨識機器人近年來愈來愈熱門,學習門檻也愈來愈低。現場擺出了輪型與人形機器人讓來賓操作。對於機器人來說,機構與配電也是很深奧的學問呢1

Teachable Machine,使用 Google Coral 開發板

這台是根據 Google Coral 官網做出的學習機器,按下按鈕拍照讓電腦認得 P助的樣子吧!人臉辨識當然也是輕輕鬆鬆。Google 針對邊緣運算裝置所提出的 tensorflow lite 可以提升推論速度,真的很棒

東西實在是太多了,有BOSON互動電子積木、物聯網教學箱、CAVEDU出版品(還真的有朋友來找阿吉老師簽名,感動~),還有福利社老闆的好物出清,感謝大家的熱情參與喔!

 

 

大合照就是很難拍到大家都正確看到鏡頭或是沒閉眼的照片QQ

 

CAVEDU教育團隊全體同仁再次感謝大家熱烈的參與!CAVEDU DAY明年一定會再舉辦的。下次見喔~

【臺北市職能發展學院 X CAVEDU教育團隊】​人工智慧影像處理應用班-錄取名單

$
0
0

主辦單位:臺北市職能發展學院

培訓單位:翰尼斯企業有限公司

學員錄取名單:

學號 姓名
10810001 陳○中
10810002 饒○平
10810003 吳○馨
10810004 阮○裕
10810005 洪○喬
10810006 黃○紀
10810007 白○元
10810008 李○峯
10810009 林○緯
10810010 何○源
10810011 嚴○華
10810012 廖○翔
10810013 鄭○庭
10810014 許○賓
10810015 李○熹
10810016 張○雄
10810017 許○達
10810018 丁○安
10810019 許○升
10810020 林○賢
10810021 林○源
10810022 吳○翰
10810023 余○家
10810024 陳○儒
10810025 顏○府
10810026 林○廷
10810027 張○帆
10810028 蘇○誠
10810029 王○凱
10810030 陳○仲

備取名單:

備取序號 姓名
1 李○瓊
2 詹○如
3 華○永
4 鄭○祺
5 張○銘

 

上課地點:臺北市中山區玉門街1號 (台北自造實驗室Fablab Taipei)

 

注意事項:

  1. 108/10/14開訓後(含開訓當日)如尚有缺額,將於開訓後3日內依備取序號依順序遞補學員。
  2. 第一次上課請遞交學員資料卡、職能進修契約書(一式兩份),1吋大頭照(2張)、身份證正反面影本。
  3. 受訓期間膳宿自理,受訓期滿全期訓練成績合格者,由本單位發給結訓證書。於進修課程期間,除公假、病假、喪假外,其餘請假事由一律以事假認定。未依規定辦理請假時,均以曠課論。扣除公假及喪假外,請假時數累積達全期課程總時數1/5(含)以上者、曠課時數達全期課程時數1/10(含)以上者或參訓期間行為不檢,情節重大者,勒令退訓。
  4. 已報名繳費學員因故無法參訓,得於開訓前申請退還所繳費用,未於開訓前申辦者,已繳交之訓練費用,除該班次停辦外,一概不予退還。
  5. 已報名繳費學員,若未錄取時,我們將會通知並於10/10前處理退費事宜。

 

更多課程詳情,請參閱CAVEDU教育團隊首頁(http://www.cavedu.com)。


不買零件用一個硬體上40堂Arduino/Python課,一張小朋友有找的M5StickC

$
0
0

單顆M5Stick可以上20堂Arduino+20堂Python課程。你想得到的基礎元件像是六軸IMU、IR、led、螢幕、電池等等都包含在內,甚至還可以接grove感測器。

以前做研究出差或是上課總是要帶電腦、各種零件及工具,有時候為了方便甚至需要螢幕或是鍵盤跟滑鼠。M5Stack出的M5StickC內建許多感測器跟螢幕,也有可以接Grove感測器的接口跟GPIO腳位,而且小巧方便攜帶。撰寫程式可以使用Arduino IDE或是官方提供的平台撰寫Python。有了這些特點,加上M5StickC有Wi-Fi跟藍牙通訊,花不到一千元做一個簡單可愛的小專題變得輕而易舉。

作者 蔡雨錡
材料表 M5StickC

最近介紹了很多門檻高的AI相關硬體,今天隆重跟大家介紹可以用Arduino IDE輕鬆開發各種有趣專題的M5StickC。大部分使用Arduino的專案在成品階段會使用雷射切割壓克力板或是3D列印來製作硬體外殼,通常需要花費不少時間跟費用,自備外殼M5StickC幫大家解決了這個問題。而且還可以做許多有趣的作品,在看詳細規格之前先來看一些不錯的作品。

相關作品

平衡車

智能手錶及計數器

拉霸機

計數器


來源:https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201903/StickC%20Watch.mp4

保全系統


來源:https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/Simple_Watch_Device.mp4

硬體規格

 M5StickC是用ESP32 Pico Chip開發的,使用5V直流電源,USB Type-C線供電,目前只有販售橘色外殼。

內建硬體規格如下:

  • 4 MByte Flash + 520K RAM
  • 6 軸IMU: MPU6886/SH200Q
  • 紅光 LED
  • 紅外線發射器
  • 麥克風
  • 按鈕x2
  • TFT LCD(0.96 寸)
  • 電源/重置按鈕x1
  • 2.4G天線:Proant 440
  • 80 mAh 鋰電池
  • GPIO腳位(如下圖所示)
  • Grove 接口
  • 有可穿戴及固定的外殼預留孔
  • 開發平台:UIFlow, MicroPython, Arduino

   

ESP32特性

  • 240 MHz雙核Tensilica LX6微控制器,性能可以達到 600 DMIPS
  • 520 KB SRAM
  • 802.11b/g/n HT40 Wi-Fi
  • 一般藍牙跟BLE
  • 霍爾感測器
  • 10x 電容觸碰功能接口
  • 32 kHz晶體振盪器
  • GPIO腳位皆支持PWM/定時器 輸入/輸出
  • SDIO master/salve 50MHz
  • 支援SD卡

其他接腳相關的詳細資訊可以參考官網說明[1]。

範例測試成果

原本想著要來寫一篇使用教學文,沒想到官方[1]做的教學十分詳細,同時照顧到mac跟windows的使用者,而且除了英文之外有日文跟簡體中文可以選擇。照著做非常順利沒有遇到任何阻礙,所以僅在這篇文示範一些範例成果。

官方提供的Arduino範例成果:

除了教學跟研究外,也很適合用M5StickC來做小禮物送朋友,真心推薦不論是不是Arduino的原使用者都可以玩看看!

 

參考資料:

[1] 官方教學文件

https://docs.m5stack.com/#/en/core/m5stickc

[2] 官方Github

https://github.com/m5stack/m5-docs/blob/master/docs/en/quick_start/m5stickc/m5stickc_quick_start.md

除了英文版也可以語言切換日文或是簡體中文

[3] PID平衡車

https://homemadegarbage.com/bala03

 

NVIDIA® Jetson Nano™ 散熱風扇 使用教學

$
0
0
作者 郭俊廷
時間 30分鐘
難度   *
材料表 NVIDIA® Jetson Nano™ 開發套件 Developer Kit

散熱風扇 適用於NVIDIA® Jetson Nano™ 開發套件

今天我們要來介紹的是如何使用NVIDIA® Jetson Nano™ 開發套件搭配使用的散熱風扇,因為我們使用的NVIDIA® Jetson Nano™ 開發套件提供5V電壓所以是使用5V的風扇。

 

以下是JIESAMMY 4020 4線PWM雙滾珠散熱風扇 的規格

  • 電壓:DC 5V
  • 額定電流:0.2A
  • 尺寸: 40*40*20MM
  • 消耗功率:1W
  • 轉速:7,500 ±5%RPM
  • 噪音:28DBA
  • 軸承結構:精密雙滾珠軸承

首先來看看它的外觀及產品內容有甚麼

外觀如下圖

內容包含一個風扇本體(接頭部分有防呆接頭,只要注意一點都不會裝錯方向),還有四根螺絲。

Jetson Nano™ 開發版上有個FAN J15的接頭就是風扇所使用的接頭

把它裝上去鎖上螺絲,接頭接上去即可使用,注意風扇出風口要朝下,可以先把電源線繞在風扇邊就可以更美觀。

接著我們開始測試風扇功能是否正常

由於我們是使用PWM風扇 風扇速度可以經由調整數值0~255來改變

首先我們進入系統下以下指令來看看風扇有無正常運轉

 

以下指令是使風扇用PWM速度255來運作

sudo sh -c ‘echo 255 > /sys/devices/pwm-fan/target_pwm’

執行指令之後輸入使用者密碼,如果風扇有正常運轉代表風扇沒問題

接著關閉風扇,風扇會慢慢的降低速度到關閉

以下指令是使風扇用PWM速度0來運作,即關閉風扇

sudo sh -c ‘echo 0 > /sys/devices/pwm-fan/target_pwm’

當你覺得開發版太熱可以使用以上兩個指令來開啟、關閉風扇。可是下次開機時風扇不會自行啟動,所以我們使用以下方法來讓風扇開機時自行啟動。

 

首先執行以下指令 移動到etc目錄,並且創建rc.local檔案(如果已經有的就不用),再給rc.local可執行的權限,最後編輯rc.local文件

cd /etc

sudo touch rc.local

sudo chmod u+x rc.local

sudo vim rc.local

注意vim是編輯器,可以選擇你喜歡的編輯器編輯,例如nano、vim、gedit

並會跳出編輯視窗,按I進入編輯界面,貼上或輸入下面內容。存檔時按ESC在下方輸入:wq

rc.local裡面所需要輸入的內容如下,可以根據你需要的風扇速度改變最後一行的數值

#!/bin/bash

sleep 10

sudo /usr/bin/jetson_clocks

sudo sh -c ‘echo 255 > /sys/devices/pwm-fan/target_pwm’

接著重開機,風扇就會自行啟動

 

如果想要臨時修改風扇速度一樣執行之前的指令,這裡把風扇速度改為100。不過下次重開機時風扇會改為預設的速度。

sudo sh -c ‘echo 100 > /sys/devices/pwm-fan/target_pwm’

如果想要修改開機時風扇的速度,只要執行下面兩個指令即可。當你不想開機時啟動風扇把rc.local裡的數值改成0即可。

cd /etc

sudo vim rc.local

出現這個注意警告,按E選擇 (E)dit anyway,

一樣按I進入編輯,並把最後一行的255改成0,按ESC之後下面輸入:wq存檔並離開

修改完成,這樣下次開機時風扇就不會自動啟動了。

以上是我們的NVIDIA® Jetson Nano™ 散熱風扇 使用教學,謝謝大家觀看。

 

參考資料:

https://devtalk.nvidia.com/default/topic/1049521/jetson-nano/jetson-nano-fan/1

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fpower_management_nano.html%23wwpID0E0SH0HA

 

[ ROV 水下機器人 ] 組裝步驟

$
0
0
作者/攝影 薛皓云/Tina
難度   * *
材料表 ROV水下機器人套件包

1.先拿出電路板,圖案為正面,背面為焊接面

2.LED與電阻穿過洞放置上去(LED較長的針腳接於左邊

3.利用焊槍與焊錫將元件焊接起來

4.將多餘的線剪掉

5.4P綠色端子接上並焊接上去

6.接上22P綠色端子

7.2P綠色端子焊接起來

8.準備6個六角內螺紋隔離柱(母母)及6PF306螺絲,並鎖在搖桿上板上

9. 準備3個搖頭開關、3個薄金屬螺帽、3個金屬圓環,並分別組裝如下圖

10.3組搖頭開關接於電路板上

11.將步驟8的搖桿上板裝上去、並在搖頭開關上鎖上薄金屬螺帽

12.在背面鎖上六角隔離柱 (公母)、並將搖頭開關焊接起來

13.準備2個電池座及搖桿下板

14.利用PF308螺絲螺帽電池座固定住

15.裝上電池並將開關打開

16.將步驟15的搖桿下板利用PF306螺絲鎖至搖桿上板

17.裝上公端子台

18.將電池座的電線接至公端子台上,從右到左分別為紅、黑、紅、黑

19.壓下電池座開關,檢查LED燈是否亮起

20.拿起雙隔離電腦線

21.小心的將外皮去除(剝除約2~3公分)

22.去除鋁箔及編織繩

23.利用剝線鉗剝除線外皮(剝除約1~2公分),另一端重複步驟21~23

24.準備馬達架的壓克力

25.利用PF308螺絲及螺帽鎖起來

26.利用PF312螺絲及螺帽將管線固定座鎖至中間

27.利用PF312螺絲及六角內螺紋隔離柱(母母)將管線固定座分別鎖至左端及右端

28.利用PF306螺絲將馬達固定座固定至潛水艇下板上

29.準備3顆馬達並將尾端線剝除約1~2公分

30.3顆馬達分別裝至左、中、右管線固定座上

31.3顆馬達的右邊線與雙隔離電腦線的黑線扭再一起

32.利用彈簧螺式接頭將步驟31的線旋轉鎖住

33.左邊馬達的左側線與雙隔離電腦線的白線扭再一起

34.利用彈簧螺式接頭將步驟33的線旋轉鎖住

35.中間馬達的左側線與雙隔離電腦線的綠線扭在一起

36.利用彈簧螺式接頭將步驟35的線旋轉鎖住

37.右側馬達的左側線與雙隔離電腦線的紅線扭再一起,並利用彈簧螺式接頭將線旋轉鎖住

38.將接好的線整理並彎進馬達架下方

39.利用束線帶固定住

40.準備8個六角隔離柱(公母),並兩兩鎖在一起

41.將步驟40的塑膠柱與螺帽鎖在潛艇底板上,並裝上扇葉

42.裝上潛艇上板並鎖上PF306螺絲

43.將雙隔離電腦線接至4P綠色端子台上,顏色由左至右分別為白綠紅黑

44.完成就可以下水試玩囉!

 

 

 

 

 

在Raspberry Pi4上安裝Tensorflow Lite for python以及Coral USB Accelerator套件

$
0
0

使用Raspberry Pi 4 搭配 Tensorflow Lite 或 Coral USB Accelerator 做影像辨識前,來安裝套件吧!

由於Tensorflow Lite在邊緣運算裝置上表現突出,新出的多種開發板幾乎都有支援Tensorflow Lite。Google除了提供Cloud Auto ML訓練機器學習模型,也開始推出Coral USB Accelerator,可以接上樹莓派等開發板來加速邊緣運算。

因此本篇文章分享如何在Raspberry Pi 4上成功安裝Tensorflow Lite以及Coral USB Accelerator套件,讓有興趣Raspberry Pi 4上嘗試用Tensorflow Lite或是Coral USB Accelerator套件做影像辨識,並且打算使用python撰寫程式的使用者可以更快速完成安裝。

作者 蔡雨錡
時間 20分鐘
難度   *
材料表
  • Raspberry Pi 4 2ram/4ram
  • Coral USB Accelerator
  • 樹莓派週邊硬體(充電器、螢幕、滑鼠、鍵盤等)

安裝之前要先更新套件

在terminal中按順序執行下列指令

 

sudo apt-get update

sudo apt-get upgrade -y

sudo apt-get install build-essential

 

Tensorflow Lite(本篇僅安裝物體辨識套件,不包含訓練套件)[1]

注意:如果你已經用pip安裝過tensorflow,請在terminal打 pip3 uninstall tensorflow 解安裝後再執行以下步驟,完整的tensorflow套件跟tensorflow lite物體辨識套件在安裝階段會出現衝突。

Step 1 – 前往官方網站下載套件

https://www.tensorflow.org/lite/guide/python

請在terminal中打 python3 –version 查看你的python版本,

根據Python版本,點選ARM32欄位下面的對應版本。

Pi 4預設Python版本會是3.7 (Debian Buster default),如果你是用舊的Pi 3,Python版本預設是3.5 (Debian 9 Stretch default)。

檔案會下載到Downloads,下載完後請將檔案移至/home/pi資料夾底下。

 

Step 2 – 安裝下載的wheel檔案

請在terminal中打 pip3 install 你剛剛下載的檔案名稱

看到上圖就代表順利安裝完Tensorflow Lite的tflife_runtime套件,可以開始做圖片辨識了!

 

Coral USB Accelerator [2] [3]

Step 1 – 下載套件檔案後解壓縮

在terminal檔中按順序打下列指令

wget https://dl.google.com/coral/edgetpu_api/edgetpu_api_latest.tar.gz -O edgetpu_api.tar.gz –trust-server-names

tar xzf edgetpu_api.tar.gz

 

Step 2 – 修改並執行install.sh

因為官方尚未加入Pi4硬體的辨識code,還有一個地方少了sudo,所以在這步驟中要修改檔案。

在terminal檔中打下列指令

nano edgetpu_api/install.sh 或 vim edgetpu_api/install.sh,選你喜歡的編輯器。

進入程式編輯畫面後,在第59行後加上Pi4的硬體辨識程式如下:

elif [[ “${MODEL}” == “Raspberry Pi 4 Model B Rev”* ]]; then

info “Recognized as Raspberry Pi 4 B.”

LIBEDGETPU_SUFFIX=arm32

HOST_GNU_TYPE=arm-linux-gnueabihf

在第128 行加上紅字部分的 sudo,原本缺少導致無法順利執行

sudo udevadm control –reload-rules && sudo udevadm trigger

加完後存檔,並打下列指令執行install.sh

sudo edgetpu_api/install.sh

 

Step 3 – 為了Python3.7做修改,官方預設不支援這個版本

在terminal檔中按順序打下列指令

cd /usr/local/lib/python3.7/dist-packages/edgetpu/swig

sudo cp _edgetpu_cpp_wrapper.cpython-35m-arm-linux-gnueabihf.so _edgetpu_cpp_wrapper.cpython-37m-arm-linux-gnueabihf.so

版本名稱修改完後,大功告成,可以摩拳擦掌開始辨識物體了!

 

可以參考官網範例來撰寫辨識程式:
Tensorflow Lite 搭配 Pi Camera

https://github.com/tensorflow/examples/tree/master/lite/examples/image_classification/raspberry_pi

Coral USB Accelerator :

https://coral.withgoogle.com/docs/accelerator/get-started/

 

參考資料:

[1] Tensorflow Lite 官方安裝教學

https://www.tensorflow.org/lite/guide/python

[2] Coral USB Accelerator 官方安裝教學

https://coral.withgoogle.com/docs/accelerator/get-started/

[3] Pi4使用者成功安裝Coral USB Accelerator套件心得

https://richardstechnotes.com/2019/07/04/object-detection-on-the-raspberry-pi-4-with-the-coral-usb-accelerator/

 

 

用 Google Coral USB Accelerator 搭配 Raspberry Pi 實作 Teachable Machine

$
0
0

Google 官方提供Google Coral USB Accelerator的teachable machine實作範例,這個作品可以在短短幾分鐘內學會辨識不同的對象,簡單又能讓入門者體驗AI有趣之處。

想要做AI互動裝置,但對程式都還不是很熟悉。或是想要讓年齡較小的學生體驗AI的概念。Google 提供的teachable machine是個好選擇,隨著Google Coral USB Accelerator的問世,官方提供了teachable machine的硬體實作範例,提升了互動性。本篇實作將帶大家參考官方網站詳細的材料表跟步驟逐步完成這個寓教於樂的作品。

作者 蔡雨錡
時間 2小時
難度 ★★★☆☆
材料表
  • 1 x Raspberry Pi 3B及其電源線
  • 1 x Raspberry Pi Camera V2.1
  • 1 x Google Coral USB Accelerator
  • 1 x 單芯線5 cm
  • 4 x 330 Ohm 1/4W電阻
  • 4 x 不同色LED
  • 5 x 4 pin按鈕
  • 10 x 10cm公母杜邦線
  • 1 x 麵包板
成本
  • Raspberry Pi 3B-NTD 1500
  • Raspberry Pi Camera V2.1-NTD 1200
  • Google Coral USB Accelerator-NTD 3500
  • 電子零件-NTD 150

Teachable Machine讓你可以透過互動的形式用鏡頭拍攝影像跟按鈕來決定物品分類。即使只有少量影像的訓練,機器也可以準確分類物品,本實作中測試約每分類提供3~4張影像就很足夠。

Teachable Machine是依靠已經訓練好的影像辨識神經網路MobileNet來辨識,MobileNet原先就可以辨識1000種物體。在學習的過程中,已經訓練好的神經網路會發展出一套新的圖像表示方式用於分類,這也是轉移學習的一種形式(transfer learning)。

每當使用者按下按鈕進行分類時,演算法會去尋找並比較新對象物的向量跟既有的向量,透過找到最接近對應關係來進行分類。所以如果有兩個物品過於相似,訓練後辨識錯誤的機率也會增加,像是我們展示作品時有小朋友畫了白熊跟小叮噹,都是圓臉的角色,就很容易被誤辨識為同一類,因為他們的特徵類似。想要鑽研更多演算法細節可以參考官方演算法教學[3]。

開始實作

Step 1. 準備材料表中的零件並按照官方提供的電路圖進行接線

要注意led中有三角形的金屬片那端較短腳為負極(-),長腳端為正極(+)。

接完後電路如下圖,下圖中有省略led燈正極連結電阻的單芯線。

Step 2. 將 Google Coral USB Accelerator 跟 Pi Camera 接上Raspberry Pi

Step 3. Raspberry Pi 接上電源後,確認 Pi Camera是否能正常運作

打開左上角黑色terminal,輸入以下指令:

raspistill -v -o test.jpg

你應該會看到大約5秒的Pi Camera影像,然後同位置資料夾下會有一個新檔案-test.jpg。

如果沒有看到影像或是jpg檔,可能要檢查接線是否正確或是Camera可能沒有被啟用。要啟用Camera請在terminal輸入以下指令:

sudo raspi-config

進入 Interfacing Options,檢查Camera有沒有被啟用,若沒有請選Yes,並重新啟動Raspberry Pi。

Step 4. 輸入以下指令進行更新跟重新啟動:

sudo apt-get update
sudo reboot

Step 5. 檢查是否有順利按照上一篇教學文安裝給Google Coral USB Accelerator的Edge TPU套件

試著在terminal執行下列程式,如果顯示OK且沒有任何error就可以進行下一步。

python3 -c ‘import edgetpu; print("OK") '

Step 6. 下載官方Github提供的Teachable Machine source code並重啟Raspberry Pi

在terminal依序輸入下列指令:

cd /home/pi

git clone https://github.com/google-coral/project-teachable.git

cd project-teachable

sh install_requirements.sh

sudo reboot

Step 7. 來教它學習吧!

在terminal中輸入以下指令來執行程式:

cd ~/project-teachable

python3 teachable.py

就可以看到以下畫面!

執行程式後跳出兩個視窗,左邊的terminal會顯示偵測到的類別,右邊會顯示Camera現在看到的影像。本實作選擇讓大家畫圖當作不同的物品,當確認你現在的即時影像是想要訓練Camera辨識用的照片後,請按下對應類別的按鈕。圖中的小雞P助是被定義為橘色燈類別。 按下一次按鈕就是給它一張照片訓練辨識模型。

訓練資料足夠後,當拿著小雞P助的圖給Camera看,Teachable Machine就會亮橘燈表示認得它,並分類為P助!下方影片有辨識分類過程。

小提醒:建議四個類別中,要建立一個類別是背景類,這樣可以大幅降低環境雜訊造成誤判的機率!

Step 8. 清除分類

當你想要嘗試新的一組分類時,可以按最左邊沒有對應的泡的reset鈕,將訓練結果歸零,就可以清除既有分類,且重新定義新的四個類別。

畫畫效果還算是比較差的,用實際物品效果更好更有趣唷!

參考資料:

[1] Google 官方教學文件

https://coral.withgoogle.com/projects/teachable-machine/

[2] 純網頁版teachable machine

https://teachablemachine.withgoogle.com

[3] 使用TensorFlow.js建立Teachable Machine

https://observablehq.com/@nsthorat/how-to-build-a-teachable-machine-with-tensorflow-js

[4] 官方安裝Edge TPU教學

https://coral.withgoogle.com/docs/accelerator/get-started/

 

App Inventor 控制與讀取 microbit

$
0
0
作者/攝影   曾吉弘
時間   2小時
成本
  •   Android手機 (>8000)
  •   micro:bit開發板 (500)
難度   5 (難度10)
材料表
  • Android手機
  • micro:bit開發板

本篇目的是提供一個樣板,讓您的App可以發送多種訊號給micro:bit,同時控制與讀取 micro:bit 的感測器(例如:溫度感測器),這樣,遙控機器人的基礎功能就差不多完成了。這邊當然要自賣自誇一下,App Inventor IoT 網站上的 micro:bit  BLE extension 就是我在MIT當訪問學者時的工作項目之一。本文同時也參考了 Mason兄的小山貓專案

App Inventor端

Designer頁面設定

請由MIT App Inventor 網站下載最新的 micro:bit BLE extension,或由此下載 .aia / .hex 原始檔。再匯入您的 App Inventor 專案即可。

用到的元件種類不多,一個ListPicker用來選擇要連線的藍牙裝置,一個用來斷線的按鈕。以及四個發送不同字元的按鈕,不難發現這就是控制機器人的常見介面。您之後當然可以根據您的需要來修改。

micro:bit元件方面,由於我們要從手機發字元給micro:bit,所以需要使用 microbit_Uart 元件,另外也希望能從手機端看到microbit的溫度感測器值,所以再加入microbit_Temperature 元件。請注意這兩個元件都要基於 BluetothLE 元件才能執行,不是 BluetoothClient元件,前者是藍牙低功耗BLE,後者是傳統藍牙SPP

Blocks

STEP1

程式初始化時,先掃描附近的藍牙裝置,並把掃到的裝置放到 SelectBLE 這個 ListPicker 裡面。另外要斷線的時候,就直接呼叫 BluetoothLE.Disconnect 指令就好

STEP2

在ListPicker中選擇您的 micro:bit (名字很特殊不會選錯)

STEP3  讀取micro:bit 溫度感測器值

在上一步已經要求取得micro:bit溫度感測器,所以要用 TemperatureReceived 事件來取得回傳的溫度值。

STEP4

接下來就是自由發揮啦!在此用四個按鈕的 TouchDown 事件來發送不同的指令給 micro:bit,在此使用的指令是 WriteRXCharacteristic 指令來發送 “R\n” 這樣的字串出去,R是根據不同的按鈕的控制指令,\n 則是換行符號,代表一個命令的結尾。

接著用 anyButton.TouchUp 來管理所有按鈕的 touchUp 事件,當然缺點就是 Disconnect 按鈕也算進去,您可以在這個事件中加入 component 不等於 Button_Disconnect 就可以了~

microbit 端

請到 makecode 網站,開啟一個新的micro:bit專案並完成以下程式。

STEP1

micro:bit 在啟動時會顯示”BLE”訊息提示使用者,並執行藍牙溫度服務與UART服務。在此宣告一個文字變數 RX_Data 來接收從手機發送過來的藍牙訊息。

並在藍牙成功連線與斷線的事件顯示對應訊息 (“C” / “D”)

STEP2

接下來就是等是否收到新的藍牙訊號,在此以換行符號 (newLine)作區別,並把讀取結果放在 RX_Data 變數中。最後比較變數內容並執行對應動作即可,如果您想要控制機器人的話,只需要在各個 case 中放入對應的馬達控制指令即可,非常簡單。

執行畫面

程式初始畫面

選擇藍牙BLE裝置,[puvuz] 為該 micro:bit 的藍牙裝置名稱

連線成功,顯示 Connected 以及溫度感測器值

按下上箭頭按鈕,顯示對應訊息

放開按鈕,顯示對應訊息

按下右箭頭按鈕,顯示對應訊息

國際創客盛會在臺北,華碩AI展效能

$
0
0
作者/攝影 CAVEDU教育團隊

華碩在週末(10/26、10/27)於台北市華山1914文創產業園區所舉辦的『臺北創客嘉年華Maker Faire Taipei 2019』的『AI科技未來館』,展示Maker們自行設計的AI作品。華碩也將最新的AI人工智慧邊緣運算器「Tinker Edge T」,與創客們一起將一般的遙控車,改裝為具自動駕駛功能的自駕車,屆時大家可以在會場體驗AI如何輔助駕駛在賽道上奔馳。

活動當天體驗華碩Tinker Edge T自駕車之外,華碩特別也規劃了現場的模擬賽車區,讓現在民眾不僅可以享受以有趣的賽車遊戲為情境,更可以了解如何收集使用者開車的習慣,建立AI自動駕駛的模型。

 

附註

Maker Faire

『創客嘉年華』是一個於全球各大重要都市舉辦,集結了各年紀的科技愛好者、工藝家、教育家、業餘愛好者、工程師、科學社團、藝術家、學生還有商業展示者。這些Maker來到Maker Faire展現、分享他們所作與所學。

 

Tinker Edge T

ASUS Tinker Edge 系列是一款超小型單板電腦 (SBC),提供低功耗及出色的機器學習能力給終端裝置,讓開發者更輕鬆打造獨一無二的AI 物聯網裝置。

ASUS Tinker Edge T 搭載Edge TPU, 一款由 Google 設計的小型 ASIC,讓邊緣裝置(Edge device)也可利用Edge TPU進行AI機器學習推論。Tinker Edge T 採用 NXP i.MX 8M SOC,有 4 個 Cortex-A53 處理器核心與 GC7000 繪圖處理器,1GB LPDDR4 記憶體與 8GB eMMC 儲存媒體,可透過 microSD 擴充容量。此外板上還有 2個USB 3.0 Type-A、1個USB Type-C、2個MIPI CSI-2接口、HDMI 2.0等接口。

圖片來源:華碩官方提供

圖片來源:華碩官方提供


AI科技教學面面觀,臺北創客嘉年華Maker Faire Taipei 2019

$
0
0

10/26-27於華山1914文創園區,舉辦了2019 Maker Faire Taipei 臺北創客嘉年華 (又稱自造者嘉年華),來自國內外的同好者們展出各自的傑作,各種會動會亮會叫的古怪玩意齊聚一堂,熱鬧非凡。

作者/攝影 曾吉弘/CAVEDU教育團隊

直接不囉唆先帶你/妳一同回顧一次今年的Maker Faire Taipei活動吧!

AI科技未來館,影片快剪:

我國教育部已推出[中小學人工智慧教育示範系列],從國小、國中到高中,針對不同學習背景的學子們說明 AI的發展史、應用並由淺入深地說明重要觀念,例如深度學習與各種演算法等等。為呼應政府對於科技教育的重視以及各種AI人工智能技術的蓬勃發展,CAVEDU教育團隊(後簡稱本團隊)特別與臺北創客嘉年華主辦單位規劃了『AI科技未來館』,與會的大朋友小朋友不僅能了解,更能親身體驗AI技術在各領域上的應用。根據各展區可分為:

AI Car Racing(CAVEDU):

分為羽量級和量級,前者只有在路口的時候才會辨識交通號誌,後者則是完全仰賴攝影機影像來辨識先前方路況狀態。使用NVIDIA、ASUS等業界知名廠商的單板電腦所製作的機器小車,可以根據攝影機的即時影像來精準控制油門與方向盤。除了摩拳擦掌的專業競賽者之外,有興趣的來賓也可以下場體驗,只要設定簡單的參數就能立即看到效果。例如「速度優先」與「過彎優先」。根據來賓表示:「一不小心就會出界,真的很難拿捏啊!」


AI 模擬賽車體驗區(ROG x CAVEDU):

這裡有整套的ROG專業級電競設備,讓來賓可以體驗超逼真的賽車場景。可不是只有玩電動而已啊!我們實際上在做的事情是收集影像資料,透過軟體就可以模擬出白天晚上以及各種天候狀況的道路資料,大幅降低人力成本以及危險天候駕駛的風險喔!

人形機器人格鬥

除了常見的輪型機器人之外,國內知名人形機器人開發團隊──金剛老師也帶著他們的機器人來活動會場,提供給現場參觀的民眾現場體驗格鬥人形機器人的魅力呢!

Microsoft-Makecode與micro:bit開發板

由Micrisoft策展的攤位,這次特地邀請了來自香港的師生團隊使用micro:bit開發板帶來了非常多有趣的創作呢,例如打地鼠與電流急急棒,在教學上也是相當好的素材。


其餘攤位如BOSON互動電子裝置、貝登堡-樂高遙控車越野賽、攀上岩壁的物聯網以及由OpenLab Taipei所提供的玩具拆拆樂工作坊與回收玩具改造工作坊都是現場的人氣攤位。

MakerFaireTaipei活動三大亮點總整理:

MFT活動亮點1,港日韓星創作能量不減

文化異同趣味橫生:本次活動有許多港日韓星的創作團隊,許多團隊甚至已經連續多年來台參加類似活動。從展品可以看出他們對於諸多科技與社會議題的看法,是非常另類的「同學會」。

MFT活動亮點2,邊緣運算百家爭鳴

隨著硬體運算能力提升,對於物聯網終端裝置的需求也愈來愈高,現在都希望能進行一定水準的視覺辨識。因此,國際知名大廠如Google、NVIDIA與ASUS等皆推出自家產品來搶攻邊緣運算市場。對於消費者來說,當然樂見良性競爭所帶來的各種優質產品服務。

MFT活動亮點3,資料資料我愛你

對於AI視覺辨識來說,重點已從如何找到合適的演算法轉變成如何找到高品質的資料。本次活動讓來賓實際體驗資料科學的重要觀念:收集、整理與驗證,有了好的資料之後,您的AI系統就可以有水準以上的表現!

最後最後以大合照作為ENDING吧!

[OpenVINO x UP Squared x RealSense 深度攝影機] 使用深度影像實做道路避障偵測

$
0
0

目標

本篇文章靈感發想自MIT的Dukietown (https://www.duckietown.org/) 。 如同之前我們在部落格分享過的自駕車文章 (https://blog.cavedu.com/2019/08/20/openvino2/) , 機器人小車已經具備有辨識行走及辨識路牌的能力了, 那麼接下來我們希望可以更進一步的提昇辨識能力到物件偵測(Object Detection), 並加入一個新的類別(小鴨,在這裡作為路人),並設法偵測到牠的位置, 再搭配Intel RealSense深度攝影機去量測距離, 藉此來讓小車可以知道前方是否可以通行。

由於篇幅限制,本文將著重在演算法的部份, 關於如何結合到實體的自駕車上以及對應的電控,將於之後的文章為您揭曉,還請多多關注!

環境準備

本文所使用的嵌入式控制板是研揚的UP Squared, 以及所使用的深度學習推論裝置為Intel Movidius NCS 2, 如果想看他們的介紹的話可以參考我們之前寫過的文章 [OpenVINO & Movidius™ 2運算棒] 使用台灣路況即時影像對九份老街做街景辨識

此外,還有本文的主角深度攝影機 Intel RealSense D435!

本文將會含括訓練深度學習模型的部份,建議準備有一台有GPU的電腦,本文以一台有GTX 1060的筆電為例,其上的作業系統為Linux。

最後,請下載本次的範例程式

git clone https://github.com/cavedunissin/agv-object-detection

然後記得切換工作目錄到agv-object-detection

cd agv-object-detection

收集資料

之前路牌的資料可以從我們公開的資料下載(https://drive.google.com/open?id=13odeFnUYNWQS2ysVijOttjzpB53W4FY_) 。 接著為了要能夠辨識出路人(也就是小鴨),我們需要手動先拍攝幾張不同角度的小鴨照片。 本範例約略整理出”左轉路牌”,”右轉路牌”,”停止號誌”以及”黃色小鴨”四個類別數張後, 整理如下的檔案格式

agv-object-detection/data/images

├── duck-001.jpg

├── duck-002.jpg

├── duck-003.jpg

標記資料

有了影像資料後,為了要能夠訓練深度學習模型學會Object Detection, 我們還必須手動label這些資料,在此所使用的軟體是有名的開源軟體labelimg(https://github.com/tzutalin/labelImg) 。

緊接著我們就標記每張圖片的框框以及其對應的類別,如下圖。

Left Right Stop Duck

最後存成檔案格式如下

agv-object-detection/data/annotations

├── duck-001.xml

├── duck-002.xml

├── duck-003.xml

準備Tensorflow Object Detection

我們所使用的深度學習框架為Google的Tensorflow,然後為了能夠使用Tensorflow的Object Detection API, 我們必須先下載函式庫到前面的agv-object-detection這個資料夾底下

# Inside agv-object-detection
git clone https://github.com/tensorflow/models

由於函式庫相當大,所以下載可能會需要一些時間。

下載完成後,請輸入以下的指令完成安裝Python相依套件

sudo pip3 install -r requirements.txt

再輸入以下的指令完成初始設

make init

準備Protobuf

make compile_protobuf

訓練模型

首先請先下載預訓練的模型,

make download_model

將前面準備好的資料轉換格式

Step 1. 從xml檔轉成csv檔

make xml_to_csv

Step 2. 存成Tensorflow指定的tfrecord格式

make generate_tfrecord

完成後就會看到在data的資料夾下會有一個叫做data.record的檔案囉!

agv-object-detection/data

└─── data.record

接著就可以開始訓練了!

make train

訓練過程中出現的loss代表誤差度多少,越低代表學得越好,以這個範例而言,如果時間充足的話盡量讓loss壓到1.0以下, 但其實1~2之間就蠻夠用了。

如果想要解析訓練的過程,可以輸入以下的指令來啟動Tensorboard

make log_train

訓練完後,為了要能夠轉成OpenVINO的形式,我們必須輸出我們訓練完後的模型

make export

最後將inference-graphs這個資料夾搬到UP Squared上面, 注意到UP Squared上面也必須下載本文章的專案

在UP2上下載agv-object-detection

git clone https://github.com/cavedunissin/agv-object-detection

把inference-graphs放到agv-object-detection中,並切換工作目錄到agv-object-detection中

cd agv-object-detection

檔案形式如下

agv-object-detection/inference-graphs

├── checkpoint

├── frozen_inference_graph.pb

├── model.ckpt.data-00000-of-00001

├── model.ckpt.index

├── model.ckpt.meta

├── pipeline.config

└── saved_model

├── saved_model.pb

└── variables

下來會用到OpenVINO的Model Optimizer,關於怎麼在UP2上面安裝OpenVINO可以參考我們之前的文章 [OpenVINO & Movidius™ 2運算棒] 使用台灣路況即時影像對九份老街做街景辨識

輸入以下的指令來將Tensorflow的模型轉成OpenVINO的格式

make model_optimize

轉譯成功後程式會將結果存在IR這個資料夾底下

agv-object-detection/IR

├── frozen_inference_graph.bin

├── frozen_inference_graph.mapping

└── frozen_inference_graph.xml

安裝RealSense函式庫

為了要在UP 2上面執行RealSense,我們必須先來安裝一些基本套件

加入新的apt key

sudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE

新增Repo

sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u

安裝librealsense

sudo apt-get install librealsense2-dkms librealsense2-utils

確認Kernel是否更新

modinfo uvcvideo | grep realsense

接上Intel RealSense,執行以下程式看看是否正常運作

realsense-viewer

Demo

如果已經有了IR資料夾底下的.xml跟.bin檔後, 就可以輸入以下的指令來跑一下Demo。

make demo

參考

  1. Training Custom Object Detector https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/training.html
  2. Creating your own object detector https://towardsdatascience.com/creating-your-own-object-detector-ad69dda69c85
  3. Librealsense Installation https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md

 

挑戰!一個下午教高一學生理解人工智慧,深入淺出NVIDIA Jetson Nano以及Jetbot

$
0
0

今年啟動的108課綱中,國小到高中都開始有計畫的推動AI課程。CAVEDU教育團隊有幸獲得一個機會可以跟十一位高一學生面對面教學一個下午,帶他們透過核心為NVIDIA Jetson Nano的Jetbot來認識人工智慧及深度學習。本篇文章將帶大家一窺究竟,看Jetbot是否能讓學生在零基礎的狀態下認識深度學習並完整體驗神經網路模型的訓練過程。先破個梗,高一學生的吸收速度真的令人驚艷。

課程大綱:

  • 從Robotics到AI的程式教育(15 min)
  • 認識NVIDIA Jetson Nano(5 min)
  • 基礎Linux指令(20 min)
  • 認識機器學習及深度學習(20 min)
  • PyTorch(15 min)
  • Jetbot 實際操作(105 min)
  • 自由測試時間
作者/攝影   蔡雨錡
時間   3小時
難度   ★★★★☆
材料表

從Robotics到AI的程式教育(15 min)

面對年輕的莘莘學子,比起直接開始上深度學習,先讓學生了解深度學習的背景\重要性跟應用,會更有利於接下來的課程。因此,我們介紹這幾年台灣的程式教育潮流演變以及CAVEDU教育團隊在這幾年的專題作品,讓學生們感受程式教育的演進。接著解釋人工智慧、機器學習以及深度學習的定義以及彼此之間的關係、AI應用在影像上的發展。最後介紹AI可以有哪些有趣的應用,讓大家對學習AI有所期待。

認識NVIDIA Jetson Nano(5 min)

了解AI跟深度學習是什麼之後,就帶學生認識硬體NVIDIA Jetson Nano的環節。用與Switch跟樹莓派的規格比較表引起他們的興趣,再進一步介紹NVIDIA Jetson Nano的效能跟同家族的前輩們:TK1、TX1、TX2、AGX Xavier。

 

基礎Linux指令(20 min)

看到Jetbot硬體之後,學生就會開始想玩看看NVIDIA Jetson Nano可以做什麼了,所以帶他們玩看看基礎Linux指令。透過Linux族譜做基本介紹後,就用電腦遠端連線NVIDIA Jetson Nano練習各種Linux指令。由於學生還是有人在使用PTT,所以講解IP位置的數字意義時會有有趣的互動。

 

認識機器學習及深度學習(20 min)

以生活中常見的例子讓學生體會機器學習跟傳統程式的差別。傳統程式是我們丟「規則+資料」以獲得「答案」;而機器學習則是我們丟「答案+資料」以獲得「能處理後續新資料的規則」。理解差異後,介紹機器學習的三大要素:資料、標準答案、評估演算法好壞的準則,這裡用唸書準備考試來比喻也有不錯的迴響。

通用的建立神經網路模型流程、將蒐集資料分類的方法、深度學習模型怎麼透過損失函數更新權重也都非常的重要,且需要實際貼近生活的例子比較有深入學生心中。學生理解通用的建立神經網路模型流程後,在等等的jetbot操作中會比較順利且心中有架構。

 

PyTorch(15 min)

由於這次挑戰是要一下午教會人工智慧概念跟體驗Jetbot,所以PyTorch只有概論介紹、解釋為何選用Pytorch的比較表、以及提供延伸中文資源,並沒有實作。

 

Jetbot 實際操作(105 min)

這部分就是本次挑戰的重頭戲,希望學生這次上課過後,可以學會使用jetbot進行影像資料收集、訓練模型、並建立一個可以實際避障以及循道路行走的好模型。官方提供的五個範例(Basic motion, Collision avoidance, Road following, Object following, Teleoperation)中,我們選用前三個並做些微調來帶學生體驗上述流程。

由於高一學生的程式經驗不一致,所以對於沒有學過的學生,會用簡單範例帶他們先認識變數、程式執行的順序、介面使用方法等等,以及用英文單字的方式認識指令。

Basic motion階段能帶給學生快樂的體驗。在教基礎指令的時候,會引導學生統一用盒子把車子架高讓輪子不碰地的試車。把基礎指令教給他們後,學生為了讓車按自己的方式動起來,就可以自己做出千變萬化的組合。這階段我們有準備兩個場地讓不滿足於在桌面或地上跑車的學生可以在場地上玩。

Collision avoidance階段,由於時間短暫,所以是準備好一定的free/blocked影像資料,讓學生蒐集新的影像資料疊加在原本影像資料集上。由於在認識機器學習及深度學習階段已經講過資料蒐集及分成訓練集、驗證集、測試集的觀念,這階段教學生怎麼蒐集資料才會有更好的訓練結果,例如:不同角度或距離看到障礙物,你會希望車子撞過去還是避開、不同障礙物個數、不同光影、手如果出現在前方是否算障礙物等等的問題思考,學生們都可以立馬理解。訓練模型的過程中,剛好可以趁機介紹程式細節。而實測階段比較誰的模型比較好後,有興趣的人會願意在下課後的自由測試時間留下來新增影像資料重新訓練。

Road following階段,學生已經熟悉了「影像收集->訓練模型->實測」的流程,所以同樣著重在教如何蒐集好的資料集(疊加在我們提供的基礎影像資料上)、訓練時間帶大家了解程式細節。實測的時候就可以看出大家的功力差異了,先讓他們自己嘗試,再解說 Speed Control, Steering Gain Control, Steering Bias control, Steering kd的對應功能,大家立馬有好的表現,而且會交叉測試不同數據,很有實驗精神。完整做完一輪就進入自由測試時間,願意留下的同學很多,看到他們認真收集資料想獲得更好的模型真的很感動。

ps. 原本官方的程式需要使用搖桿來蒐集影像資料,被我改成可以直接在收集資料介面上遙控車子,能銜接到Basic motion的程式教學,並減少認識搖桿的時間。如果上課時間足夠也很想帶大家玩搖桿。

挑戰一個下午教高一學生理解人工智慧、深入淺出NVIDIA Jetson Nano以及Jetbot,雖然最後因為訓練時間真的太長有點超時,但以他們在自由測試時間的表現,可以自己蒐集好的影像資料、訓練模型及實際跑時調整合適的參數,真的很有成就感。

這次的挑戰最有趣的點在於上課講速在觀念部分大概要跟這支影片一樣快,並且要設計節奏緩和點以及讓大家眼睛一亮的幾個橋段,實作的時候會用正常速度以強調這些點很重要。講課的時候要不斷觀察學生反應有沒有跟上來調整上課速度,並且激勵他們挑戰自己。其中有個學生上課不斷的做關鍵字筆記,而且下課的時候還來問獎勵函數跟損失函數的差別,以及詢問為何Collision avoidance跟Road following的labeling方式不同,是不是有什麼應用面問題或是優缺點。遇到認真聽課並能問好問題的學生,是每次上課的最大的收穫。有這樣的好學生,應該可以擅自判定挑戰成功了吧!

期待其他有教jetbot的老師們分享上課經驗!

MIT App Inventor 視覺辨識範例 –水果分類器

$
0
0
作者/攝影  曾吉弘
時間   2小時
成本
  •   Android手機 (>8000)
難度   6 (難度10)
材料表
  • Android手機

近期各種AI視覺辨識網站愈來愈多啦,讓入門者不需要寫複雜的程式,只需要提供所要辨識目標的資料就能開始訓練神經網路。MIT App Inventor 建置了 Personal Image Classifier 網站之後,您無需編寫任何程式碼,只要整理好想要分類的目標照片,上傳到網站並訓練(訓練時間端看您提供的影像資料數量而定),就可以把訓練好的 .model 檔上傳到您的 App Inventor 專案中。離線視覺辨識app 就完成囉!

阿吉老師說:這並不代表練習程式時所培養的能力不重要,而是讓入門門檻降低,如需要對於神經網路或深度學習有更深入理解,還是需要打好基本功喔!

訓練神經網路

請參考本文  https://blog.cavedu.com/2019/08/27/app-inventor-image-classifier

 

App Inventor端

Designer頁面設定

請由MIT App Inventor 網站下載 personalImageClassifier擴充檔,或由此下載 .aia原始檔。再匯入您的 App Inventor 專案即可。請注意,PIC元件無法像 Sound元件一樣,無法透過程式指令在執行過程中修改所使用的 model (Sound元件可以隨時修改其 Source 來源檔案)

本專案元件說明如下,您之後可以根據個人需要來修改介面配置:

  • personalImageClassifier 元件(本文後簡稱PIC元件),別忘了匯入喔
  • 一個 WebViewer 用來即時預覽相機的畫面
  • 切換前後鏡頭的按鈕 (ButtonSwitch)
  • 拍照的按鈕(ButtonTake)
  • 顯示結果用的標籤 (Label_Result)

Blocks

STEP1   PIC元件相關設定

當PIC元件準備完成之後,把在PIC網站上訓練好的模型的 ModelLabel 顯示在Label 上。可以先檢查有沒有匯入錯的辨識模型檔。

STEP2 

如果PIC元件發生錯誤的話,把 errorCode 顯示出來

STEP3  切換前後鏡頭與辨識影像資料

按下 ButtonCamera 之後,切換前後鏡頭。另外按下 ButtonTake 按鈕,呼叫 PIC元件的 ClassifyVideoData 方法來辨識,另外也有 ClassifyImageData 方法來辨識單張照片。

STEP4  取得辨識結果與信心指數

在PIC元件的 GotClassification事件中,所回傳的 result 是 (類別名稱, 信心指數) 的清單,例如 (apple, 0.763)。信心指數原為 0~1之間的小數,在此 x 100 轉換為百分比。

在此設定如果信心指數 (value) > 60的話,就把結果顯示出來,反之則顯示 “看不懂”。您也可以自行調整這個閾值。

執行畫面

開啟程式會直接開啟相機鏡頭並顯示於app中的 WebViewer元件,隨後會看到 ModelLabel (模型可分辨的影像類別),對準要辨識的物體按下 [Take Picture]按鈕就可以辨識了,看看訓練的結果如何吧~

如果想要自拍辨識自己的表情的話,也可以切換前後鏡頭喔

程式初始畫面

成功辨識為蘋果,信心:54.869

成功辨識為橘子,信心:72.119

成功辨識為草莓,信心:95.215

放開按鈕,顯示對應訊息

 

 

最後附上之前我分享 [AI 與 科技教育] 的影片,其中很重要的觀念就是”資料導向”:只有你自己才知道哪些是正確或足夠好的資料,一定要用心整理資料喔!

 

相關連結:

[商品說明]人工智慧自走車教學模組 JetBot使用說明

$
0
0

人工智慧自走車教學模組 JetBot 使用須知:

一、請正確拿取自走車

請用雙手從車子兩邊拿起,並用兩手拿穩車底盤(示意如下圖)

 

二、在桌面上測試時,請正確放置

車子開啟電源前/測試程式時,請將車子架高並將雙輪離開桌面。

三、請勿隨意拆裝攝影機模組

此攝影機模組提供更好的體驗,請勿拔掉攝影機與開發板之間的軟排線。

相關影片:

功能展示:

設計圖形化介面:

搖桿控制:

 

Viewing all 678 articles
Browse latest View live