私はコードラボに従っています: https://codelabs.developers.google.com/codelabs/mlkit-android-custom-model/#0そのままで動作しますが、提供されたローカルモデルを削除するとすぐに強制的に使用しますクラウド モデルでは、あいまいなエラーが発生します。
私が Codelab と異なる点は次のとおりです。
// manager.registerLocalModelSource(localModelSource)
manager.registerCloudModelSource(cloudSource)
return FirebaseModelOptions.Builder()
.setCloudModelName(HOSTED_MODEL_NAME)
// .setLocalModelName("asset")
.build()
「ローカル」モデル構成をコメントアウトして、ホストされた ML Kit モデルをプロジェクトで使用するように強制します。
ただし、モデルを実行すると次のエラーが発生します。
E/MainActivity: com.google.firebase.ml.common.FirebaseMLException: The load task failed
com.google.android.gms.tasks.RuntimeExecutionException: com.google.firebase.ml.common.FirebaseMLException: The load task failed
at com.google.android.gms.tasks.zzu.getResult(Unknown Source:17)
at work.beltran.mlkitcustommodelcodelab.MainActivity$onCreate$$inlined$use$lambda$1.then(MainActivity.kt:61)
at com.google.android.gms.tasks.zzd.run(Unknown Source:26)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:172)
at android.app.ActivityThread.main(ActivityThread.java:6590)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: com.google.firebase.ml.common.FirebaseMLException: The load task failed
at com.google.android.gms.internal.firebase_ml.zzgy.zzf(Unknown Source:75)
at com.google.android.gms.internal.firebase_ml.zzgu.call(Unknown Source:8)
at com.google.android.gms.internal.firebase_ml.zzgp.zza(Unknown Source:0)
at com.google.android.gms.internal.firebase_ml.zzgq.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:172)
at android.os.HandlerThread.run(HandlerThread.java:65)
Caused by: com.google.firebase.ml.common.FirebaseMLException: Cannot load custom model
at com.google.android.gms.internal.firebase_ml.zzhn.zzey(Unknown Source:148)
at com.google.android.gms.internal.firebase_ml.zzha.zzfb(Unknown Source:75)
at com.google.android.gms.internal.firebase_ml.zzha.call(Unknown Source:0)
at com.google.android.gms.internal.firebase_ml.zzgp.zza(Unknown Source:0)
at com.google.android.gms.internal.firebase_ml.zzgq.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:172)
at android.os.HandlerThread.run(HandlerThread.java:65)
私のプロジェクトはここにあります: https://github.com/miquelbeltran/codelab-mlkit-android-custom-model/tree/4aa336d9efca6eafcd01acc9417ad194aa12233e
私が試したいくつかのもの:
- 私のプロジェクトにはインターネット アクセス許可があり、DebugView でイベントを確認できるため、Firebase Analytics は機能します。
- ローカル モデルは、ML Kit のホスト モデルと同じです。
- モデル名は正しいです。
ルート化されたエミュレーターで実行し、アプリ データ フォルダーに移動すると、次のような名前のモデル フォルダーを見つけることができます。
/data/data/work.beltran.mlkitcustommodelcodelab/no_backup/com.google.firebase.ml.custom.models/W0RFRkFVTFRd+MTo2ODI2MzU4OTg3OTY6YW5kcm9pZDozMGYwZDA3MmQ5NDBjODEx/mobilenet
ただし、フォルダは空です
私の唯一の推測: Firebase は何らかの理由でモデルをダウンロードしないことを決定し、その理由を理解できません。