[목차]


필자는 인공지능 개발에 활용이 가능한 Edge TPU 가속모듈인 USB 타입 구글 코랄(Coral) 장치를 구입하고 코랄 공식홈페이에 제시된 예제인 분류모델을 실행해보았습니다. 이미지 파일을 입력받아 분류하는것이라 카메라의 실시간 영상을 입력받아 처리할수 있는 방법이 궁금하였습니다. 검색을 하다 보니 라즈베리파이 3와 구글 코랄 USB 장치를 활용하여 Mobilenet-SSD v2로 카메라의 영상에서 사물을 디텍션하고 분류하는 내용을 찿아볼수 있어 실행해보기로 하였습니다.



■ 테스트 장치 환경

영상을 입력받아 발견(Detection)하고 이를 분류(Classification)하기 위해서는 이전 포스트 [2. 구글 코랄(Coral) 환경설정 및 예제 분류 모델 실행해보기.] 에서 활용했던 장치인 Raspberry3 b+USB 구글 코랄(Coral) 가속기외에 카메라 장치가 추가로 필요했습니다. 필자의 라즈베리파이는 케이스에 조립한 상태라 이번 포스트는 USB 웹캠을 사용하였습니다. 


필자가 사용한 장치인 라즈베리파이3 b+, Google Coral Accelerator, Logitech C270 웹캠입니다.

장치를 연결후 USB 장치가 잘 인식되었는지 확인해보기위해 lsusb 명령어를 입력해보았습니다.

> lsusb
Bus xxx Device xxx: ID xxxx:xxxx Google Inc.
Bus xxx Device xxx: ID xxxx:xxxx Logitech, Inc. Webcam C270

구글 코랄(Coral) 딥러닝 추론 가속기 장치와 로지텍(Logitech) C270 웹캠 장치가 정상적으로 인식된것을 확인할수 있었습니다.



■ 실행코드 및 Open CV 설치

필자가 참조한 일본어 사이트의 포스트는 파이선 코드를 명세하고 있었습니다. 해당코드를 직접 편집기에 작성하여 py 파일을 생성하였습니다. 모델과 라벨파일은 예제 분류모델을 실행할때 다운받은것을 활하면되었기 때문에 파이썬 실행 파일만 생성하면 실행이 가능하였습니다. 파일의 생성 순서는 다음과 같습니다.

> cd /home/pi/python-tflite-source/edgetpu/demo
> nano MobileNet-SSD-TPU-async.py

i. 위의 명령어를 입력하여 nano 편집기를 실행시킵니다.

ii. https://qiita.com/PINTO/items/dd6ba67643bdd3a0e595 사이트에 접속하여 4-2 항목의 MobileNet-SSD-TPU-async.py 코드를 복사하여 붙여넣습니다.

iii. ctrl + o 키를 눌러 저장한후 ctrl + x 키를 눌러 편집기를 종료합니다..


실행해 보려고 하니 에러를 출력하는군요 MobileNet-SSD-TPU-async.py 파일의 코드를 확인해보니 import cv2 라인을 포함하고 있었습니다. 라즈베리안의 pythone3 에서 openCV를 사용하기위해 openCV를 빌드해보았으나 너무 오래걸리는 관계로 AI Robots KR 커뮤니티 카카오톡 오픈채팅방의 Gygy님께서 알려주신 링크인 [라즈베리파이 OpenCV 설치(빌드 없이 설치파일로)] 포스트의 내용을 참고 하여 OpenCV를 설치하였습니다.



■ 실행해보기 및 결과

OpenCV 설치가 완료 되었으니 실행을 해보기로 했습니다. 파이썬 코드만 작성하였기 때문에 모델과 라벨 파일을 지정해야 합니다. 참고한 일본어사이트에는 실행 명령어를 제시하고 있지 않는군요 일본어 사이트 포스트 제목에 MS-COCO라는 문구가 존재하네요 Edge TPU런타임의 디렉토리를 살펴보니 지정할수 있는 모델과 라벨 파일이 존재하고 있어 이것을 사용하기로 하고 명령어를 입력하였습니다.

> cd /home/pi/python-tflite-source/edgetpu/
> python3 demo/MobileNet-SSD-TPU-async.py --model test_data/mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite --label test_data/coco_labels.txt


위의 명령를 실행시켜보니 C270 카메라로 받은 영상이 정상적으로 디텍팅 되고 분류가 수행되는군요 (필자는 98% 사람으로 인식되는군요 그럼.... 나머지 2%는.....?????? ^^ ) 포스트의 사진에 표시된 플레이백 프레임과 디텍션 프레임은 참고한 사이트의 수치보다 낮은 수치가 나오고 있지만 라즈베리파이가 장시간 opencv 를 빌드하느라 발열로 인하여 성능이 떨어진 상태에서 실행한것을 촬영한것이라 낮게 나온것 같네요 다음날 다시 실행해보니 꽤 올라간 프레임 수치가 나오는것을 확인할수 있었습니다.


- 2019.04.15 달의날에 프미케 -

+ Recent posts