텐서플로우 라이트

9-4 텐서플로우 라이트 예제: Try it on Rapberry Pi(Image Classification)

coding art 2020. 4. 22. 16:04
728x90

구글이 선두를 달리고 있는 머신러닝 MObile IOT 예제들 중에서 Image Classification 예제가 Android, iOS RaspberryPi 용으로 올라와 있다. Android 용은 그 성능이 그런대로 괜찮은 편이지만 PiCamera를 사용하는 RaspberryPi 용도 호기심을 가질만하여 시도해 보고 다음과 같이 그 과정 및 요령에 관해서 기록을 제공하는 바이다. 성능에 관해서 큰 기대를 할 필요는 없으리라.

TensorFlow 진영뿐만 아니라 PyTorch에서도 마찬가지로 Mobile IOT 에 대한 R&D 가 이미 시작되었다는 공지가 뜬 상황이므로 아울러 RaspberryPi 도 무시할 수 없는 비중을 가지므로 머신러닝을 공부한다면 공부삼아서 반드시 한 번은 거쳐 가야할 길이다.



라즈베리 파이 OS 설치 및 Configuration에서 Camera Enable 설정

라즈베리 파이 보드 입 수 후 SD 카드에 최근의 Raspbian Buster 버전을 설치한다. 하지만 Opencv 설치도 필수적이므로 본 블로그에서처럼 Stretch 버전도 사용해 보니 별 문제는 없었다.

 

텐서플로우 라이트 런타임 설치(Install the TensorFlow Lite runtime)

TensorFlow Lite API에서 반드시 필요한 것이 머신러닝 학습결과를 가져다 쓰기위한 클라스인 Interpreter 이다. 텐서플로우 라이브러리 자체는 라즈베리파이에 설치하기에는 지나치게 크므로 반드시 필요한 작은 크기의 라이브러리인 tflite_runtime을 설치하여 Interpreter를 사용하도록 하자.


아울러 자신이 라즈베리파이 보드에 설치한 파이선 버전에 맞추도록 한다. 터미널에서 다음과 같이 Opencv 가상환경에 들어가 파이선 버전을 확인하자. 3.5~3.7버전들이 보급되어 있다.


구글 홈페이지에서 Python quick start에 들어 가보면 다음과 같이 pip3 ∙∙∙명령이 있는데 이는 파이선 3.7 버전용이므로 자신의 버전에 맞춰서 선택해야 한다.


pip3∙∙∙와 리스팅 된 라즈베리파이 Linux(ARM32)에서 버전이 일치해야 한다. 필자의 경우 3.5버전이 설치되어 있었으므로 그에 맞춰 선택하고 이 부분을 클론(Clone: Copy & Pase)하여 터미널에서 실행 후 Successfully installed tflite-runtime을 확인하자.


텐서플로우 라이트 예제 다운로드(Download the example files)

구글 홈페이지의 Mobile IOT 예제들을 몽땅 GitHub에서 Clone 명령에 의해 다운로드 받자.


bash download/tmp 명령을 실행하여 model labels 에 해당하는 ∙∙∙.tflite ∙∙∙.txt를 다운 받는다. Mobile IOT 예제들은 한 번 다운 받으면 되지만 이 명령은 classify_picamera.py 를 실행시키기 전에 매번 반드시 실행해야 한다.


준비가 완료되었으면 터미널에서 commandline 명령 즉 classify_picamera.py model ∙∙∙을 실행하자. \ 는 줄 바꿈을 뜻하므로 실제로는 길더라도 한 줄로 입력하여 처리한다.


실행해 본 결과 파이선 코드에서 해상도가 (640,480)에도 불구하고 훨씬 큰 화면이 출력되며 오브젝트 인식이 되긴 되지만 성능은 안드로이드 스마트폰과 비교 시 별로 인 듯하다.