[라즈베리파이] TensorFlow Lite, Open CV를 이용한 사물인식
매트랩에서 이미지프로세싱하는법을 간단히 배웠었다.
영상처리에 관해 교수님께서 다양한 말씀을 해 주셔서 라즈베리파이와 카메라로 영상처리를 해보고 싶었다.
국내 자료로 찾기 힘들어서 유튜브에 영어로 검색해보니 많은 자료를 찾을 수 있었다.
이번 포스팅에서는 사물인식하는 과정만 다루고 차선검출은 다음 포스팅에서 다뤄보자.
'Tensor Flow'란 무엇인가?
Tensor Flow는 구글에서 개발한 오픈소스 소프트웨어 기계학습 라이브러리이다.
해당 라이브러리로 인공지능, 머신러닝 등 다양한 작업을 할 수 있다.
이번 포스팅에서는 'Tensor Flow Lite'를 사용하는데 기존 텐서플로우에서 임베디드장치에 사용 할 수 있도록
경량화시킨 버전이다.
'Open CV'란 무엇인가?
Open CV는 인텔에서 개발한 실시간 이미지 프로세싱 라이브러리이다.
라즈베리파이에 카메라를 연결해서 실시간으로 영상처리를 한다.
라즈베리파이설정(터미널)
1. 파이 update & upgrade
~ $ sudo apt-get update
~ $ sudo apt-get upgrade
2. Tensor Flow Lite설치(TFLite)
사물인식할 수 있도록 미리 학습된 라이브러리를 깃헙에서 불러온다.
~ $ git clone https://github.com/EdjeElectronics/TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi.git
위의 작업을 하면 home -> pi 디렉토리에 TensorFlow-Lite로 시작하는 파일이 생성된다.
파일의 이름이 길고 복잡하니 tflite1으로 바꿔주자.
~ $ mv TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi/ tflite1
3. tflite1디렉토리에서 파이썬 가상환경 모듈과 Open CV를 설치한다.
아래 작업은 약 400MB용량을 다운받기 때문에 다소 시간이 걸린다.
~ $ cd tflite1
~/tflite1 $ sudo pip3 install virtualenv
~/tflite1 $ python3 -m venv tflite1-env
~/tflite1 $ source tflite1-env/bin/activate
(tflite1-env)~/tflite1 $ bash get_pi_requirements.sh
만일 터미널을 종료하고 다시 작업을 해야 한다면 다시 디렉토리 이동을 시켜야 한다.
~ $ cd tflite1
~/tflite1 $ source tflite1-env/bin/activate
(tflite1-env)~/tflite1 $
4. 사물인식 기계학습 모델 다운받기
텐서플로우에서 예제로 제공하는 기계학습 모델을 다운받아서 라즈베리파이 pi디렉토리에 추가한다.
압축된파일이기 때문에 명령어로 압축을 푼 후 이름을 작업하기 쉽도록 재정의해준다.(ex. TFLite_model)
(tflite1-env)~/tflite1 $ unzip coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip -d TFLite_model
5. 파이카메라 or 웹캠연결
마지막으로 파이의 카메라 혹은 웹캠을 통해 사물인식을 하는지 확인해보자.
아래 명령을 실행하면 자동으로 카메라를 통한 영상이 나오며 사물을 인식 할 것이다.
키보드의 q를 누르면 종료된다.
(tflite1-env)~/tflite1 $ python3 TFLite_detection_webcam.py --modeldir=TFLite_model
6. 결과확인
이번 활동에서 사용한 사물인식모델은 구글에서 배포한 모델이며 정말 기본적인 사물 60여가지만 인식한다.
결론 및 느낀점
이번에는 인터넷에 배포되어있는 오픈소스를 갖고 간단한 사물인식을 해보았다.
사실 이 과정에는 기계학습모델, 영상처리 알고리즘 등 복잡한 코드로 구성되어있지만
이런 코드를 해석하지 않고 오픈소스 그대로 복사, 붙여넣기를 한것밖에 없다.
아직 파이썬과 리눅스, 머신러닝을 깊게 배우지 않아서 따라하는데도 어려움이 있었다.
학교 교과과정을 보면 리눅스와 머신러닝이 4학년 과정이라 그때 배우려면 많이 늦는다고 생각한다.
따라서 시간이 날때마다 틈틈이 혼자서 공부해야겠다.
우선 방학이 1달가량 남았기 때문에 쉬운 파이썬부터 공부해보자.
[참고]
1. 가이드
2. 오픈소스코드
3. 사물인식모델