[Flutter] Tflite Unhandled Exception 해결방법

TaeSun·2022년 2월 8일
1

# Tflite

Tensorflow Lite(Tflite)는 mobilem embedding, IoT device에서 모델을 사용할 수 있도록 변환해주는 툴입니다.
조금더 자세히 알아보자면 추론을 위해 개발된 오픈소스 딥러닝 프레임 워크 입니다.

# How to using on Flutter ?

https://pub.dev/packages/tflite
flutter 에서 사용 가능한 라이브러리 입니다. puspecyaml 파일에 적용하면 사용할 수 있습니다.

# What problem did I face?

Error

Unhandled Exception: PlatformException(Faild to run model..)

-> Tflite 모델을 불러올때 문제가 생긴다. github, stackoverflow 등 여러 방면으로 찾아본 결과 대부분의 공통된 질문과 답변을 찾을 수 있었고, 재해석해 본 결과로 이 문제를 해결할 수 있었다.

Problem

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


Solve

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 모델을 불러오는 과정도 정상적으로 작동이 된다.

Recommend

만약 테스트용 기기가 OpenGL ES 3.1 이상 버전인지 확인하고 진행해주면 된다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN