얼굴 인식 (Face Recognition) - leeyoungseo/- GitHub Wiki

어플리케이션 개요

  • 본 어플리케이션은 face image에서 face 부분을 detection 한 뒤, image database 에서 해당 face를 찾아 누구인지 알려주는 어플리케이션이다.

  • 본 어플리케이션은 C++로 작성된 오픈소스코드 이며, 제작자는 Robin Hewitt 이다.

  • 본 어플리케이션에 대한 자세한 설명은 이 곳에서 확인할 수 있다. Face Recognition

  • 본 어플리케이션을 리눅스 서버 및 ARM 모바일 기기에서 아래와 같이 컴파일하여 사용할 수 있다.


Linux (Ubuntu)

Environment Setting

$ sudo apt-get install -y build-essential 
$ sudo apt-get install -y cmake 
$ sudo apt-get install -y libgtk2.0-dev 
$ sudo apt-get install -y pkg-config 
$ sudo apt-get install -y python-numpy python-dev 
$ sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev 
$ sudo apt-get install -y libjpeg-dev libpng-dev libtiff-dev libjasper-dev 
$ 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 

소스코드 다운로드

$ wget http://smrl.korea.ac.kr/deeplink/chris/opencv/opencv-facerecog.tar.gz $ tar -xzvf opencv-facerecog.tar.gz

OpenCV installation

$ wget http://smrl.korea.ac.kr/deeplink/chris/opencv/opencv-2.4.11.zip
$ unzip opencv-2.4.11.zip
$ cd opencv-2.4.11 
$ cmake . 
$ make -j4 
$ sudo make install
$ pkg-config --modversion opencv 

위의 pkg-config를 확인하여 OpenCV가 정상적으로 설치되었는지 확인

Boost Installation

$ wget http://smrl.korea.ac.kr/deeplink/chris/opencv/boost_1_55_0.tar.bz2
$ tar xzvf boost_1_55_0.tar.bz2
$ cd boost_1_55_0 
$ ./bootstrap.sh 
$ sudo ./b2 install

~/.bashrc 파일에 환경변수 추가

export PATH=$PATH:<boost dir>
export PATH=$PATH:/home/extraHDD/carrotyone/source/offloading/boost_1_55_0/boost [EXAMPLE]
export FACEREC=<face recognition directory>
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
$ source ~/.bashrc

face recognition directory는 Face-recognition 소스코드가 설치된 폴더를 뜻함

Build Command

opencv-facerecog.cpp을 수정해 주어야 함

// setup env vars
377     char* env   = getenv( "FACEREC" );
378     string workingDir  = string( env ) + "/" + WORKING_DIR;
379     filesystem::create_directory( workingDir );
380     string facesDir    = workingDir  + "/" + FACES_DIR;
381     string cascadeFile = workingDir  + "/" + CASCADE_FILE;
382     string facesdbFile = workingDir  + "/" + FACEDB_FILE;
383     string nameFile    = workingDir  + "/" + NAME_FILE;
384     logFile            = workingDir  + "/" + LOG_FILE;
385     debugDir           = workingDir  + "/" + DEBUG_DIR;
386     filesystem::create_directory( debugDir );

run.sh를 수정해 주어야 함

3     WORKING_DIR=`echo "$FACEREC/.opencv-facerecog"`

이후에 shell script를 실행

$ cd <face recognition diretory>
$ ./run.sh

face recognition directory는 Face-recognition 을 설치한 폴더


ARM 64

Environment Setting

$ wget http://smrl.korea.ac.kr/deeplink/chris/toolchain/gcc-linaro-aarch64-linux-gnu-4.8-2014.04_linux.tar.bz2

OpenCV Installiation

먼저 ARM 전용으로 Cross compile을 진행하기 위해서 Toolchain을 설치하여야 함

$ sudo apt-get install build-essential
$ sudo apt-get install gcc-arm-linux-gnueabihf
$ sudo apt-get install g++-arm-linux-gnueabihf
$ sudo arm-linux-gnueabihf-g++ --version

version을 확인해 주어야 함 (설치가 되어있는지 확인)

OpenCV 설치

$ wget http://smrl.korea.ac.kr/deeplink/chris/opencv/opencv-2.4.11.zip 
$ unzip opencv-2.4.11.zip 
$ cd opencv-2.4.11
$ cd platforms/linux/
$ mkdir build

arm-gnueabi.toolchain.cmake 파일을 수정해 주어야 함

$ vim arm-gnueabi.toolchain.cmake

5  set(GCC_COMPILER_VERSION "[위에서 확인한 amr-linux-gnueabihf-g++ 툴체인 버전]" CACHE STRING "GCC Compiler version")
6 
7  set(FLOAT_ABI_SUFFIX "hf")
8 
9  if (NOT SOFTFP)
10 set(FLOAT_ABI_SUFFIX "hf")
11 endif()

Build Command

$ cd build
$ cmake -DSOFTFP=ON -DBUILD_SHARED_LIBS=OFF  -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake ../../..
$ make -j8
$ make install -j8

opencv/platforms/linux/build/install/share/OpenCV/3rdparty/lib 의 Library 이름 변경

$ mv liblibjasper.a libjasper.a
$ mv liblibjpeg.a libjpeg.a
$ mv liblibpng.a libpng.a
$ mv liblibtiff.a libtiff.a

~/.bashrc의 맨 아래 부분에 환경변수 추가 설정

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:<OpenCV dir>/platforms/linux/build/install/lib/pkgconfig:<OpenCV dir>/platforms/linux/build/install/share/OpenCV/3rdparty/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<OpenCV dir>/platforms/linux/build/install/lib:<OpenCV dir>/platforms/linux/build/install/share/OpenCV/3rdparty/lib

Boost Installation

$ wget http://smrl.korea.ac.kr/deeplink/chris/opencv/boost_1_55_0.tar.bz2 
$ tar xzvf boost_1_55_0.tar.bz2
$ cd boost_1_55_0 
$ mkdir build
$ ./bootstrap.sh 
$ vi project-config.jam

if ! gcc in [ feature.values <toolset> ]
 {
  using gcc : arm : arm-linux-gnueabihf-g++ ;
  #   using gcc ; 
 }

$ ./bjam install --prefix=build --layout=system -toolset=gcc-arm link=static runtime-link=static

Build Command

Linux와 동일 (경로만 임의로 설정해 주면 됨)

⚠️ **GitHub.com Fallback** ⚠️