Opencv

7-3-5 라즈베리파이 Deep Learning Opencv

coding art 2019. 12. 29. 19:01
728x90

파이선 코딩 초보자를 위한 텐서플로우∙OpenCV 머신 러닝 2차 개정판 발행

https://blog.daum.net/ejleep1/1175

 

파이선 코딩 초보자를 위한 텐서플로우∙OpenCV 머신 러닝 2차 개정판 하이퍼링크 목차 pdf 파일

본서는 10월 26일 교보문고 퍼플 POD 출판 신청하였습니다. 일정 기간 검토 후 출판 결정이 될 것이며 11월 초부터 주문 구입이 가능합니다. 참고로 책 목차에 따른 내용별 학습을 위한 코드는 이미

blog.daum.net

_____________________________________________________________________________________________________________________________

라즈베리 파이 보드이든 윈도우즈 시스템이든 Opencv를 설치하였으면 우선적으로 해봐야 할 과제는 무엇일까? 지금까지 게재했던 블로그 내용을 살펴본 바에 의하면 Opencv 와 파이 카메라를 설치함과 아울러 안면인식 코드를 실행해 보는 것이었다. 다음은 필자가 라즈베리 파이 보드에서 실시간 카메라를 연동시켜 1997년 가을에 처음 해본 오픈소스 안면 인식 사례이다.

 

How to install OpenCV on Raspberry Pi and do Face Tracking

http://www.mindsensors.com/blog/how-to/how-to-install-opencv-on-raspberry-pi-and-do-face-tracking

 

 

 

안면인식 코드는 실시간으로 파이 카메라와 연동하는 방식과 아울러 이미지 파일을 이용하는 두 가지 방법이 있다. 2017년 가을 그때에 Jessie 버전을 사용하여 오픈소스를 가져다 무작정 실행시켜 성공적으로 안면인식이 되었으나 다음 해인 2018년 Stretch  버전이 나왔을 때에 Opencv를 설치와 아울러 우왕좌왕 하면서 Jessie 버전 16GB SD 카드를 태워버린 씁쓸한 기억이 있다. 탄다고 해서 불이 날 정도는 아닌데 SD카드를 뽑아 보니 인터페이스 금속면이 대단히 뜨거웠던 기억이 남아 있다.

그때 당시 라즈베리파이 보드와 Opencv를 다루는 실력이 거의 바보 수준이라면 지금은 상당히 노련해 졌다고 스스로 자평해 본다. 최근에는 임베디드 VPU(Vision processing Unit)인 Intel Compute Stick2를 사용하면서 OpenVINO를 설치하여 실시간으로 연동된 파이 카메라로 자동차 인식 코드를 성공적으로 실행시켜 보았다. 아직은 분류 가능한 클라스 수가 31종에 불과하지만 머지않아 그 성능이 빠르게 업데이트 될 것으로 보인다.

 

7-22 RaspberryPI B + Intel OpenVINO + NCS2 + PiCamera 실시간 AI 시스템

http://blog.daum.net/ejleep1/907

 

그렇다면 2017년부터 지금까지 Opencv 코드를 배우는 과정에서 라즈베리 파이 보드에서 해봐야 하지만 빠뜨린 부분들이 없나 검토해보니 이미 출현한 여러 종류의 이미지 classifier들이 있었는데 Transfer Learning을 대상으로 PyTorch에서만 다루어 보았으며 그것도 GPU 컴퓨팅 지원이 되는 구글 크롬의 Colabo에서 다루어 보았다. 이러한 내용들은 아래 그림의 최근에 출간한 저서 “파이선 코딩 초보자를 위한 Scikit∙PyTorch 머신러닝” 7장에서 AlexNet을 비롯한 2012년에서 2017년까지 발전 된 이미지 네트워크에 관한 내용들을 다루었다.

 

 

 

하지만 이 단계에서 놓쳤던 점 한 가지가 딥 러닝 예제 실행에 GPU에 의한 컴퓨팅 지원이 필수적이라고 착각했었다는 점이다. 사실은 Pre-train 된 모델을 불러 쓰기 때문에 100초 수준으로 그다지 실행 시간 부담이 없었다고 보아야 할 것이다.

한편 라즈베라 파이 보드에서 딥러닝에 관한 중요한 자료가 2017년에 Opencv를 사용하여 googlenet.caffemodel을 사용한 5개의 예제를 제공하는 Adrian의 블로그 게재가 있었다. 이 블로그는 지난번에 Intel Neural Compute Stick2를 라즈베리 파이에서 사용하기 위한 Adrian의 예제 코드를 다루면서 Adrian 이 읽어 보라고 추천했던 내용이다.

 

Deep Learning with OpenCV

https://www.pyimagesearch.com/2017/08/21/deep-learning-with-opencv/

 

한편으로는 이미 Jetson Nano 보드에서 AI World를 설치하면서 실시간 파이카메라 연동이 되는 GoogleNet 예제를 얼마 전에 다루었기는 하다.

Jetson Nano보드에서 Picamera 설치와 OpenCV 버전 2에 의한 안면인식

http://blog.daum.net/ejleep1/891

 

하지만 Jetson Nano 보드는 GPU 컴퓨팅 지원이 되는 보드이지만 라즈베리 파이 보드는 다 알다시피 까딱 컴퓨팅 부하가 심하다 싶으면 계산 결과를 못 받아 보기 십상이기 때문에 Adrian의 예제가 더욱 가치가 있어 보인다. 이 예제를 해 보고 싶으면 Adrian 블로그 끝 부분에 위치한 Downloads 에 들어가 자신의 이메일을 전송해 주면 다운로드 사이트를 알려주므로 다운 받아 압축을 풀고 실행하면 된다.

 

단지 주의할 점은 이미 Adrian 의 방식대로 Opencv가 설치되어 있다면 터미널을 열어 행하고자 하는 파이선 코드가 있는 폴더로 이동해서 다음의 command line 명령을 반드시 실행하자.

 

 


tree 명령을 사용하여 Adrian 으로부터 다운 받은 파일을 사용하여 다음과 같이 실행해 보자. Adrain 의 블로그와 동일한 결과가 얻어 졌으나 classification took + 소요 시간 정보에서 Adrian 의 라즈베리 파이는 대단히 적은 시간이 사용되었으나 내 라즈베리 파이는 23초가 소요되었다.

 

 

 

4개의 예제문제 인식률을 관찰해 보자.

 

 

 

딥러닝을 배우는데 구체적인 이론까지 처음부터 다 알면 좋으나 일단 코드의 성공적 실행이 가능하다면 필자처럼 시간을 가지고 찬찬히 공부하는 것도 괜찮을 듯하다.