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 のインスタンスを取得します。

  1. private val interpreter: FirebaseModelInterpreter by lazy {  
  2.   
  3.     val cloudModelSource = FirebaseCloudModelSource.Builder("mobilenet_v1_quant")  
  4.         .enableModelUpdates(true)  
  5.         .setUpdatesDownloadConditions(  
  6.             FirebaseModelDownloadConditions.Builder()  
  7.                 .requireWifi()  
  8.                 .build()  
  9.         )  
  10.         .build()  
  11.   
  12.     FirebaseModelManager.getInstance().registerCloudModelSource(cloudModelSource)  
  13.   
  14.     val modelOptions = FirebaseModelOptions.Builder()  
  15.         .setCloudModelName("mobilenet_v1_quant")  
  16.         .build()  
  17.   
  18.     FirebaseModelInterpreter.getInstance(modelOptions)!!  
  19. }  


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



0 件のコメント:

コメントを投稿