seetaface由中科院計算所山世光研究員帶領的人臉識別研究組研發。代碼基於C++實現,不依賴第三方庫。然而,目前開源的代碼,是在windows vs上編譯的,對於我們這幫mac/linux用戶來說,用起來還是挺麻煩的。網上也有不少關於Linux的編譯過程詳解。然而針對嵌入式平台的移植依然少見:
安裝seetaface
1 git clone https://github.com/seetaface/SeetaFaceEngine.git 2 cd SeetaFaceEngine 3 cd FaceDetection/ 4 vim CMakeLists.txt
修改 set(USE_SSE "Set to ON to Build use SSE" OFF)
mkdir build cd build cmake .. make -j4
=================================================完
1 cd FaceAlignment/ 2 vim CMakeLists.txt
#注釋 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
1 mkdir build/ 2 cd build 3 cmake .. 4 cp FaceDetection/build/libseeta_facedet_lib.so . 5 export CPLUS_INCLUDE_PATH=/home/pi/SeetaFaceEngine/FaceDetection/inlude/ 6 make -j4
====================================================完
1 cd FaceIdentification/ 2 vim CMakeLists.txt
修改 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -std=c++11 -O2")
為:set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -std=c++11 -O2 -L /home/pi/SeetaFaceEngine/FaceAlignment/build -lseeta_facedet_lib -lseeta_fa_lib")
mkdir build/cd build/
vim ../src/math_functions.cpp
注釋
1 //#include<xmmintrin.h> 2 3 4 /* 5 #ifdef _WIN32 6 #include <intrin.h> 7 #else 8 #include <x86intrin.h> 9 */
注釋函數simd_dot()
改寫為:
1 float simd_dot(const float* x, const float* y, const long& len){ 2 float inner_prod = 0.0f; 3 long i; 4 for(i = 0; i < len; i++){ 5 inner_prod += x[i] * y[i]; 6 } 7 return inner_prod; 8 }
1 export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/home/pi/SeetaFaceEngine/FaceAlignment/include 2 cmake .. 3 cp ../../FaceAlignment/build/*.so . 4 vim ../src/test/test_face_recognizer.cpp
增加:
1 #include <opencv2/opencv.hpp> 2 #include <opencv2/imgproc/imgproc.hpp>
vim ../src/test/test_face_verification.cpp
增加:
1 #include <opencv2/opencv.hpp> 2 #include <opencv2/imgproc/imgproc.hpp>
make -j4
========================================完
喬思禕 2017年9月29日