圓創力科技.MakeBlock TW

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

掃一掃,訪問微社區

查看: 797|回復: 0

轉貼:使用mBlock V5訓練並使用深度學習視覺

[複製鏈接]
magiccar 發表於 2018-2-10 00:35 | 顯示全部樓層 |閱讀模式
這是一個關於如何使用mBlock 5瞭解和教學深度學習的教程。可以在這裡下載它的原始版本(排版遠比論壇上的版本好)

本作品採用知識共用署名 4.0 國際授權合約進行許可。

mBlock的最新版本mBlock 5增加了深度學習視覺模型的功能。它是體驗、學習和製作視覺相關AI應用的重要工具。因為在mBlock 5中,使用者可以快速訓練一個機器學習模型,並將其用在Scratch程式設計中。mBlock 5還可以和機器人等硬體結合,創造豐富的互動效果。

注意:使用深度學習功能需要電腦有WebCam,並且對電腦性能有一定要求。而且現在尚為實驗版本。請在使用它授課之前檢驗教室所用的電腦是否能夠流暢使用該功能。

1. 下載和安裝mBlock 5
請在流覽器中打開下列頁面,選擇適合自己的作業系統安裝mBlock 5預覽版本。



2. 啟用“深度學習”功能
在螢幕下方點擊熊貓角色將角色切換為熊貓


然後,點擊“擴展”按鈕,打開擴展清單


在彈出的擴展列表中,點擊“深度學習”右上角的加號安裝擴展


為什麼要切換到熊貓角色?因為在mBlock 5中,擴展是和角色相關的;一個Arduino或者micro-python機器人沒有能力運行複雜的機器視覺模型,所以在這些角色裡就看不到深度學習擴展。如果想用它來操控機器人該怎麼辦呢?可以使用通訊變數和機器人通訊。不過這就是另一個話題了。

3. 訓練一個機器視覺模型
下面將用一個“石頭剪刀布”的程式作為例子,講解如何用用深度學習視覺模型。
一般來說,使用機器學習模型,需要經過“訓練”、“檢驗”、“應用”三個環節。如果要做一個能識別石頭剪刀布的應用,第一步就是教會電腦什麼是“石頭”,什麼是“剪刀”,以及什麼是“布”。


知識點:我們要製作的機器學習模型可以在接受一個輸入(比如看到一張圖片)的時候,給出這個輸入的分類(比如這張圖片是“剪刀","石頭"還是”布“)。這種模型又叫做分類器。分類器在生活中有很多應用,比如停車場記錄車牌號,就是通過攝像頭拍下車牌,然後將每一個數字分類到0-9其中的一個。


添加擴展後,在新出現的DL分類中,點擊“訓練模型”就可以進行模型的訓練了。


如果你的電腦有多個攝像頭,可以在該介面的左上角選擇使用哪個攝像頭。


選擇合適的攝像頭之後,用手做出“石頭”的動作,然後用滑鼠按住第一個分類項目上的“學習”按鈕,讓機器學習模型認識什麼是“石頭”。在顯示樣本數為10個以上的時候,鬆開滑鼠結束學習。


知識點:機器是怎麼學會什麼是“石頭”,什麼是“剪刀”的?這需要人給它照一些照片,並告訴它“這就是石頭”,“這就是剪刀”。我們照的這些照片叫做“訓練樣本”,樣本中“這就是石頭”這樣的資訊叫做“標注”。很多大型公司會專門雇人做標注的工作:整天告訴電腦諸如“這是貓的左眼”這樣的資訊。因此,像百度或者穀歌這樣的大型互聯網公司經常在機器學習領域領先,就是因為大家每天都使用它們的產品,為它們提供了大量的訓練樣本。

知識點:我們要做的這種機器學習模型叫做“監督學習”模型。顧名思義,就是機器在我們提供的“有標注的樣本”的監督之下進行學習。還有一種學習方式叫做“無監督學習”,比如讓電腦自己在沒有標注的情況下對一些水果的照片進行分類。最後的結果通常是“這些照片是一類”,“那些照片是一類”。

想一想:“監督學習”可以有那些用途?“無監督學習”可以有那些用途?


用同樣的方法,訓練模型識別“石頭”和“布”。然後,在每個分類上面的框中,將分類名稱改為“石頭”,“剪刀”和“布”


這時,在攝像頭前面變換不同的手勢,可以看到每個分類中間的百分比會不停地變化。它代表了電腦認為看到的圖像在各個分類的信心。信心最大的分類,就是電腦進行分類判斷的結果。



知識點:“信心”是什麼?信心是機器學習模型在經過訓練之後,對於一個新的輸入計算得到的結果。它並不是概率。概率指某個隨機事件發生的可能性,這裡的“信心”和概率無關。只是説明機器學習模型判斷它的結果是什麼。

試一試:嘗試幾個猜拳動作,並試試讓其他同學做這樣的動作,看看電腦能否準確地判斷動作分類?可以嘗試30次,在紙上記錄電腦正確了幾次,錯誤了幾次。用模型判斷正確的次數,除以嘗試的總次數,就可以判斷機器學習模型的效果。大家把機器學習的效果叫做它的性能。

想一想:和旁邊的小組比較,大家的模型中誰的效果比較好?為什麼?能否試著改進自己的模型性能?是不是樣本越多性能越好?還有其他的提高模型性能的方法麼?

知識點:欠擬合和過擬合。如果樣本過少,電腦就會像盲人摸象一般,來不及學習一個事物的特徵,導致性能低下,這種情況叫做欠擬合。欠擬合的反面過擬合,說的是機器學習模型過度把握提供樣本的具體特徵,無法對一般的情況做出正確的反應;比如說能認出某個人某個角度的手勢是“剪刀”,卻看不出其他人其他角度的手勢是“剪刀”一樣。過擬合就如同一些靠死記硬背來學習的同學,無法將學到的知識應用到不斷變化的環境中。


訓練完成之後,點擊“使用模型”按鈕,就可以在mBlock中使用模型編寫程式了。使用旁邊的“新建模型”按鈕可以清空當前的模型,重新訓練一個新的模型。


4 在mBlock裡使用訓練的機器學習模型        

在“使用模型”後,會發現DL分類下增加了三條語句塊:“識別結果”,“(某分類的)信心”,和“識別結果為(某分類)”。


“識別結果”可以得到電腦認為它所看到的事物對應的標記。它是一個字串,比如“石頭”或者“剪刀”

“xx信心”可以得到電腦對某一個分類的信心。它是大於0小於1的一個小數,就像上面看到的百分比一樣。你可以用它做出更具體的判斷,比如在各個信心都小於特定數值的時候,認為電腦還沒下結論。

“識別結果為xx”得到一個是或者否的結果,可以放在“如果”語句塊中作為條件,快速根據不同結果執行不同的程式。

有一個特別需要注意的地方:在使用模型之前,要記得點擊“打開識別視窗”。只有當識別視窗打開的情況下,電腦才會使用訓練好的機器學習模型。因為機器學習模型太費資源了;在不需要的時候打開會拖慢電腦的速度。



小知識:怎樣讓機器學習模型變得更快呢?很多人會使用GPU(圖形處理器)進行計算。CPU(中央處理器)常常被稱為電腦的大腦。和它不同的是,GPU是專門負責圖形計算的晶片,一般被放在顯卡裡,讓電子遊戲變得酷炫。它讓遊戲變得更炫的原因是因為它能快速地計算線性代數(一門大學中的數學學科),計算線性代數的速度決定了計算三維空間中的位置、角度、光影變換的速度(也就決定了在相同時間內遊戲的畫面有多精美)。同樣地,機器學習模型也應用了很多線性代數計算,因此,有很多人用GPU(顯卡)來加速機器學習的計算速度。現在,一些國產手機已經使用自己研發的專門晶片來做機器學習——這樣,它的照相機就能快速識別正在拍攝的物體,並通過圖片處理讓相片更加漂亮。

小知識:訓練一個模型所需要的計算能力要遠遠大於使用模型所需計算能力。因此,很多人會用很多電腦“集團軍作戰”(這叫做計算集群)或者使用超級電腦來訓練一個模型,然後在小型電腦(比如在手機)上應用模型。我國的“天河”系列超級電腦計算能力一直位於世界前茅呢。趕快搜索“天河二號”瞭解一下吧。


剩下的,就看你的Scratch技術啦。想想能怎麼使用這個模型。下面是一個特別簡單(但無趣)的例子。試著把它變得有趣吧。



試一試:將mBlock的其他語句塊和機器學習語句塊一起使用,看能製造出什麼樣的創造發明。有自信的同學可以實現電腦和人對戰石頭剪刀布的程式。也可以看看,除了石頭剪刀布之外,還能讓電腦學會認識什麼東西。

想一想:除了識別車牌,機器學習模型在現實社會中還能有那些應用?

小知識:mBlock的機器視覺模型使用了被稱作“卷積神經網路”的技術(改編自Google Teachable Machine)。它能夠圖片中(重疊的)一片片區域逐漸抽象到更高的層次(見下圖)。卷積神經網路以優良的性能讓神經網路和機器學習再次成為熱潮(神經網路的概念在1943年就出現了哦),同時也允許mBlock在如此小的(十幾到幾十個)的樣本下達到不錯的機器學習性能。



圖片源自Wikipedia, Convolutional neural network


您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

QQ|Archiver|手機版|小黑屋|圓創力科技有限公司 IOP Robotic Technology Co.,Ltd Tel: 07-3924582

GMT+8, 2018-4-26 13:40 , Processed in 0.045095 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表