文科生是否也可以成為人工智能領(lǐng)域里的創(chuàng)客?答案是肯定的!
素為是一名在司法系統(tǒng)里工作的法律工作者,本科就讀于法律專(zhuān)業(yè)。同時(shí),他還是一名計(jì)算機(jī)愛(ài)好者,作為智能硬件的創(chuàng)客,平時(shí)他喜歡用電子硬件做一些有趣的項(xiàng)目。
幾年前,Alpha Go 對(duì)戰(zhàn)圍棋大師李世石的畫(huà)面令世界贊美人工智能的發(fā)展速度,但是素為卻覺(jué)得“這還不夠酷”!Alpha Go 是通過(guò)它的研發(fā)者黃士杰來(lái)執(zhí)棋的,直播畫(huà)面看起來(lái)還是兩個(gè)人在對(duì)弈,怎么能說(shuō)是人機(jī)大戰(zhàn)呢?
“加個(gè)機(jī)械臂執(zhí)棋,很難嗎?”從那時(shí)起,素為就決定要做一個(gè)真正的象棋機(jī)器人,還向朋友夸下了???。為了讓正在一天天長(zhǎng)大的孩子少看電子屏幕,通過(guò)下象棋鍛煉思維能力,素為覺(jué)得必須加快制作出真正的象棋機(jī)器人。
硬件的選擇和系統(tǒng)框架的搭建
之前素為準(zhǔn)備用 PC 電腦來(lái)實(shí)現(xiàn)這個(gè)想法,后來(lái)發(fā)現(xiàn)NVIDIA Jetson Nano開(kāi)發(fā)套件可為全桌面 Linux 給予開(kāi)箱即用支持,并且與許多常見(jiàn)的外部設(shè)備和配件兼容,相關(guān)的開(kāi)發(fā)教程也很豐富。
“這個(gè)小小的板子功耗不高,而且樹(shù)莓派能做的它基本都能實(shí)現(xiàn),關(guān)鍵是還具備 AI 功能,這可以滿(mǎn)足我的需要,”素為表示。
很快,素為就規(guī)劃出了一個(gè)系統(tǒng)框架:
素為的目標(biāo)就是要做一款名副其實(shí)的“人機(jī)對(duì)戰(zhàn)”中國(guó)象棋機(jī)器人。在制作過(guò)程中,他以 Jetson Nano 為中控主機(jī),利用其邊緣計(jì)算能力,無(wú)需聯(lián)網(wǎng)即可實(shí)現(xiàn)對(duì)棋盤(pán)的視覺(jué)識(shí)別和棋步策略計(jì)算,再運(yùn)用一部 XYZ 三軸滑臺(tái)加氣泵吸盤(pán)即可挪動(dòng)棋子,實(shí)現(xiàn)真正的“人機(jī)對(duì)戰(zhàn)”。
使用這個(gè)系統(tǒng)進(jìn)行人機(jī)對(duì)弈的流程如下:
-
人類(lèi)下一步棋;
-
人類(lèi)點(diǎn)擊 GPIO 按鈕,Jetson Nano 啟動(dòng)指令;
-
棋盤(pán)上方的攝像頭對(duì)著棋盤(pán)拍攝 1 張照片;
-
運(yùn)用 OpenCV 對(duì)照片進(jìn)行四角對(duì)齊、裁切邊緣等處理;
-
將棋盤(pán)部分裁切為 9×10 個(gè)小圖片;
-
運(yùn)用事先訓(xùn)練好的圖片分類(lèi)模型在 Jetson Nano 上進(jìn)行推理,該模型可分辨 15 種情況(7 種紅方棋子、7 種黑方棋子、無(wú)棋子);
-
將識(shí)別結(jié)果拼接為棋盤(pán)狀態(tài),以 FEN 規(guī)范格式進(jìn)行表達(dá);
-
將 FEN 文本傳遞給開(kāi)源中國(guó)象棋引擎 elephantfish,在 Nano 上進(jìn)行計(jì)算,獲取機(jī)器決定走的下一步棋;
-
生成并執(zhí)行 gcode 指令控制滑臺(tái)模組和氣泵,將某個(gè)棋子在棋盤(pán)上挪動(dòng);
-
機(jī)器執(zhí)行完畢,進(jìn)入等候狀態(tài),等待人類(lèi)發(fā)出下一步棋及按鈕指令
從以上流程中,我們可以看到 Nano 作為主控機(jī),除了指揮全過(guò)程運(yùn)轉(zhuǎn),在第 4 至第 8 步驟為圖片預(yù)處理、棋盤(pán)識(shí)別和計(jì)算下棋策略均提供了必不可少的算力。
圖1:步驟4(a)
圖2:步驟4(b)
克服深度學(xué)習(xí)的挑戰(zhàn)
作為一名專(zhuān)業(yè)學(xué)習(xí)法律的文科生,素為表示對(duì)深度學(xué)習(xí)其實(shí)是一知半解的,“就是能夠把開(kāi)源代碼 debug 跑起來(lái)那種水平。”為了把象棋機(jī)器人做出來(lái),素為在 Jetson Nano 上先后用 TensorFlow 嘗試了 VGG、ResNet 和 Inception。
“要么調(diào)參數(shù)總是調(diào)不好,要么準(zhǔn)確度不高,”素為說(shuō),“曾經(jīng)一度很沮喪。”
然而,功夫不負(fù)有心人,一個(gè)偶然的機(jī)會(huì),素為看到 NVIDIA 與百度合作的EasyDL平臺(tái),在該平臺(tái)上,可以零代碼訓(xùn)練,并將模型一鍵部署在 NVIDIA Jetson 設(shè)備上。于是素為手工準(zhǔn)備和標(biāo)注了 4000 張訓(xùn)練素材圖片,這些圖片有的清晰,有的模糊,有的用光照亮、有的故意制造陰影,還有不同的旋轉(zhuǎn)角度。之后在此基礎(chǔ)上,對(duì)素材圖片進(jìn)行批量加噪點(diǎn)處理,一共生成了 5 萬(wàn)張圖片數(shù)據(jù)用于深度學(xué)習(xí)訓(xùn)練。經(jīng)過(guò) EasyDL 的訓(xùn)練,生成了“圖像分類(lèi)”模型(因?yàn)檫\(yùn)用場(chǎng)景有限可控,因此該模型不怕過(guò)擬合,準(zhǔn)確率 100%),之后一鍵部署在 Jetson Nano 上,再配合素為寫(xiě)的主代碼(https://gitee.com/lawup/chess-robot.git),象棋機(jī)器人終于運(yùn)轉(zhuǎn)起來(lái)了!
成為 Jetson 百萬(wàn)開(kāi)發(fā)者一員
開(kāi)心地看著自己的孩子和老父親與機(jī)器鏖戰(zhàn)幾盤(pán),歡聲笑語(yǔ)無(wú)疑是這一路艱辛的最好補(bǔ)償!
2022 年年底,素為帶著這個(gè)項(xiàng)目,參加了 NVIDIA 舉辦的Jetson Edge AI 開(kāi)發(fā)者大賽,榮獲特別獎(jiǎng)。
“很高興能成為 NVIDIA Jetson 百萬(wàn)開(kāi)發(fā)者的一員。最關(guān)鍵的是,我是用 NVIDIA Jetson Nano 套件做出來(lái)的,而且充分發(fā)揮了 Nano 的性能和效用。不得不說(shuō),人生就是這么神奇,雖然我一度都絕望了,但自己夸下的??诰妥约喝?shí)現(xiàn)!”素為談到這個(gè)項(xiàng)目,依舊一臉自豪。
素為用自己的開(kāi)發(fā)經(jīng)歷對(duì)廣大 NVIDIA Jetson 開(kāi)發(fā)者提出建議:“定下了目標(biāo)就一定要去實(shí)現(xiàn)。因?yàn)槭乔度胧江h(huán)境,很多東西需要編譯,這是一個(gè)比較漫長(zhǎng)的過(guò)程,一定要有耐心。在經(jīng)歷反復(fù)的嘗試和漫長(zhǎng)的等待后,終于成功的那一刻就會(huì)有一種‘山窮水盡疑無(wú)路,柳暗花明又一村’的欣喜感,讓你覺(jué)得’人間值得’ ?!?/p>
-
英偉達(dá)
+關(guān)注
關(guān)注
22文章
3648瀏覽量
89963
原文標(biāo)題:Jetson 百萬(wàn)開(kāi)發(fā)者故事 | 為了孩子的健康成長(zhǎng),他用 NVIDIA Jetson 做了一個(gè)象棋機(jī)器人
文章出處:【微信號(hào):NVIDIA_China,微信公眾號(hào):NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論