ML Model Binding(モデルバインディング)でGPUを使う方法は、「GPU上のTensorFlowLite 」には書かれていません。
「メタデータを使用してモデルインターフェイスを生成する」に書かれています。
ML Model BindingでGPUを使う場合は、以下のようにします。
build.gradle での宣言(モデルインポート時に組み込まれています。)
//tensorflow implementation 'org.tensorflow:tensorflow-lite-support:0.1.0-rc1' implementation 'org.tensorflow:tensorflow-lite-metadata:0.1.0-rc1' implementation 'org.tensorflow:tensorflow-lite-gpu:2.3.0' implementation 'org.tensorflow:tensorflow-lite:2.3.0'
コード上の宣言
//GPUを使うための処理 val compatList = CompatibilityList() val options = if(compatList.isDelegateSupportedOnThisDevice) { // GPUが使用可能なら GPU delegateを追加する Model.Options.Builder().setDevice(Model.Device.GPU).build() } else { // GPUが使用不可なら、4スレッドで動かす Model.Options.Builder().setNumThreads(4).build() } val model = ConvertedModel.newInstance(requireContext(), options) val imageProcessor = ImageProcessor.Builder() .add(ResizeOp(256, 256, ResizeOp.ResizeMethod.BILINEAR)) .build() // 入力を作成する var selfieImage = TensorImage(DataType.FLOAT32) selfieImage.load(bitmap) selfieImage = imageProcessor.process(selfieImage); // モデルを実行し、出力を得る val outputs = model.process(selfieImage) val animeImage = outputs.genderSwapImageMToFAsTensorImage val animeImageBitmap = animeImage.bitmap // モデルをクローズする model.close()
GPUを使う設定にするだけで、実行時間が1/3~1/2になります。
0 件のコメント :
コメントを投稿