Opencv

7-3 라즈베리 파이 Stretch버전 OS에 Opencv 3.3 설치

coding art 2019. 12. 18. 15:42
728x90




지금 구매하는 라즈베리 파이는 이미 B 모델에서 B+ 로 넘어가는 중이다. 특별히 사용법 상 달라진 것은 없겠지만 B+ 의 클럭 주파수가 훨씬 높아짐과 아울러 연산 속도가 빨라졌을 것이다.



지금 라즈베리 파이 홈페이지를 방문하면 이미 Stretch Jessie 두가지 OS 버전을 넘어 Buster 버전을 배포 중이지만 아직 OpencvStretch 버전에 설치해서 사용하는 중이다. 만에 하나 Stretch 버전 OS를 구할 수 없을 경우에는 이미 다운받아서 준비했던 SD 카드를 USB를 통해 copy 해서 쓰도록 한다. 라즈베리 파이 시작 바의 SD Card copier 명령을 실행하자. 1520분으로 말하지만 때에 따라서는 한 시간이 걸리기도 함에 유의하자.

 

연전에는 당연히 Jessie버전을 사용했지만 Stretch 버전으로 넘어 가는 통에 부적응 현상으로 반년 이상 손을 놓은 경험을 가지고 있다. OS 버전이야 Jessie Stretch 든 큰 상관이 없다고 생각할 수 도 있으나 인텔의 Opencv 설치 문제와 연관되면 OS 문제가 대단히 중요하다는 점을 지적해 둔다. 굳이 Opencv를 설치하려는 이유 중의 하나는 Face Detection 코드를 비롯한 머신 러닝 코드를 파이 카메라와 연동해 실시간으로 실행해 보려 함에 있다.

 

우리가 목표로 하는 라즈베리 파이의 OS 가 이름 치고도 상당히 이상한 뉴앙스인 쭉쭉뻗쳐라로 번역되는 Stretch 버전이라는 점을 확인하자. 설치하려는 인텔사의 Opencv는 현재 3.4 버전 그 이상까지 나왔으나 3.3. 버전을 설치하도록 한다.

 

라즈베리 파이 보드 구매 후 Stretch 버전 설치 후 한글 설치까지는 마친 시점에서 가장 먼저 Opencv 3.3 버전을 설치하자. 설치 과정은 다음의 인터넷 주소의 Adrian의 설치과정을 그대로 따라 하도록 한다. 이 사이트 운영자 Adrain은 라즈베리 파이의 OS Opencv 가 업그레이드 되는 시점마다 설치 과정을 튜터링 하고 있다. Jessie 버전 때부터 여러 번 따라 해 보았는데 여러번 실패한 경험도 있으며 한번은 SD 카드를 태워먹은 적도 있었지만 최근에 두 번 성공적으로 설치했다.

 

https://www.pyimagesearch.com/2017/09/04/raspbian-stretch-install-opencv-3-python-on-your-raspberry-pi/

 

Adrian 블로그의 사이트 끝 부분에 가면 Opencv 맛배기 짧은 예제를 보여주는 데가 끝인데 Face Detection 과 같이 관심 분야에 대해서 더 알고 싶으면 책을 구매하라는 선전으로 끝난다.

 

설치 후에도 Face Detection 예제 문제로 고심을 좀 하긴 했는데 그레도 Opencv가 제대로 깔렸는지 주특기인 좌충우돌 수법으로 지난번 Jessie 버전 때부터 하던 Face Detection 코드를 살려 보았다. 설치가 끝나게 되면 그 예제를 올릴 예정이다.

 

설치 과정은 그대로 따라가면 되며 잘못된 부분이 없지만 그래도 몇 가지 주의할 점들을 지적해 두고자 한다. Opencv 설치에 많이 실패하는 원인들은 리눅스 명령 체계에 관한 경험 부족과 심리적인 것이 많다.

 

라즈베리 파이 보드 설치 과정에 주의할 점 중에 하나는 라즈베리 파이 보드의 속도가 1GHz 가 넘는다고는 하나 데스크탑 PC 로 치면 78년은 되었음직한 낡았으면서 아주 느린 컴퓨터를 사용한다는 점을 인지하도록 하자. 멀티 태스킹 작업 시 블루투스 마우스를 움직이면 보드가 죽은 것처럼 연기하다가 갑자기 움직이는 이런 일이 비일비재하므로 절대로 속지 말아야 한다. 편안한 마음으로 진짜 보드가 죽었는지 살았는지 여러번 조심스럽게 슬로루 슬로우 테스트 해봐야 한다. 죽은 듯이 보이는데 거의 살아서 슬립하는 것으로 보인다.

 

그 다음 주의해야 할 점은 동호회분과 함께 작업하면서 겪은 일인데 마우스 오른쪽 버튼 클릭에 의한 복사 기능이 안되는 것으로 알고 있었다. 세상에 마우스 오른쪽 버튼 복사가 안되면 일일이 다 타이핑해야 된다는 소린데 이는 고문보다 더 한 상황이 연출 될 것이다. 그런데 동호회 전문가 분이 Opencv설치를 일일이 키보드 타이프에 의해 작업을 진행했던 사례가 있었다.

 

아울러 라즈베리 파이 보드는 아두이노에 비해 발열이 대단히 심하다. 아무리 쥐방울만한 컴퓨터 보드라고 하지만 그래도 명색이 서버용 보드이고 클럭 주파수가 1GHz 가 넘는데 발열 문제가 없으면 이상한 것이다. 보드를 박스에 넣어 두었으면 반드시 뚜껑을 열어 두는 것이 열 발산에 유익할 것이다. 왜냐하면 오래 관찰해 보니까 한번씩 먹통이 되기도 했는데 그 원인이 발열인 듯하며 나머지는 죽은 듯이 랙먹고 위장하는 상태이다. 그래서 Opencv 설치 시 모델 B보드에 히트싱크가 설치되었는지 확인하고 사무실이라면 서늘하더라도 에어컨을 최저온도인 18도에 맞춰두는 것이 해답 중의 해답이다. B+ 보드는 아예 금속 커버로 되어 있지만 역시 방열판을 반드시 설치해야 한다.

 

통신 환경도 광랜이 지원되면 1시간 30분짜리 과정이 있는데 상당히 빨리 설치가 끝날 수 있겠으나 문제는 내려 받는 상대방 측의 서버와의 통신이 잘 안 되는 경우가 수시로 발생한다. 그렇다고 별도로 미러 사이트도 없기 때문에 무한한 인내심으로 감수해야하며 특히 주의할 점은 저녁 7시 이후 절대 시도하지 않는 것이 상책이다. 필자의 경우 약간의 경험이 있음에도 불구하고 라즈베리 파이의 농간에 당해 한번은 2시간 30 분 두 번째는 거의 4시간을 소모했는데 그래서 라즈베리 파이 보드가 죽은 체 하는지 수십번 체크해 보았는데 건재해 있었다. 하지만 지금은 일단 끄고 다음 날 그 지점부터 다시 시작할 정도로 경험이 쌓였다. Matplotlib 설치 시에도 비슷한 경험을 가지고 있다. 즉 보드 주변 온도를 충분히 서늘하게 유지해 주면 먹통이 되는 문제는 최대한 피할 수 있을 것이다.

 

Step #1:Expand filesystem

 

아래와 같이 설치 튜토링 사이트와 터미날 하나를 연 멀티 태스킹 환경 하에서 마우스 오른쪽 버튼을 사용하여 실행할 명령을 한 번씩 카피하여 터미널 창에 복사하여 실행 시키자.

Expand filesystem 처리는 사용하는 마이크로 SD 카드의 메모리 용량을 파티션하지 않고 전체를 다 사용하도록 포함시키는 작업으로서 Opencv 와 같은 시스템을 설치할 때 한번씩 정리를 해 주어야 한다.


시스템 configuration 작업이 완료되면 반드시 재부팅 시키도록 한다.

가용 메모리 용량이 최대로 확장 되었으면 터미널 창에서 df h 명령을 실행시키고 그 결과를 관찰하자. 다음은 Opencv를 설치한 필자의 메모리 사용 현황이다. 64Giga 삼성 SD 카드를 사용 중인데 Opencv를 설치하면 족히 10Giga 정도 사용하는 듯하다.



메모리 점유 현황을 참고하면 16Giga는 너무 빠듯하고 최소 32Giga 64Giga SD 카드를 사용하는 것이 좋을 것이다.

 

그 다음 단계에서 사이트 운영자는 만약의 경우 8Giga SD 카드 사용자를 위하여 아쉽지만 default 로 설치되어 있는 Mathematicalibreoffice를 지워 가용 메모리 1Giga를 확보하도록 권장하고 있다. 하지만 16Giga 이상이라면 이 부분을 그냥 넘어가도 무방하다.

여기까지가 Step #1 이다.


   

Step #2: install dependencies

Opencv 3.3 설치에 종속적인 여러 가지 라이브러리 패키지 설치를 포함한다. 그대로 따라하면 된다. 첫 단계인 sudo apt-get update에서 약간의 시간이 소요되며 스텝 전체 소요 시간은 5분 이내 정도이다. 2019년을 넘어가면서 update 보다는 upgrade 1시간 이상의 상당한 시간이 소요될 수 있다는 점에 유의하자.

 

Step #3 Download the OpenCV source code

Opencv 3.3.0 버전을 설치하는데 명령 복사 시에 페이지 폭을 넘어가는 부분이 한 곳 있으므로 정확히 복사하여 옮겨 실행하도록 하자

 

Step #4 Python 2.7 or Python 3?

파이썬 2.73.5 버전을 다 설치한다. 한편 최근에 Buster 버전 OS에서도 Opencv 설치를 시도해 보았는데 파이썬 3.5 버전이 들어와 있어야 하는데 항상 3.7 버전이 설치되어 인위적으로 3.5. 로 바꾸기가 어려워 Adrain이 블로그를 올릴 때까지 기다려야 할 듯하다. 이어서 Adrian의 가상환경 설치에 대한 필요성 설명이 뒤따른다. 가상환경 설정은 파이선과 Opencv와 특정한 몇 개의 라이브러리를 엮어 별도 화하는 의미이다. 윈도우즈에서 파이썬을 사용하기 위해 아나콘다를 설치하는 하는 과정도 동일한 개념이다. 가상환경에 의해 짜여진 틀은 다른 여타의 프로젝트 설치 여부에 따라 영향을 받지 않고 굳건하게 유지된다.

 

가상환경 cv>에서 Numpy 라이브러리 모듈을 설치하자. 아울러 PiCamera imutils 도 함께 설치해 두면 좋다. 이 두 라이브러리 모두 파이 카메라를 사용하는 실시간 스트림 처리 작업과 관련이 있다.

pip install numpy

pip install picamera[array]

pip install imutils

 

Step #5 Compile and install OpenCV

가상환경 cv>에 들어가 설치 작업이 진행된다. 특히 cmake D 작업이 사이트 운영자가 말하는 256초보다 많은 시간이 소요될 수 있음에 주의하자. 이 단계에서 파이선 2.7 과 파이선3.5 버전 설치를 스크롤해 모니터링 하는 방법을 설명해준다. 하지만 아무런 이상이 없이 끝나면 그냥 넘어가도 좋다.

 

cmake가 끝나면 라즈베리 파이가 가진 4개의 코어를 사용하여 Opencv를 컴파일 할 수 있도록 메모리의 swap space size 변경을 해야 하며 /etc/dphys-swapfileOpen하여 CONF_SWAPSIZE1024로 변경할 것을 주문한다. 이 명령은 nano 편집기를 사용하여 nano /etc/dphys-swapfile 을 실행시키면 편집할 파일이 나타난다. 화살표 이동키로 움직여 수정 후 Control X키로 빠져 나오자. 컴파일 작업 중에는 1024를 유지하다가 모든 작업이 끝나면 설치가 완전히 끝난 단계에서 다시 100으로 반드시 돌려놓아야 한다. 그렇지 않으면 사용자의 SD 카드 손상이 빠르게 일어날 수도 있음을 경고하고 있다.

 

Swapspacestop시켰다가 다시 start시켜 활성화 시킨 다음 Opencv 설치에서 가장 고비라고 볼 수 있는 1시간 30분짜리 make j4 로 넘어가자. j4 라 함은 라즈베리 파이를 구성하는 4개의 멀티 코어를 죄다 사용한다는 의미이며 따라서 발열이 심해진다. 사용자의 보드가 라즈베리 파이3 B 모델이라면 반드시 히트싱크 즉 방열판이 설치되어 있어야 하고 실내 온도 섭씨 18도에 맞춰 에어컨 가동이 필수적이다. 경험에 비추어 보아 다른 명령들은 그대로 실행시키면 되지만 열 발산 문제는 사용자 본인이 처리해야 한다.

 

말이 좋아 1시간 30분이지 필자의 경우 두 번 다 2시간을 넘겼다. 하지만 그렇게 걱정할 필요는 없다. 일단 시작하면 %가 출력되는데 4050%가 큰 고비이다. 이 단계에서 많은 경우 자신의 라즈베리가 먹통이 되었다고 판단할 수 있을지도 모르지만 라즈베리 파이 보드가 죽은체하고 있는지 여러 번 체크해 볼 필요가 있다. 특히 내려 받는 서버에서 반응이 없거나 늦어서 대기하는 경우가 비일비재한 듯하다. 그 다음은 90100%rk 고비다. 여기서도 만약 먹통이 되었다 해도 그리 실망할 필요는 없다. 만약 내려받는 서버와의 통신 상태가 나빠 끓어질 가능성이 99%며 만약 사용자가 발열관리를 잘못했을 가능성도 생각해봐야 한다.

만약 rebooting하여 재시작하려면 다시 가상환경 cv)까지 들어가서 cmake j4를 재실행해야 한다. 이미 진행된 부분까지 복구는 금방 이루어지며 끊어졌던 부분에서 다시 작업이 시작된다. 이어서 make installld config 작업을 수행하여 Step #5를 종료한다.

 

Step #6: Finish installing OpenCV on your Pi

거의 마지막 단계이다. For Python 2.7: For Python 3.5: 이 있는데 그대로 둘 다 작업하여 Step #6를 끝내다.

 

Step #7:Testing your OpenCV3 install

거의 다 끝났는데 이 부분에 수정할 요소가 하나 있다. Opencv 버전 확인 단계인데 python 명령을 사용하면 된다. python 명령을 그대로 사용하면 이는 python2.7을 의미한다. 따라서 python 버전이 2.7로 확인되면 다시 python3 명령을 실행하여 확인하자.



이어서 불필요한 공간을 지우고 SWAPSPACE SIZE를 원래대로 100으로 되돌려 놓자. dl 작업이 생략되면 사용자 SD 카드 수명이 급격히 단축된다. 작업 후 swapfile 시스템을 stop, start 실행 시켜서 모든 작업을 완료한다.

 

AdrianStretch 버전 OS에서의 Opencv 설치 과정은 일년이 지난 2019년 말 IntelNeural Compute Stick2를 사용하는 OpenVINO 의 라즈베리 OS 설치과정에서도 그 뼈대를 그대로 유지하면서 유용하게 사용된다.

 

Q&A를 따라 더 내려가면 사이트 운영자인 Adrian 자신을 모델로한 FACE Detection 결과와 자신의 저서를 소개하고 있으니 참고하기 바란다.