[ROS] 얼굴탐지(face detection): Raspberry Pi + libfacedetection

라즈베리파이의 카메라를 통해서 얼굴 인식을 하는 기능을 ROS로 구현해 봅시다.

 

Step 1. Camera Module

필자는 라즈베리파이용 카메라인 “파이카메라”를 구입하였습니다.

파이카메라는 라즈베리파이의 가운데 부분에 연결해야 합니다.

라즈베리파이 보드를 잘 보면 하얀 글씨로 “CAMERA”라고 printing 되어 있는 부분입니다.

 라즈베리파이와 카메라 모듈을 안정적으로 연결하면 성공입니다.

ROS에서 카메라 입력을 위하여 “uvc_camera”를 사용하였습니다.

 

Step 2. face detection


필자의 github에 라즈베리파이용으로 빌드된 library가 올라가 있으니, 빠른 진행을 원하시는 분들은 “Step 3.” 로 넘어가시면 됩니다.


 

face detection 을 하기 위한 방법은 다양하지만 여기에서는 “libfacedetection”이라는 open source library를 사용해 보았습니다.

먼저 source code를 파이에 다운받습니다.

git clone https://github.com/ShiqiYu/libfacedetection.git

cd libfacedetection

libfacedetection을 빌드합니다. 빌드시에는 다양한 옵션을 지정해 줄 수 있는데, 자세한 내용은 README를 참고하세요.

cmake -DENABLE_INT8=ON -DENABLE_AVX2=OFF -DENABLE_NEON=OFF -DCMAKE_BUILD_TYPE=RELEASE

make

빌드가 완료되면 해당 폴더에 library 파일이 생성된 것을 확인할 수 있습니다.

  • libfacedetection.a
  • libfacedetection.so

또한 해당 library를 사용하기 위한 header파일도 다음에 위치해 있습니다.

  • src/facedetectcnn.h

 

Step 3. ROS 구현


Source Code에 대한 설명은 추후 업데이트 예정입니다.


예제는 필자의 github에 올려 두었습니다.

해당 예제는 image_common opensource를 일부 포함하고 있습니다.

catkin workspace로 이동하여 다음과 같은 명령어를 수행합니다.

cd src

git clone https://github.com/napiera/ros-facedetection.git

cd ..

catkin_make -j2

이제 실행을 확인하기 위해 각각의 터미널에서 다음을 수행합니다.

roscore
rosrun uvc_camera uvc_camera_node
rosrun ros_facedetection ros_facedetection

face detection이 이루어지는 화면을 확인할 수 있습니다.

 


ps. libfacedetection의 연산 처리가 많아 화면이 표시되는 속도가 느립니다.. libfacedetect의 빌드 옵션을 변경하거나, 다른 library를 사용해야할 것 같습니다.