OpenCV란 참 고마운 영상처리 라이브러리가 있습니다. 이걸 쓰면 각종 영상처리를 쉽게 처리가 가능합니다. 그리고 얼굴 인식이라던가 글자 인식도 쉽게 할 수있습니다. 그리고 그것을 더 쉽게 하기 위해서 Dlib란 라이브러리가 나왔습니다. 저 같은 경우에는 얼굴 인식용으로 주로 사용하는데 OpenCV만 사용하는 것보다 훨씬 더 편리합니다.


그리고 기본 언어가 Python이라서 개발환경 갖추는것이 너무 좋습니다. 리눅스에서 Python개발환경은 그냥 대충 해도 되는 것이니까요.


그래서 보통 영상처리쪽은 리눅스에서 환경을 갖추는 것이 일반적입니다. VFX쪽과 비슷하지요. 윈도우에서 하면 고통이 좀 심하거든요. 아니면 리눅스 가상머신을 올리던지요.


그런데 OpenCV라이브러리는 크게 문제가 없는데 Dlib란 이 물건... 병목이 심합니다. 기본적으로 CUDA코어를 써서 어떻게든 해결해보려고 하는데 만약 Nvidia그래픽카드를 안 쓰면 당장 답이 없습니다.


그래서 흔한 방법을 쓰면 속도면에서 너무 고통스럽습니다. 그래서 CUDA없는 시스템의 경우에는 수동으로 라이브러리를 컴파일해서 설치해주는 것이 좋습니다. CPU상황에 맞게 AVX나 SSE 같은 것을 켜는 것입니다.


일단 우분투에서 OpenCV설치는 쉽습니다.


python3-opencv 란 패키지를 제공하기 때문에 이것을 설치하면 끝입니다.

sudo apt install python3-opencv



(Python2.7은 이제 그만 쓰는게 좋겠습니다. 이제 Python3를 추천합니다.)


 하지만 Dlib는 pip로 설치하거나 그냥 따로 setup.py를 써서 인스톨 해야 합니다.


솔직히 이러나 저러나 pip가 참 편합니다. 그런데 pip로 설치하면 라이브러리를 그냥 기본값으로 설치해버립니다.


그래서 dlib의 경우에는 따로 컴파일을 해서 설치합니다.

https://github.com/davisking/dlib/releases



여기서 dlib의 최신판을 다운로드 받습니다.


그리고 cmake를 사용합니다. 만약 없다면 필요한 라이브러리를 미리 설치하도록 합시다


sudo apt-get install build-essential cmake

sudo apt-get install libgtk-3-dev

sudo apt-get install libboost-all-dev


이제 시스템마다 다른 방식을 써야 하는데


만약 스카이레이크 이후의 CPU라면 AVX를 지원합니다. 그보다 이전의 시스템이라면 SSE4를 쓰면 되지만 그쯤되면 그냥 이참에 시스템을 바꾸는 것을 추천합니다.


python3 setup.py install --yes USE_AVX_INSTRUCTIONS


만약 Nvidia카드가 없고 AVX지원 CPU라면 위와 같이 입력함으로서 AVX를 지원하게끔 설치가 가능해집니다.


만약 Nvidia카드도 있고 AVX도 붙어있는 환상의 조합이라면


python3 setup.py install --yes USE_AVX_INSTRUCTIONS --yes DLIB_USE_CUDA


필요에따라선 sudo가 붙어야 할 수도 있습니다.


이제 알아서 파이썬 설치 스크립트가 해당 옵션을 붙여서 컴파일을 함께 하는 것을 볼 수 있습니다.



만약 내 CPU가 AVX가 되는지 모르겠으면

grep avx /proc/cpuinfo


이 명령어를 써서 만약 뭔가 뜨면 AVX가 되는 것이고 안 되면 안 되는 것으로 생각하면 됩니다.

AVX가 되면 성능 그냥 굴리는 것보다 향상 폭이 크다고 하네요!

,