[Android]tensorflow liteを動かしてみる

前回の記事で作成したtensorflow liteのモデルをAndroid Studioに取り込んでみます。

1.Android Studioでモデルを取り込む

プロジェクト内の右クリックメニュー「New - Other - Tensorflow lite Module」を選択します。

前回の記事で作成したtensorflow liteのモデルを選択します。
自動的に必要なモジュールを組み込むため、オプションにはチェックを入れます。

モデルの取り込みが完了すると入力、出力、サンプルコートが表示されます。

2.変換処理を行う

try {
    //モデルインスタンスを作成する
    ConvertedModel model = ConvertedModel.newInstance(this);

    // 入力データを作成する
    TensorImage selfieImage = TensorImage.fromBitmap(input);

    // モデルを実行し結果を得る
    ConvertedModel.Outputs outputs = model.process(selfieImage);
    TensorImage genderSwapImageMToF = outputs.getGenderSwapImageMToFAsTensorImage();
    Bitmap genderSwapImageMToFBitmap = genderSwapImageMToF.getBitmap();

    // モデルを解放する
    model.close();

    // 出力画像をViewに表示する
    runOnUiThread(()->{
        ImageView imageView = findViewById(R.id.image_output);
        imageView.setImageBitmap(genderSwapImageMToFBitmap);
    });
} catch (IOException e) {
    // TODO Handle the exception
    Log.v(TAG, "thread : error = " + e.getMessage());
    Log.v(TAG, "thread : stack = " + e.getStackTrace());
}

出力結果

CelebAの画像を使い男性から女性に変換するモデルを使って試してみました。

Colaboratoryでの出力結果は以下です。

Androidでの出力結果は以下です。

Androidでの方が画像が若干つぶれていますが、同等の出力結果が得られるようです。

0 件のコメント :

コメントを投稿