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

今年啟動的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的老師們分享上課經驗!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *