Jetson Nano

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

coding art 2019. 11. 4. 21:42
728x90

머신 러닝 알고리듬을 배우려는 파이선 코딩 초보자들이 가지게 될 확률이 높은 의문점들을

하나하나 찾아내어 실제 풀어보고 결과를 확인해볼 수 있는 머신 러닝! 학습용 코드는 블로그

 url 주소에 수록되어 있음. 인터넷 교보문고에서 450페이지19900원에 판매중입니다.

일단 시작하세요. 길이 보입니다.

 

 

_______________________________________________________________________________________________________

 

라즈베리 파이 보드에서 설치하여 사용하던 PicameraJetson Nano 보드에도 설치해 보자. 라즈베리 파이 보드에서의 설치법과는 완전히 다름에 유의하자. Jetson 계열 보드는 MIPI-CSI(Mobile Industry Processor Interface-Camera Serial Interface) 표준을 지원하고 있다.

 

Picamera 설치 명령과 아울러 샘플 코드를 포함 CSI-Camera repository on Githuburl 주소는 다음과 같다. https://github.com/JetsonHacksNano/CSI-Camera

터미널에서 아래와 같이 git clone 명령을 입력하여 실행하면 HomeCSI-Camera 폴더가 생성된다. CSI-Camera 폴더로 들어가 보면 파이선 2.7 버전에서 실행이 가능한 face_detect.py, simple_camera.cpp simple_camera.py 가 있음을 알 수 있다.

 

 


일단 위 터미널의 CSI-camera$에서 git hub에서 다음 명령을 복사하여 붙이면 자동으로 960X616 해상도의 카메라 캠코더가 실행된다.

$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM),width=3820, height=2464, framerate=21/1, format=NV12' ! nvvidconv flip-method=0 ! 'video/x-raw,width=960, height=616' ! nvvidconv ! nvegltransform ! nveglglessink -e

 

위 명령은 Jetson Nano 보드에서 GStreamer가 파이카메라를 테스트해 볼 수 있도록 사용되는 루틴이다.  3820X2464 해상도에 초당 21 프레임을 지원하는 GStreamer는 960X616 윈도우 해상도로 디스플레이 가능하며  CSI-camera 폴더에 들어 있는 simple_camera.cpp과 simple_camera.py에서 사용된다. 사용자가 카메라 응용 시에 이미 설치 된 GStreamer 루틴을 넣어서 코드를 작성하도록 한다. 라즈베리 파이에서와는 그 방법이 다소 다름에 유의하자.

한편 OpenCV  cv2에서 Haar Cascades 라이브러리를 사용하는 안면 인식 코드 face_detect.py에서도 GStream pipeline 이 사용된다. python face_detect.py 명령을 실행하면 다음 그림과 같이 안면 인식이 이루어진다. 라즈베리 파이에서도 파이카메라를 사용하여 동일한 결과를 얻을 수 있지만 GPU연산이 지원되는 Jetson Nano에서 실행 속도는 라즈베리 파이에 비할 바가 아니다.

 

 

-------------------------------------------------------------------------------------------------------------------------------------------------------

 

텐서플로우 MNIST  에서 시작해서 1권이 출간된 후에도  아직은 끝나지 않은 머신 러닝 스토리를 좀 더 파헤쳐 본 작업일지인  2권까지 훝어 보면 어느 정도 머신 러닝의 카테고리를 이해 하게 될 것으로 믿는다. 현재는 2권을 넘어서도  지금 현재 전 세계적으로 현재 진행형이라 할 수 있는 자율주행을 이해하기 위한 노력으로서 Jetson Nano 보드를 대상으로 자율주행이 가능한 RC카를 제작하고 있는 상태에 머물러 있다.