一、簡介
TensorFlow對於我們普通人來說一直是遙不可及的存在,都是大神們的遊戲。喵家最近將TensorFlow移植到喵家程式設計軟體Kittenblock中,希望能讓人工智慧,機器學習儘快落實。能讓普通用戶也能用上這個好用的機器學習框架,解決生活中的一些實際問題。TensorFlow的詳細教程可以自行查閱喵家相關Learn。這篇文章為了不嚇倒大家,基本不會展開TensorFlow的晦澀知識點,小編只會教你從零開始手把手教你做出一個智慧的即時識別的猜拳機器人,先讓大家體會到TensorFlow的簡單易用,大家自然會主動進行學習了。
知識點
TensorFlow機器學習框架 Kittenblock基本操作(scratch3.0)
DIY思路
猜拳機器人TensorFlow工作過程:
- 建立一個機械學習模型(模型建立需要一定的機器學習理論基礎,新手按照本文設置即可)
- 提供標定的學習樣本進行訓練(剪刀石頭布與空白情況各拍50張圖片)
- 將訓練好的模型對鏡頭採集回來的手勢進行預測
- 回饋預測結果,對結果進行條件判斷,對應控制舵機進行運動。
材料準備
- 可以跑Kittenblock的電腦一台
- USB攝像頭(筆記型電腦的攝像頭也是可以的)
- 電路板(Rosbot或者Robotbit)與三個舵機(可選)
- 樂高機械結構件(可選)
- 原廠提供的程序包
二、DIY步驟
1.解壓壓縮包
得到以下三個檔.
2.按兩下打開sb3程式
3.修改拓撲路徑與權重路徑
根據你下載的套裝程式解壓的路徑,對應修改程式。
如下圖的兩處修改:
如下圖的兩處修改:
小技巧:
直接去到對應的檔的目錄,點擊下,把目錄複寫粘貼,這樣就不會輸入錯誤了。 不過要記得,\mobilenet_244g.json 與 \mobilenet_244g.weights.bin 不能缺少。這裡新手很容易犯錯~
直接去到對應的檔的目錄,點擊下,把目錄複寫粘貼,這樣就不會輸入錯誤了。 不過要記得,\mobilenet_244g.json 與 \mobilenet_244g.weights.bin 不能缺少。這裡新手很容易犯錯~
4.點擊積木塊開啟攝像頭
點擊積木塊,scratch舞臺會出現攝像頭畫面,如果沒有出現畫面,請檢查你的攝像頭是否成功驅動(如果你電腦連接連著兩個鏡頭,例如筆記本本身自帶鏡頭,你再接了一個USB攝像頭,kittenblock默認會連上第一個攝像頭,一般就是驅動起筆記本攝像頭,如果你要用USB攝像頭,你需要去裝置管理員將本機攝像頭禁用掉。)
5.點擊積木塊建立模型
積木塊群點擊的一瞬間,有個黃色邊框,然後又恢復原狀,說明這段積木塊已經被執行了。
6.點擊積木塊進行手勢採樣
首先我們先採集空白圖,就讓鏡頭採集空白的圖片
再依次採樣剪刀圖,採樣過程中(積木塊邊框亮),變換下剪刀手的方向角度,讓樣本具有差異性,這樣訓練出來的模型適應性比較強。
採樣石頭圖
採樣布圖
7.如果採樣有誤
如果在以上的採樣過程中,採集有誤(採樣手勢有誤),就要需要點擊以下的積木塊,把之前採集過的圖片資料全部刪除掉。
然後重複手勢採樣步驟(空白、剪刀、石頭、布)
8.將樣本導入模型並進行訓練
點擊積木塊群
.
訓練20次數,訓練需要一點時間,所以我們按鍵盤F12(window系統),調出後臺,可以看到訓練資料在跑動。
.
從0跑到19,這樣20次就訓練完成,也可以看到函數在收斂。
.
訓練20次數,訓練需要一點時間,所以我們按鍵盤F12(window系統),調出後臺,可以看到訓練資料在跑動。
.
從0跑到19,這樣20次就訓練完成,也可以看到函數在收斂。
9.訓練完成後進行應用
10.利用預測結果控制舵機
做一個重複執行函數,對機器學習結果進行條件判斷。對應調用石頭、剪刀、布函數
視頻運動於舞臺>100,這個積木塊可以理解為,當讓攝像頭影像有變化時,才進行判斷,否則攝像頭一直頻繁判斷,比較消耗電腦的記憶體,電腦消耗記憶體過大會導致軟體藍屏。
視頻運動於舞臺>100,這個積木塊可以理解為,當讓攝像頭影像有變化時,才進行判斷,否則攝像頭一直頻繁判斷,比較消耗電腦的記憶體,電腦消耗記憶體過大會導致軟體藍屏。
石頭剪刀布函數實際就是控制三個舵機不同的運動角度,把對應的手勢舉起來。(這裡主控板用了Rosbot,你也可以用Robotbit)
.
例如石頭函數:
.
控制A2舵機舉起來!
.
例如石頭函數:
.
控制A2舵機舉起來!
硬體如下:
三、如何提高識別度
樣本的數量
樣本數量越多肯定越好,不過考慮到工作量的問題,一般取到恰當的樣本數量能達到預期效果就可以了。數量一般沒有什麼規律可以,簡單特徵至少50以上比較好,如果非常複雜特徵的物體,那幾百上千比較合適。這個具體設計到調參和應用環境,如果覺得識別正確率不夠,可以適當加大樣本量。
樣本的品質
所謂樣本品質,例如我們是攝像頭採集回來的圖片,第一個就是清晰度。拍照的時候和具體使用的環境是否一致,儘量一致的時候識別率是比較好。 如果環境比較雜亂,那就需要更高級的機器學習模型來適應。本文的程式只適合背景比較簡單的情況。還有一個就是一些光照度的原因都會影響到識別。樣本品質其實很好理解,就從一個普通人的角度去想,這樣圖片你怎樣看才是最容易認出來,這樣感興趣認知下。
訓練的次數
普遍認知上,訓練次數越多,識別度越準確。但是訓練次數過多,又會造成過擬合。類似一個人經常專做一些偏題難題,鑽牛角尖,做多後,一看到類似的題目,就馬上反應答案,不假思索,實際這個答案是錯誤的。這就是做得太多的壞處。過擬合和欠擬合在機器學習中也是一個很重要的專題。具體詳情可以自行查閱機械學習相關書籍。
所以自己可以稍微改動下訓練次數,看看結果如何
所以自己可以稍微改動下訓練次數,看看結果如何
四、後記
如果你操作得不到本文的結果,建議將程式重新打開。重新操作一遍。因為這個程式要求操作比較嚴格。錯了就要重來。第一次使用建議直接用我們提供的程式,防止你自己拖拽積木拖錯了,得不效果,多麼令人沮喪。
攝像頭採樣的背景儘量保持純色乾淨,這樣可以提升識別率。
攝像頭採樣的背景儘量保持純色乾淨,這樣可以提升識別率。
到應用階段,攝像頭採集的環境儘量保持與樣本採集一樣的環境。
Mac版本調出後臺按 Fn+F12
鏡頭一般的USB攝像頭即可,當然品質越好的攝像頭採集圖片越清晰,效果當然越好,十來塊,幾十塊錢的都夠用了,不用追求極致
看完本文,有些用戶說只是感性認知了機器學習,實際還沒真正瞭解到。確實這樣的,要知道TensorFlow這個機器學習框架是傾盡谷歌多少工程師才做出來,如果你僅僅是看這一篇就能把谷歌大牛們的精髓全部理解透徹,這只能說明TensorFlow的技術含量有點低。所以不要氣餒,活到老學到老。還是那句話,我們不要求每個人都成為程式架構師,我們只需要能掌握應用到這項技術到我們實際生活中,這就已經足夠了。
本實驗的TensorFlow運算實際就是跑在電腦中,所謂的線上,必須連著電腦。很多使用者問,喵家有沒有硬體可以離線跑TensorFlow?可以這麼說現在市面上的能跑TensorFlow的硬體還沒有多少個,並且不是一般人能玩得轉的。如果你想要可以離線跑TensorFlow的硬體,不妨到喵家群找大群主@C說,“我就是想要可以跑TensorFlow的離線硬體,Take my money!”,群眾呼聲高了,喵家的產品自然就會有了^^
本實驗的TensorFlow運算實際就是跑在電腦中,所謂的線上,必須連著電腦。很多使用者問,喵家有沒有硬體可以離線跑TensorFlow?可以這麼說現在市面上的能跑TensorFlow的硬體還沒有多少個,並且不是一般人能玩得轉的。如果你想要可以離線跑TensorFlow的硬體,不妨到喵家群找大群主@C說,“我就是想要可以跑TensorFlow的離線硬體,Take my money!”,群眾呼聲高了,喵家的產品自然就會有了^^
五、技術延伸
若您已經完成這個實驗。想進一步改動程式,改成自己想要的。比如識別其它物體,或者是不同人的頭像。這個可以實現嗎?
當然可以!小喵科技的黑科技每一個都是易用性與靈活性之間取平衡。
剪刀石頭布這個案例中。主要是針對攝像頭識別物體,主要是識別了4個樣本類型。
換句話來說,你可以更改程式,可以讓攝像頭識別其他物體(例如人頭像),而且樣本類型不限。TensorFlow這個機械學習框架的魅力在於,只需要稍微修改下參數即可以套用原來的機械學習模型,通用性十分強。
舉栗子識別五個樣本類型
六、你需求你有好想法?
TensorFlow是一個新生的事物,包括技術落地與應用都需要大家共同去討論和使用,如果你對喵家的TensorFlow有任何使用上的疑問或者建議,請聯絡小編~我們共同努力,哇哈哈哈~