LoginSignup
3
4

More than 5 years have passed since last update.

TensorFlow LiteでAndroid Neural Networks APIを(強制的に)利用する

Posted at

TensorFlow LiteでAndroid Neural Networks APIを(強制的に)利用する

TensorFlow Liteとは

TensorFlow LiteはTensor Flowのモバイル向けライブラリで、モバイル端末で機械学習モデルを実行するための機能が備わっています。


また、AndroidでTensorFlow Liteを利用する場合、Android8.1から提供されているNeural Networks API(以下NNAPI)によるハードウェア高速化が行えます。

しかし、ハードウェア高速化が見込めない場合(エミュレータ等でアプリを実行する場合)、デフォルトでNNAPIをコールせずに、CPUにフォールバックして処理を行ってしまいます。

自分のケースでは、この挙動を把握しておらず、NNAPIを利用する場合としない場合で推論の結果が微妙に変わってしまうことがあったため、今回TensorFlow Liteを用いる場合に、強制的にNNAPIを利用する方法を書こうと思います。

強制的に利用する方法

implementation 'org.tensorflow:tensorflow-lite:1.10.0'

val interpreter = Interpreter(modelFile)
interpreter.setUseNNAPI(true) // interpreterの作成時にこの1行を追加

interpreter.setUseNNAPI(true)を呼ぶことで、強制的にNNAPIを利用することができます。

注意点

しかし注意点が1つあり、自分はここでハマってしまいました。

setUseNNAPI(true)を利用する際、minSdkVersionを28以降にする必要があります

Android Neural Networks API自体はAndroid8.1(API Level 27)から追加されたものですが、API Level 27のデバイスでsetUseNNAPI(true)を有効にした場合、アプリがクラッシュしてしまいました。

まとめ

TensorFlow LiteでNNAPIを強制的に利用する場合
- interpreter.setUseNNAPI(true) を呼ぶ
- minSdkVersion は28以降にする

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4