
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 件のコメント :
コメントを投稿