模仿人臉表情的高逼真機器人概述:
和之前的跡APP一樣,我給顏藝Boy也提供了Arduino的庫函數(shù)支持,可以讓Arduino通過藍牙讀取人臉的表情、姿態(tài)、位置信息,庫的使用非常簡單,看示例代碼就知道了。支持通過藍牙輸出人臉數(shù)據(jù),開發(fā)板通過藍牙串口讀取,可以結(jié)合Arduino實現(xiàn)一些有趣的作品。見“相關(guān)文件”下載。
制作的手機APP截圖:
模仿人臉表情的高逼真機器人程序功能模塊:
模仿人臉表情的高逼真機器人視頻演示:
模仿人臉表情的高逼真機器人總結(jié):
其中關(guān)鍵點的檢測效果還不錯,而表情分類由于樣本量的原因稍有些許不穩(wěn)定(各種表情只用了25個訓(xùn)練樣本)
由于訓(xùn)練樣本運算量較大,所以先通過手機采集圖像數(shù)據(jù),然后加好標(biāo)簽在PC端讀取數(shù)據(jù)進行訓(xùn)練,APP中則直接加載訓(xùn)練好的XML文件。值得一提的是,在表情分類模塊中,對人臉關(guān)鍵點數(shù)據(jù)的歸一化操作十分重要,在網(wǎng)上看到一些案例是直接將點的像素坐標(biāo)歸一化,然而這樣無法保證對所有頭部姿態(tài)都進行正確分類。所以程序里我使用了一個坐標(biāo)轉(zhuǎn)換,將點的像素坐標(biāo)轉(zhuǎn)換為以人眉心為原點的坐標(biāo)系,這樣再歸一化之后泛化效果就好了很多。
藍牙模塊連接,連接線如圖:
注意的是只需要接藍牙的Tx,不需要接Rx,這樣是為了讓Arduino的print函數(shù)依然可以往控制臺打印數(shù)據(jù),另外下載程序的時候不要連接藍牙不然會數(shù)據(jù)沖突無法下載。還需要注意初始化的波特率必須跟藍牙模塊移植。
其實用軟串口的話就沒有這些問題了,但是我好懶。。沒時間完善庫😥,要是有同學(xué)加上了軟串口功能可以找我把代碼整合進去。
APP兼容性
由于市面上手機型號繁多,對于不同架構(gòu)的CPU不一定全部都能支持,有安裝問題的可以在下載頁面留言反饋我有空的話會盡量適配的。安裝好了之后如果打開應(yīng)用卡住或者閃退可能是手機上的安全軟件限制了APP的權(quán)限,這時候需要去手機設(shè)置里開啟APP使用攝像頭和藍牙的權(quán)限,以原生系統(tǒng)為例操作步驟如下:設(shè)置-應(yīng)用-已安裝-i顏藝Boy-權(quán)限管理。