Tensorflow Lite(Tflite)는 mobilem embedding, IoT device에서 모델을 사용할 수 있도록 변환해주는 툴입니다.
조금더 자세히 알아보자면 추론을 위해 개발된 오픈소스 딥러닝 프레임 워크 입니다.
https://pub.dev/packages/tflite
flutter 에서 사용 가능한 라이브러리 입니다. puspecyaml 파일에 적용하면 사용할 수 있습니다.
Unhandled Exception: PlatformException(Faild to run model..)
-> Tflite 모델을 불러올때 문제가 생긴다. github, stackoverflow 등 여러 방면으로 찾아본 결과 대부분의 공통된 질문과 답변을 찾을 수 있었고, 재해석해 본 결과로 이 문제를 해결할 수 있었다.
Tflite GPU Delegate 문제이다. TfliteModel을 불러오는 함수 Tflite.loadModel 에서 기기 CPU를 사용하는 방식이 아닌 성능을 높이기 위해 GPU를 사용하려 하다가 발생했다.
우선 시도해본 방법중 세 가지 정도 나눌 수 있었다
build.gradle -> dependencies(add)
implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly' implementation 'org.tensorflow:tensorflow-lite-gpu:0.0.0-nightly'
runModel 을 SSDmobileNet, Yolo etc..
OpenGL ES version check
https://developer.android.com/guide/topics/graphics/opengl?hl=ko
OpenGL(Open Graphic Library)은 3D 그래픽 처리 소프트웨어를 지정하는 그래픽 API 이다.
OpenGL(Open Graphic Library) ES 3.0 기기인 Galaxy J5를 가지고 테스트 해본 결과 ES3.0인 버전에서는 GPU를 사용할 수 없었다. 해서 기기를 바꿔 OpenGL ES 3.2 를 가지고 있는 기기로 테스트 해본 결과 GPU Delegate 를 잘 사용되어 졌고, 인식 함수, Tflite 모델을 불러오는 과정도 정상적으로 작동이 된다.
만약 테스트용 기기가 OpenGL ES 3.1 이상 버전인지 확인하고 진행해주면 된다.