Ubuntu系統編譯安裝SeetaFace

深度學習交流QQ羣:116270156

一.安裝OpenCV 依賴

1. Require Packages

[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

2. Get OpenCV Source Code 
http://opencv.org/downloads.html

3. Building OpenCV from Source code Using Cmake & Command Line

cd ~/opencv #移動到源文件文件夾中
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..


#在上面步驟結束之後進行make
make 
sudo make install #該命令行必須

4. Test OpenCV

cd opencv_samples
./build_all_sh
.facedetect  Pathofimage

二.安裝SeetaFace Detection

  • 下載源碼
 git clone https://github.com/seetaface/SeetaFaceEngine.git
  • build on linux
mkdir build #在FaceDetection目錄中  
cd build  
cmake ..  
make -j${npoc}
  • 1
  • 2
  • 3
  • 4

可能出現/usr/bin/ld: cannot find -lopencv_dep_cudart 
解決方法,在執行cmake的時候加入下面的參數CUDA_USE_STATIC_CUDA_RUNTIME=OFF,例如cmake -D CUDA_USE_STATIC_CUDA_RUNTIME=OFF ..

  • run demo
./build/facedet_test imagefilePath ./model/seeta_fd_frontal_V1.0.bin
  • 1

error: ‘isnan’ was not declared in this scope 
解決方法,修改文件中的isnan爲“std::isnan”

三.安裝SeetaFace Alignment

  • Build in Linux
 mkdir build #在FaceAlignment目錄中
  • 1

然後將FaceDetection中的/include/face_detection.h和/build/libseeta_facedet_lib.so 拷貝到/FaceAlignment/build文件夾下,爲了生成test example

cd build  
cmake .. 
make
  • 1
  • 2
  • 3

如果一切正常,可以用測試程序來測試一下,先要拷貝/FaceDetection/model文件夾下的seeta_fd_frontal_v1.0.bin文件到FaceAlignment的build中

./fa_test

用到測試程序的時候可能出現以下問題 
iofread.c沒有這個目錄或文件 
該問題在於生成fa_test中的face_alignment_test.cpp文件中的路徑有些問題比如/data和/model文件夾,還有需要用到的圖片路徑

四.安裝SeetaFace Indentification

  • build on linux
    mkdir build
    cd build
    cmake .. && make
  • 1
  • 2
  • 3

注意以下問題

  1. 未定義引用對於之前生成的FaceDetection和FaceAlignment庫中定義的函數。 
    對於前面FaceDetection和FaceAlignment build生成的兩個庫的libseeta_facedet_lib,libseeta_fa_lib添加到FaceIdentification/build文件夾中。 
    然後修改src/test/CMakeLists.txt文件,在Cmakelists文件中添加查找的鏈接庫link_directories(${PROJECT_BINARY_DIR})(也就是在當前build文件夾下查找,該命令最好添加循環函數外邊) 
    在循環中補全target_link_libraries(XXXXX seeta_facedet_lib seeta_fa_lib)
#`src/test/CMakeLists.txt`修改之後如下
aux_source_directory (. SRC_LIST)

message(${SRC_LIST})
link_directories(${PROJECT_BINARY_DIR}) #添加lib
# add external libraries
find_package(OpenCV REQUIRED)

enable_testing ()
foreach (f ${SRC_LIST})
  string(REGEX REPLACE "[.]cpp" ".bin" BIN ${f})
  add_executable(${BIN} ${f})
  target_link_libraries(${BIN} viplnet ${OpenCV_LIBS}  seeta_facedet_lib seeta_fa_lib) #添加lib
endforeach ()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2.model/seeta_fr_v1.0.bin not found :解決解壓縮model中的兩個文件 
3.face_alignment.h, face_detection.h: No such file or directory,出現這個的原因是sample在編譯是需要用到這些頭文件。解決方法,將SeetaFaceEngine/FaceDetection/include/face_detection.hSeetaFaceEngine/FaceAlignment/include/face_alignment.h拷貝到SeetaFaceEngine/FaceIdentification/include/文件夾中

4.分別修改test_face_recognizer.cpp和test_face_verification.cpp中data和model的相對路徑,還要修改test_face_verification.cpp文件中查找之前編譯過得模塊的路徑

  • Run demo
    ./build/src/test/test_face_recognizer.bin


    ./build/src/test/test_face_verification.bin #比較兩個文件相似度
谷歌學術教程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章