2019年1月4日金曜日

ML Kit Custom Model その3 : Mobilenet_V1_1.0_224_quant を CloudModel として使う

前回の「ML Kit Custom Model その2 : Mobilenet_V1_1.0_224_quant を LocalModel として使う」では、assets に tflite ファイルをバンドルして LocalModel として利用しました。

今回は firebase 上に tflite ファイルをホストして CloudModel として利用します。

まず firebase console から tflite ファイルをアップロードします。



モデル名は mobilenet_v1_quant にしました。この名前はアプリ側からモデルを指定するときに使います。


firebase にホストしてある model を使うには FirebaseCloudModelSource を用意します。 FirebaseCloudModelSource.Builder() の引数には firebase console で設定したモデル名(ここでは "mobilenet_v1_quant")を指定します。

モデルが更新されたときにダウンロードするようにするには enableModelUpdates() で true を指定します。

setInitialDownloadConditions() で初回ダウンロード時の、setUpdatesDownloadConditions() で更新モデルダウンロード時の設定をすることができます。設定の FirebaseModelDownloadConditions はFirebaseModelDownloadConditions.Builder を使って生成します。設定できる項目は requireCharging(), requireDeviceIdle(), requireWifi() です。

作成した FirebaseCloudModelSource は FirebaseModelManager.registerCloudModelSource() で登録しておきます。

FirebaseModelOptions.Builder の setCloudModelName() には FirebaseCloudModelSource.Builder() の引数に指定した名前(ここでは "mobilenet_v1_quant")を渡します。

最後に FirebaseModelOptions を渡して FirebaseModelInterpreter のインスタンスを取得します。

private val interpreter: FirebaseModelInterpreter by lazy { val cloudModelSource = FirebaseCloudModelSource.Builder("mobilenet_v1_quant") .enableModelUpdates(true) .setUpdatesDownloadConditions( FirebaseModelDownloadConditions.Builder() .requireWifi() .build() ) .build() FirebaseModelManager.getInstance().registerCloudModelSource(cloudModelSource) val modelOptions = FirebaseModelOptions.Builder() .setCloudModelName("mobilenet_v1_quant") .build() FirebaseModelInterpreter.getInstance(modelOptions)!! }

interpreter を使って推論を行う部分は前回の「ML Kit Custom Model その2 : Mobilenet_V1_1.0_224_quant を LocalModel として使う」と同じです。



0 件のコメント:

コメントを投稿