石头剪刀布AI进化版
石頭剪刀布AI進化版
雖然人工智能目前以席卷之勢,滲透各行各業,但是大多數人還處在“百姓日用而不知”的狀態里,作為一個創客教師,對于新技術總是有與生俱來的敏感嗅覺,同時也希望把這些新內容教給我的學生,人工智能到底怎么玩?我的學生可以玩的轉么?我的學生年齡都比較小,只是學過一些scratch,這樣的水平可以玩AI么?帶著這些疑問,筆者開始了自己的探索之路,在看了編程貓、mind+、mblock、Kittenblock、machine learning for kids等等的軟件及網站之后,終于找到了一個看起來不那么復雜的又有AI插件的網站——廣問AI (open.thinklandai.com)。
今天筆者就帶領大家一起來用AI制作一個中國人小時候都會玩的游戲——石頭剪刀布,說起這個石頭剪刀布,它經常會作為我get新技能的第一個試水案例,比如會玩scratch之后我第一個做的是它,會玩microbit之后我第一個做的也是它,這次AI的版本當然也要做一次啦。
在開始制作之前,需要注冊并用郵件激活,否則無法看到我們需要使用的AI插件,另外推薦大家使用Google Chrome瀏覽器,其他瀏覽器似乎會有看不到工程模板的情況。
順利注冊完畢之后,回到主頁開始編程,進入后是標準的scratch3.0界面,唯一區別是菜單欄里多了一個叫工程模板的項目。
這里面藏著十個案例,可以幫助我們初窺AI的門徑,左下角的添加擴展里有我們心心念念的AI插件,有六、七種之多,找到它們之后,怎么用就成為了我們最關切的問題。
回到石頭剪刀布的主題,我們之前編寫的石頭剪刀布都是在scratch上設計一個按鍵,或者手拿microbit搖一搖,讓電腦知道我出拳了。我就想,人工智能里有一個分支叫機器視覺,簡單來說就是讓機器能夠看懂一些圖像,而機器視覺的一個重要分支是圖像分類,即給機器一些打上標簽的圖像讓機器學習過后,去對沒有打標簽的其他圖像進行分類,那么機器能否認出我們人類做出的剪刀、石頭、布三種手勢呢?
這需要我們對三種手勢進行采集,并打上各自的標簽,然后發送給機器去學習,生成一個識別模型。那么如何采集并訓練數據呢?
首先加載圖像分類插件,加載完畢之后關于訓練的積木只有一條,那么肯定就是它了。
因為我們有石頭、剪刀、布共三種手勢,所以當然也要訓練三次了,訓練時候要注意的是盡量保持背景一致,圖像中只出現一種手勢,否則電腦會混亂的,結果就是模型識別率不高。首先繪制一個叫訓練的空白角色,為了操作方便我分別用按下A、S、D三個鍵來收集序號1到3的圖像并在打上標簽后進行訓練,代碼如下:
注意:為了保證訓練效果,建議每一種手勢圖像要多一些角度和姿態,讓機器盡可能多的學到各種石頭、剪刀、布的手勢,同時當有手勢無法識別時,也可以回到訓練角色來,添加機器無法識別的手勢到對應標簽下。一般建議訓練至少40個數據。訓練成功效果如下圖。
如果我們發現訓練有誤,可以通過重置積木對現有數據進行重置,代碼如下:
生成模型之后,我們就要想辦法把模型應用到游戲中去,下面我們要上傳一個含有剪刀、石頭、布三個造型的角色。通過以下代碼做出三個造型快速切換的效果。并通過廣播并等待去完成圖像分類及判斷輸贏。需要注意的是圖像分類需要使用到攝像頭,所以系統會要求調用攝像頭,我們要用開啟攝像機的積木將攝像頭啟動,并按照需求設置透明度。
下面就是我們的檢測部分的代碼和判斷輸贏部分的代碼,我將用子程序的方式將兩部分代碼分開,這樣會容易觀看一些,首先是檢測部分的代碼。
然后是判斷勝負的代碼。
注意:我為了截圖方便把這段代碼分成了三個部分,分別是根據玩家出拳的三種情況,進行判斷,我們在真正使用過程中需要將這三段代碼連接到一起,就是以上三個部分的順序連接就好了,不存在判斷嵌套。
至此我們所有代碼都寫出來了,可以試試我們采用圖像分類方法做出來的可以識別手勢的剪刀石頭布了。
完整代碼如下:
PS:我們還可以在此基礎上再進行一些改進,如增添語音播報功能,讓你直接可以聽到勝負結果,增添姿態識別功能,判斷你的手腕確實進入了攝像頭范圍才開始圖像識別,對你的手勢分類,具體代碼怎么寫大家可以先自己試試。
大家也可以加我的微信13772884134,注明加群交流。
總結
以上是生活随笔為你收集整理的石头剪刀布AI进化版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个快速批量查询快递物流数据的小工具,可
- 下一篇: ocr手机号识别应用