1. 程式人生 > 實用技巧 >人臉識別專案openface簡介

人臉識別專案openface簡介

人臉識別專案openface簡介

人工智慧迷途小書童10個月前 (12-10)0評論

軟硬體環境

  • openface
  • ubuntu 16.04 64bit
  • python2

openface專案

openface是一個在github上開源的基於深度神經網路(Deep Neural Networks)的人臉識別專案,目前star數已經接近9.5k,fork數也有2k,可見非常受歡迎,openface基於python2.

安裝依賴

安裝lua,不知從哪個版本開始,ubuntu安裝軟體的apt-get可以只寫apt了,挺好

sudo apt install lua5.3

安裝dlib,pandas

sudo pip2 install dlib
sudo pip2 install pandas

安裝torch

git clone https://github.com/torch/distro.git ~/torch --recursive
cd ~/torch
bash install-deps
sudo ./install.sh

安裝程式會在~/.bashrc中新增語句

. /home/xugaoxiang/torch/install/bin/torch-activate

執行使之生效

source ~/.bashrc

安裝luarocks及相關模組

sudo apt-get install luarocks
sudo chown -R xugaoxiang:xugaoxiang ~/.cache
luarocks install csvigo
luarocks install dpnn
luarocks install image
luarocks install torchx
luarocks install graphicsmagick
luarocks install nn

運轉openface

下載原始碼

git clone https://github.com/cmusatyalab/openface.git
cd openface
python setup.py install

準備自己的樣本圖片

ubuntu系統下用cheese(sudo apt install cheese)攝像頭工具錄製一段15秒左右的視訊,然後利用ffmpeg(同樣利用apt安裝)工具將視訊轉化成圖片,將生成的圖片集合存放在openface/training-images/xugaoxiang下,大概就有了400左右的樣本數量了,據openface的官方說法是樣本數量越大,準確度是越高的,經過簡單的測試,發現的確是這樣.

ffmpeg -i 2018-03-16-170319.webm -r 25 -f image2 xugaoxiang/%05d.png

預處理

對每張照片進行alignment操作,就是把跟人臉無關的元素去掉,以便解決一些如不一致和弱光線的問題,形成一張張96×96的圖片

./util/align-dlib.py ./training-images/ align outerEyesAndNose ./aligned-images/ --size 96

生成Representations

cd models
./get-models.sh
cd ..
./batch-represent/main.lua -outDir ./generated-embeddings/ -data ./aligned-images/

建立分類模型

./demos/classifier.py train ./generated-embeddings/

到此, 各項準備工作都已經OK了,接下來看看效果吧.

照片中人臉的識別

 ./demos/classifier.py infer ./generated-embeddings/classifier.pkl your_test_image.jpg

我從training-images中找了張照片測試,結果非常好,相似度90%

2張照片的對比

./demos/compare.py training-images/xugaoxiang/00100.png training-images/xugaoxiang/00200.png

從webcam中識別

./demos/classifier_webcam.py ./generated-embeddings/classifier.pkl

線上交流gitter

https://gitter.im/cmusatyalab/openface, 這點非常的不錯,比提issue要更快速有效,參與的人也多,但也不是你提問就有人來幫你,畢竟大家都很忙.

ubuntu 18.04適配

18.04 LTS上做trainging時發現會報libreadline.so.6找不到的錯誤,按下面方法修正

sudo ln -s /lib/x86_64-linux-gnu/libreadline.so.7 /usr/lib/x86_64-linux-gnu/libreadline.so.6

參考資料