OpenFace 調試記錄

1.OpenFace 是 卡耐基梅隴(CMU)大學的一個圖像+機器學習項目,總體程序包含:人臉發現,特徵提取,特徵神經網絡訓練,人臉識別這四部分。html

  github   https://github.com/cmusatyalab/openface/python

  API文檔  http://openface-api.readthedocs.io/en/latest/index.htmlgit

  website  http://cmusatyalab.github.io/openface/github

2.安裝web

  官方安裝說明    http://cmusatyalab.github.io/openface/setup/docker

  說的不是很詳細,不少關鍵依賴以及基本概念並無講清楚。很容易致使安裝、編譯失敗。ubuntu

  2.1操做系統vim

    只支持Linux 和OSX,官方強烈推薦使用docker鏡像來使用,不過爲了運行加速或自主修改,仍是建議你們從源碼搭建。api

    OpenFace已經在ubuntu14.04和OSX10.10上成功測試。瀏覽器

    我使用ubuntu14.04.5 https://mirror.tuna.tsinghua.edu.cn/ubuntu-releases/14.04.5/ubuntu-14.04.5-desktop-amd64.iso

  2.2從頭安裝

    個人實驗室位置在西安,更換中科大的軟件源超屌  http://mirrors.ustc.edu.cn trasty ,如下全部依賴的安裝速度均與網速有關,也可能跟長城有關,安裝時還須要耐心等待。若某一步安裝不成功能夠重啓計算機從新安裝。

    sudo apt-get update

    sudo apt-get install ssh git curl zsh vim #安裝基本工具

    sudo -i #進入root,基本上主要程序都放在/root/目錄下,只有openface源碼放在/home/usr/也能夠。

 

    #安裝必要依賴

1 sudo apt-get install build-essential cmake gfortran  libatlas-dev libavcodec-dev libavformat-dev libboost-all-dev libgtk2.0-dev libjpeg-dev liblapack-dev libswscale-dev pkg-config python-dev python-pip wget zip

 

    #必要的數值計算庫

複製代碼
1     pip2 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple #選擇下載鏡像,能夠加速,
2 
3     pip2 install scipy #numpy安裝成功後,scipy總失敗,reboot以後就行了
4 
5     pip2 install pandas
6 
7     pip2 install scikit-learn
8 
9     pip2 install scikit-image #發現安裝慢也可使用 sudo apt-get install python-skimage的方式
複製代碼

 

    #安裝Torch 基於lua的科學計算工具,其包管理器是luarocks。

複製代碼
 1     sudo apt-get install luarocks
 2 
 3     curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-deps  | bash -e  #安裝Torch的依賴庫
 4 
 5     git clone https://github.com/torch/distro.git ~/torch --recursive #源碼
 6 
 7     cd torch
 8 
 9     bash install-deps  #(cloning openblas)
10 
11     ./install.sh #源碼安裝torch 若是網絡被牆也能夠從www.pandaroll.cn/openface/torch.tar.gz 下載 ,解壓:tar -xvf torch.tar.gz
複製代碼

 

    #再安裝torch須要的依賴,下載

複製代碼
 1     ~/torch/install/bin/luarocks install moses #若安裝很慢能夠從源碼解壓後直接安裝,下載:www.pandaroll.cn/openface/Moses-master.zip 而後在終端輸入~/torch/install/bin/luarocks install Moses-master/rockspec/moses-1.4.0-1.rockspec
 2 
 3     ~/torch/install/bin/luarocks install torchx #www.pandaroll.cn/openface/torchx-master.zip
 4 
 5     ~/torch/install/bin/luarocks install nn #www.pandaroll.cn/openface/nn-master.zip
 6 
 7     ~/torch/install/bin/luarocks install dpnn #www.pandaroll.cn/openface/dpnn-master.zip
 8 
 9     ~/torch/install/bin/luarocks install csvigo #www.pandaroll.cn/openface/lua---csv-master.zip
10 
11     ~/torch/install/bin/luarocks install fblualib #www.pandaroll.cn/openface/fblualib-master.zip
12 
13     ~/torch/install/bin/luarocks install optim #www.pandaroll.cn/openface/optim-master.zip
複製代碼

 

 

    #安裝opencv

1     sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libjasper-dev
2 
3     sudo apt-get -qq install libopencv-dev build-essential checkinstall cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils

    下載opencv https://github.com/Itseez/opencv/archive/2.4.11.zip 或 http://www.pandaroll.cn/openface/ocv.zip

複製代碼
 1     cd ~
 2 
 3     unzip ocv.zip
 4 
 5     cd opencv-2.4.11
 6 
 7     mkdir release
 8 
 9     cd release
10 
11     cmake -G "Unix Makefiles" -D CMAKE_CXX_COMPILER=/usr/bin/g++ CMAKE_C_COMPILER=/usr/bin/gcc -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D BUILD_FAT_JAVA_LIB=ON -D INSTALL_TO_MANGLED_PATHS=ON -D INSTALL_CREATE_DISTRIB=ON -D INSTALL_TESTS=ON -D ENABLE_FAST_MATH=ON -D WITH_IMAGEIO=ON -D BUILD_SHARED_LIBS=OFF -D WITH_GSTREAMER=ON ..
12 
13     sudo make all -j4 #cpu是4核
14 
15     sudo make install #若報錯硬件問題或操做系統問題,多是過熱問題,換個主板或計算機,最好是臺式機。
複製代碼

    #安裝無報錯後將cv2.so 考到python目錄下

    cp /lib/cv2.so /usr/local/lib/python2.7/dist-packages

    #安裝dlib

    下載dlib https://github.com/davisking/dlib/releases/download/v18.16/dlib-18.16.tar.bz2

    若難如下載,也能夠 www.pandaroll.cn/opencv/dlib-18.16.tar.bz2

複製代碼
 1     cp dlib-18.16.tar.bz2 ~/src
 2 
 3     cd src
 4 
 5     tar xf dlib-18.16.tar.bz2
 6 
 7     cd dlib-18.16/python_examples
 8 
 9     mkdir build
10 
11     cd build
12 
13     cmake ../../tools/python
14 
15     cmake --build . --config Release
16 
17     sudo cp dlib.so /usr/local/lib/python2.7/dist-packages
複製代碼

    #到目前,opencv 和 dlib應該安裝好了,測試一下安裝成功否:

1     python
2 
3     import cv2
4 
5     import dlib

    #若都成功,則繼續下面的步驟

    #安裝openface

複製代碼
1     git clone https://github.com/cmusatyalab/openface.git #若下載太慢則:www.pandaroll.cn/openface/openface.zip ,而後解壓unzip openface.zip,能夠放到/home/usr/目錄下面。
2 
3     git submodule init 
4 
5     git submodule update 
6 
7     cd openface
8 
9     sudo python2 setup.py install
複製代碼

    #獲取模型

複製代碼
1     cd models/get-models.sh #若下載太慢
2 
3     則下載 www.pandaroll.cn/openface/shape_predictor_68_face_landmarks.dat.bz2 ,放入 models/dlib中
4 
5     bunzip2 shape_predictor_68_face_landmarks.dat.bz2 
6 
7     下載 www.pandaroll.cn/openface/celeb-classifier.nn4.small2.v1.pkl ,放入 models/openface中
8 
9     下載 www.pandaroll.cn/openface/nn4.small2.v1.t7 ,放入 models/openface中
複製代碼

========================安裝完成==========

3.測試

  3.1demo1    #進入sudo -i root模式

    計算不一樣面孔之間的類似度距離:

    

1     cd openface
2 
3     ./demos/compare.py images/examples/{lennon-1.jpg,clapton-1.jpg}

  運行結束後會給出一個結果:l2距離是1.132

     

1     ./demos/compare.py images/examples/{lennon-1.jpg,lennon-2.jpg}

    

    運行結束後會給出一個結果:l2距離是0.763

    發現:同一我的的確更類似。

  3.2訓練一個分類器

    須要人臉原圖,每一個圖包含一我的臉,每一個人臉15張圖。不一樣的人的照片放入不一樣的文件夾下。例如我收集了我本身和妹子的分別15張照片。一共至關於2我的,可是有幾我的就分幾個文件夾便可。將這幾個文件夾放入同一個目錄。

    

複製代碼
1     cd openface
2 
3     mkdir training-images
4 
5     cp -r siyi/ openface/traning-images
6 
7     cp -r naixin/ openface/traning-images
複製代碼

    #人臉發現和矯正和裁剪 對其的新照片將放入/aligned-images/目錄中,是96*96的正方形圖片:

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

    

    #提特徵,每一個人臉128個特徵點,新特徵爲csv文件,放入了/generated-embeddings/目錄中:

1     ./batch-represent/main.lua -outDir ./generated-embeddings/ -data ./aligned-images

    #訓練本身的面部檢測模型,是最基本的SVM模型:classifier.pkl 會放入generated-embeddings/目錄下:

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

    #獲取一張不在數據集中的照片,利用分類器檢測並歸屬而後會獲得一個屬於哪一個名字的結果 和 一個可信度數值:

       新照片siyitest1.jpg:  

1     ./demos/classifier.py infer ./generated-embeddings/classifier.pkl siyitest1.jpg

    

分類器會給出分類結果和可信度,通常一樣的人的可信度在99%左右,未在分類器中的人會低於80%。

  3.3web-demo

1     sudo pip install -r demos/web/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
2 
3     ./demos/web/start-servers.sh

安裝一個usb攝像頭,打開火狐瀏覽器:127.0.0.1:8000 能夠在線添加訓練,實時識別。

     

 

  

==完==

 

喬思禕

 2017年3月20日

相關文章
相關標籤/搜索