自從大神們發(fā)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)對圖像識別的特殊功能以后,人臉識別技術(shù)發(fā)展非常迅速披诗,各種新算法層出不窮闲延。在有效訓(xùn)練的情況下,基于openface的人臉識別已經(jīng)非常精準(zhǔn)告丢。我嘗試用openface識別家里的家庭成員枪蘑,基本沒有出錯的。本文教你如何在樹莓派上芋齿,部署人臉識別程序。
為了讓大家很方便的使用到這個程序成翩,筆者將將所有準(zhǔn)備工作都編譯到docker鏡像中去了觅捆,這樣大家可以跳過繁雜的安裝過程。
首先您要先確定您的樹莓派操作系統(tǒng)(raspbian)的版本要至少為jessie麻敌,如果還沒有升級到這個版本栅炒,請先刷到這個版本。樹莓派板卡最好為pi 3术羔,前面幾代應(yīng)該也能運(yùn)行(筆者沒有測試過)赢赊,但CPU速度比較慢,運(yùn)行時間會比較長级历。
數(shù)據(jù)準(zhǔn)備
首先你要確定你要識別哪些人释移,每個人拍攝3-5張照片,最好是這個人正臉和側(cè)臉不同角度拍攝的照片寥殖,光線可以有明暗區(qū)別玩讳。這些照片,作為訓(xùn)練數(shù)據(jù)使用嚼贡。另外熏纯,每個人再另外準(zhǔn)備1-2張照片,作為待識別的照片粤策。這些照片樟澜,請按照以下方式存儲:
以上以一個家庭父親、母親叮盘、小孩三個對象為示意秩贰,說明目錄樹的結(jié)構(gòu)該怎么設(shè)置。
部署程序
部署的過程其實(shí)只有一行代碼柔吼,在你的當(dāng)前位置下萍膛,運(yùn)行:
curl -s https://raw.githubusercontent.com/flyingtimes/face-recognizer/master/install.sh|bash
這是一個腳本,會自動幫你把源代碼下載下來嚷堡,如果沒有安裝docker蝗罗,會自動安裝docker艇棕,并下載相關(guān)的docker鏡像。openface所需的所有組件都已經(jīng)在docker中預(yù)先準(zhǔn)備好了串塑,您只要運(yùn)行程序就行了沼琉。整個過程需要下載1.5G左右的數(shù)據(jù),請耐心等待桩匪。同時打瘪,程序還會下載run_train.sh 和 run_test.sh腳本。
訓(xùn)練數(shù)據(jù)
在你的當(dāng)前位置下傻昙,運(yùn)行(其中 $PWD代表當(dāng)前路徑):
bash run_train.sh $PWD
開始人臉識別
在你的當(dāng)前位置下闺骚,運(yùn)行:
bash run_detect.sh $PWD father_test.jpg
其中father_test.jpg是你要識別的文件名稱,可以是任意名稱妆档,必須放在detect目錄下僻爽。
輸出的結(jié)果應(yīng)該類似如下內(nèi)容:
=== /detect/father_test.jpg ===
Predict father with 0.67 confidence.
注意事項(xiàng)
* 訓(xùn)練數(shù)據(jù)如果有變化,需要重新進(jìn)行訓(xùn)練
* 如果只是利用已經(jīng)生成的模型來檢測贾惦,則直接運(yùn)行run_detect.sh就行
* 對于沒有訓(xùn)練過的照片的識別率是比較低的胸梆,必須先“學(xué)習(xí)”,然后識別率才會比較高
* 照片越多须板,訓(xùn)練時間越長碰镜,考慮樹莓派的運(yùn)行速度較慢,建議一開始玩每個人的照片在3-5張比較合適习瑰,當(dāng)然如果你愿意等绪颖,照片越多準(zhǔn)確率越高。
Enjoy it甜奄,在此基礎(chǔ)上菠发,嘗試用你的樹莓派攝像頭,來做一個人臉識別的們鎖吧贺嫂!
PS:
近期由于“網(wǎng)絡(luò)安全原因”滓鸠,部分讀者反映有幾種異常情況,統(tǒng)一回復(fù)如下:
1)在git clone的時候等待很久第喳,實(shí)際是因?yàn)榫W(wǎng)絡(luò)原因無法在github上抓取代碼糜俗,我把項(xiàng)目代碼共享到百度網(wǎng)盤 https://pan.baidu.com/s/1eRJsuJK ,大家可以隨意下載曲饱。下載后進(jìn)入face-recognition-master 運(yùn)行 bash install.sh 即可悠抹。
2)有部分用戶在執(zhí)行過程中,顯示“docker未安裝”扩淀,然后長時間等待楔敌。這種情況也是因?yàn)榫W(wǎng)絡(luò)不良導(dǎo)致無法安裝docker。建議在樹莓派上反復(fù)執(zhí)行:
curl -sSL https://get.docker.com | sh? ? ?直到成功為止驻谆。
3)鏡像下載是一個比較長的過程卵凑,建議耐心等待庆聘。鏡像文件托管到dockerhub上,如果不成功勺卢,建議在網(wǎng)絡(luò)良好的時候執(zhí)行 docker pull clarkchan/rpi-tensorflow-imagenet
4) 部分用戶在執(zhí)行的時候反映“memory”問題伙判,主要是前幾代樹莓派內(nèi)存不足,無法運(yùn)行程序?qū)е碌暮诔溃埓_認(rèn)你的硬件升級到樹莓派3
PS(2018-06-03):
今天重新運(yùn)行了一次宴抚,發(fā)現(xiàn)由于網(wǎng)絡(luò)原因,原來的安裝腳本有些步驟我也不能用了甫煞。順便修改了一下菇曲。改了幾個地方:
1) docker的安裝。由于官網(wǎng)經(jīng)常失聯(lián)抚吠,安裝改為apt-get install docker-ce常潮,不從官網(wǎng)直接下載了。
2)鏡像獲取的時候埃跷,改使用root權(quán)限蕊玷,避免permission denied 問題邮利。