20221123鳳山國中
主題:用Scratch玩AI
本教材講義:http://gg.gg/20221123fs
研習日期:111.11.23 (三)下午13:00~16:00
地點:鳳山國中藝術大樓二樓
講師:黃文玉老師 (shspswenyu@gmail.com)
一、認識AI
與AI做朋友
教育部出版的【與AI做朋友】: https://youtu.be/pLAfujAH81k(簡介)
下載:https://market.cloud.edu.tw/list/ai.jsp (要先登入)
國小為【相逢篇】(有分第一版、第二版及教材與教案)
國中:相識篇、高中:相知篇
國小入門課程:
和AI做朋友線上課程:
中華開放教育平台(要先註冊)
目錄如下右圖
與AI做朋友內容簡介
生活中的人工智慧
人臉辨識
車牌辨識
語音輸入
語音助理
辨識歌名(Shazam...)
...
圖靈測試
1950年代,當時科學家圖靈提出【機器能否思考?】這個問題
測試者透過鍵盤與另一房間內的機器或人自由對話,如果測試者將與他對話的機器誤認為是人,就代表該機器通過【圖靈測試】,表示該機器具有智慧!(如右圖,圖取自維基百科)
人工智慧發展起飛的原因
目標改變
不再是讓機器產生智慧方面發展
而是希望讓人工智慧解決特定的問題,提升人類處理事情的準確度!(不是包山包海)
網路的崛起,資料蒐集更為容易
硬體設備的進步,電腦計算能力越來越快
強AI與弱AI
強AI:
又稱通用型AI,是指能夠執行所有人類的工作並擁有和人類一樣的智慧,其思考和行為判斷能力和人類一樣好,甚至更為出色。
能夠取代人類的人工智慧。
弱AI:
又稱特定AI,則是指「能下圍棋」、「能自動打掃」、「擁有豐富的醫療知識」等,在特定領域可以做得跟人類一樣好,甚至更好。是可以模擬人類的智慧。
現今的所創造出來的人工智慧都屬於此類,還沒發展出到強AI的境界。
跳恐龍遊戲:
電腦會根據【成功的經驗】來學習,進而達有自動控制的功能(自己跳)
機器如何學習?
監督式學習
人工智慧的【監督式學習】就跟小孩子學習一樣,在學習的過程中,接收到的資料都有標註【標準答案】(這是貓、這是狗),當有新的資料要做判斷時,就能藉由現有資料所學習到的經驗,獲得較精準的判別。
世界萬物彼此都存在著差異性,但是同一種類的事物,一定會有相同之處,當要訓練人工智慧並供給大量資料前,就要先找出這些資料的特性,而所謂的特性,就是指資料具有的【特徵值】」。(如:貓有哪些特徵值?) http://gg.gg/featureAI3
藉由特徵值的蒐集,將資料依照某些規則加以整理,然後產生一套區分該物件的原則,藉此建構出分類器(Classifier),新的事物藉由分類器去判斷是屬於哪一個分類。
最短距離分類器 (Nearest Neighbor Classifier)
最短距離分類器是利用新進未知資料的特徵,與已知類別資料的特徵比較距離,看看新進資料與哪個類別的特徵最相似(即資料相似度最高),就將新進的資料預測為該類別。
近朱者赤、近墨者黑
KNN (K-Nearest Neighbor Classifier)
不同的K值會導致不同的分類結果
決策樹
人工智慧如何分析資料、擷取特徵建立模型呢
決策樹是一種樹狀結構,能清楚的記錄決策過程,也能協助訓練機器,讓機器幫助人類解決分類的問題
決策樹屬於監督式學習的一種方法,是一種樹狀結構,常用來做資料分類,我們能透過現有的資料建構一棵決策樹,為機器提供良好決策的依據。
廣告:電腦也會選土豆
非監督式學習Unsupervised Learning:
訓練的資料沒有事先給定的【類別】標記,只能透過資料間彼此相互比對,計算出彼此的關連性。
藉由非監督式學習來處理「分群(Clustering)」問題,利用現有資料的特徵分成若干個不同的群體,每個群體中資料的特徵會是相近的。
「分群」的概念簡單來說就是將相近的資料彼此分在同一群體。
K-means演算法 https://scratch.mit.edu/projects/764423748/
階層式分群
參考圖書
用Scratch輕鬆學AI (宇宙機器人)
邊玩邊學使用Scratch學習AI程式設計(碁峯) (後面的部份會用到)
二、國小AI教學資源
限時塗鴉
人工智慧系統會嘗試猜你畫了什麼?
也會把你所畫的記錄下,並進行學習!
保護海洋的人工智慧 (AI for Oceans)
這是魚、這不是魚
不認識沒有沒有提供的圖片(如海豚、螃蟹、海星...),所以要第二次訓練
避免偏見
所提供的數據越精準,電腦就將學習的越精準
AI繪圖:Disco Diffusion
利用文字產生圖片
使用AI來進行藝術創作,依據輸入的文字來產生各種風格的畫作
影片介紹教學
登入自己的Google帳戶
點擊 https://colab.research.google.com/github/alembics/disco-diffusion/blob/main/Disco_Diffusion.ipynb
點擊【複製到雲端硬碟】 ,把這頁面拷貝到自己的雲端硬碟,將原來頁面關掉
運行前要載入一些預備的程式碼,點擊【執行階段】/【全部執行】
預設的繪圖主題是燈塔
出現在5.Create the video之前
修改提詞文字
在4.Diffuse!之前
預設為: 0: ["A beautiful painting of a singular lighthouse, shining its light across a tumultuous sea of blood by greg rutkowski and thomas kinkade, Trending on artstation.", "yellow color scheme"],
包含
【作品類型】:如唯美水彩畫、寫實插畫...
【畫作主題】:如燈塔
【細節描述】:如人事時地物形容一下
【畫作色調】:
【畫家姓名】:
【參考網站】: Trending on artstation (是一個藝術交流平台),可有效提升畫作品質
把上面紅色字改成自己想用的提詞
Trending on artstation 為使用風格
"yellow color scheme"為色系,不要也可以刪除
我改為【一座位於河流邊的百年鬼屋】,使用翻譯 :A century-old haunted house by the river
圖片相關設定
3. Settings
batch_name: 任務名稱(也是圖片儲存時的資料夾名稱) test
steps:算圖的次數(越大畫質越好,但時間也會越久),一開始先不要設太高 100
width_height_for_512x512_models: 圖片寛高值,設直向或橫向圖,寛高值為64的倍數 640X512
...
4. Diffuse!
display_rate: 預覽圖更新頻率,可設小一點早點看到圖片 10
n_batches: 圖片的總張數,先設1張就好了
少女诗人小冰
上傳圖片,由圖片產生文字
提示文字
三、用Scratch玩AI
要讓機器(電腦)像人類一樣具有學習與判斷的能力,就要把人類大腦學習與判斷的流程轉移到機器(電腦),基本就是運用數據進行【分析】與【預測】,包括下列四個流程:
獲取數據:仿人類的大腦經由收集大量的數據,進行分析與處理判讀
分析數據:仿人類的大腦分析收集到的數據找出可能的規則
建立模型:仿人類的大腦找出可能的規則後,會利用這個規則來建立【模型】(model)】
預測結果:等數學建模完成了,再將新的數據輸入模型就可以預測結果
日本人寫的客製化Scratch
要允許使用鏡頭的權限
擴展添加所需的積木
先擴展添加【ML2SCRATCH】
ML:Machine Learning (機器學習)
圖像辨識
訓練機器認識剪刀、石頭、布的形狀
訓練時背景要簡單一點
各種手勢儘量占滿整個畫面
一邊改變角度或位置,一邊拍攝
每一類約拍攝20張
完成如下程式
進行剪刀、石頭、布各種手勢的學習
上傳學習資料時,會把目前既有的資料庫給覆蓋掉
存檔時,除了存程式檔也要記得把學習資料下載
跟電腦玩剪刀石頭布
四、Teachable Machine
Google出品的
訓練電腦辨識你的圖片、音訊和姿勢。
輕鬆快速地建立機器學習模型,以便用於網站、應用程式和其他地方,不需要編寫程式或具備專業知識。
連結網址:https://teachablemachine.withgoogle.com/ (移到最下方改為中文版)
再度回到Stretch3 (客製化的Scratch)
擴展添加TM2SCRATCH積木
我之前訓練出來的模型網址:https://teachablemachine.withgoogle.com/models/NmGTObrCG/
叫出已建好的模型來
請利用此做出與電腦玩的剪刀石頭布遊戲
聲音辨識
這積木還可使用Teachable Machine訓練出來的聲音模型
再度回到Stretch3 (客製化的Scratch)
擴展添加TM2SCRATCH積木
我訓練出來的模型網址:https://teachablemachine.withgoogle.com/models/4hjDnW8MR/
如果麥克風沒有作用,做以下的處理
處理後,需重新載入這個網頁,新設定才會生效
姿勢辨識
TM的姿勢辨識
我的舉手模型 https://teachablemachine.withgoogle.com/models/SxD12EUNt/
肢體辨識
再度回到Stretch3 (客製化的Scratch)
擴展添加Posenet2Scratch積木
一共可以量測出以下部位的X、Y座標:鼻、左眼、右眼、左耳、右耳、左肩、右肩、左肘、右肘、左手腕、右手腕、左腰、右腰、左膝、右膝、左腳踝、右腳踝,(我的右眼在鏡頭內也是在右邊,除非鏡頭改用【翻轉】)
變裝秀
粉紅球(小丑鼻)
X,Y座標:鼻子的X、Y座標
距離遠近的大小修正:(兩眼距離/60)*100 %
眼鏡
X,Y座標:鼻子的X座標、任一眼的Y座標
距離遠近的大小修正:(兩眼距離/30)*100 %
這邊的使用很簡單,就看如何去應用,所以這邊可設計很多簡單的遊戲,如
如用鼻子移動猴子去接香蕉
五、與硬體的結合
OSEP scratch3
官網:https://sites.google.com/view/scratch-web-serial-api/home?authuser=0 、https://sites.google.com/view/osep-scratch3/
線上版:https://osep-scratch.github.io/app/app/ 、https://estea8968.github.io/osep_web_serial/app/
支援:
arduino (先要燒錄韌體)
ESP32 (先要燒錄韌體)
測試點亮內建LED燈(arduino:D13、nodemcu-32S:GPIO2)
陳國全老師的教學影片: