是否可以将 ML Kit/TFLite 与 java 桌面应用程序集成,而不是让它们在 iOS/Android 设备上运行?
我想在扫描的文档上尝试条形码扫描功能。
谢谢
我正在关注 Codelab: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()
Run Code Online (Sandbox Code Playgroud)
注释掉“本地”模型配置,因此我强制项目使用托管的 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 …Run Code Online (Sandbox Code Playgroud) .lite和格式(TensorFlow 格式)之间有什么区别.tflite?如果没有区别,为什么会有两个?
除了这个问题之外,我似乎无法将带有.lite扩展文件的模型上传到 Firebase ML 套件。原因可能是什么?
我在货架上启动了一个新的文件编号文本识别应用程序,并在 Youtube 上使用了以下 ML Kit 文本识别: 教程 ML KIT 文本识别
只要文件编号水平写入,它就可以完美运行。当文本垂直方向并且我将手机置于横向位置时,应用程序会考虑方向并且文本识别不再起作用。
我试图添加两者
<activity android:name=".NameOfTheActivity" android:screenOrientation="portrait">
Run Code Online (Sandbox Code Playgroud)
在清单中,
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)甚至
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR)
进入 onCreate 方法。即使手机处于横向位置,活动也保持纵向模式。但是,在横向位置使用我的手机时,文本识别仍然不起作用。
Activity 代码的对应部分如下:
//Event Camera View
cameraView.addCameraKitListener(new CameraKitEventListener() {
@Override
public void onEvent(CameraKitEvent cameraKitEvent) {
}
@Override
public void onError(CameraKitError cameraKitError) {
}
@Override
public void onImage(CameraKitImage cameraKitImage) {
//Show Dialog
waitingDialog.show();
//Processing image
Bitmap bitmap = cameraKitImage.getBitmap();
bitmap = Bitmap.createScaledBitmap(bitmap, cameraView.getWidth(), cameraView.getHeight(), false);
cameraView.stop();
recognizeText(bitmap);
}
@Override
public void onVideo(CameraKitVideo cameraKitVideo) {
}
});
private void recognizeText(Bitmap bitmap) …Run Code Online (Sandbox Code Playgroud) 我像AndroidExample一样设置了 ML-Kit并使用设备上识别模式。它工作得很好。但是如果我们有一个像 'A'、'5'、'K'、'9' 这样的字符,它就无法识别任何东西!它只适用于一个以上的字符串长度!我只需要识别一个字符。我缺什么?!
这是我的函数,它获取图像的位图并从中找到文本。
private void RecognizeText(Bitmap bitmap) {
FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap);
FirebaseVisionTextRecognizer detector = FirebaseVision.getInstance()
.getOnDeviceTextRecognizer();
Task<FirebaseVisionText> result =
detector.processImage(image)
.addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText firebaseVisionText) {
String s = firebaseVisionText.getText() + " | " + firebaseVisionText.getText().length();
Toast.makeText(MainActivity.this, s, Toast.LENGTH_LONG).show();
textView.setText(s);
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Log.d("EEEEEEEEVVVVVV", e.toString());
}
});
}
Run Code Online (Sandbox Code Playgroud) 我见过一些与此错误相关的类似问题。但我没能解决这个问题。我正在使用 firebase ml 套件来识别图像中的文本。我已将 google-services.json 文件添加到应用程序目录中,但仍然遇到相同的错误。如果有人可以解决这个问题请告诉我。
我收到以下错误:
File google-services.json is missing. The Google Services Plugin cannot function without it.
Searched Location:
E:\Practices\Android Projects\2019\DataFactor\app\src\nullnull\debug\google-services.json
E:\Practices\Android Projects\2019\DataFactor\app\src\debug\nullnull\google-services.json
E:\Practices\Android Projects\2019\DataFactor\app\src\nullnull\google-services.json
E:\Practices\Android Projects\2019\DataFactor\app\src\debug\google-services.json
E:\Practices\Android Projects\2019\DataFactor\app\src\nullnullDebug\google-services.json
E:\Practices\Android Projects\2019\DataFactor\app\google-services.json
Run Code Online (Sandbox Code Playgroud)
我的项目的 build.gradle :
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.1'
classpath 'com.google.gms:google-services:4.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行一个脚本以从 tensorflow .pb 模型中获取文本摘要,如下所示:
OPS counts:
Squeeze : 1
Softmax : 1
BiasAdd : 1
Placeholder : 1
AvgPool : 1
Reshape : 2
ConcatV2 : 9
MaxPool : 13
Sub : 57
Rsqrt : 57
Relu : 57
Conv2D : 58
Add : 114
Mul : 114
Identity : 231
Const : 298
Run Code Online (Sandbox Code Playgroud)
我总体上尝试将 .pb 模型转换为 .coremlmodel 并关注这篇文章:
https://hackernoon.com/integrating-tensorflow-model-in-an-ios-app-cecf30b9068d
从 .pb 模型中获取文本摘要是朝着这个目标迈出的一步。我尝试运行来创建文本摘要的代码如下:
import tensorflow as tf
from tensorflow.core.framework import graph_pb2
import time
import operator
import sys
def inspect(model_pb, output_txt_file): …Run Code Online (Sandbox Code Playgroud) 我已经阅读了有关 ml kit 教程的所有内容https://firebase.google.com/docs/ml-kit/android/recognize-text。我只对本地 ocr 感兴趣,而不是云版本。当然,正如问题所暗示的那样,它与文本识别有关。
我正在开发一个跨平台应用程序(iOS/Android/Web),并且喜欢移动设备上的 ML Kit 快速、廉价的设备上图像标签功能。有没有办法复制网络上的行为?ML Kit 模型是否可以与不同的 ML 库一起重复使用,以便重新调整用途?
我正在使用适用于 Android 的 MLKit 人脸检测 SDK 来检测用户脸部的轮廓。
遵循本指南 ( https://developers.google.com/ml-kit/vision/face-detection/android ) 时,它展示了开发人员如何 (1) 将人脸检测模型文件捆绑到已编译的 apk 中,或者 (2 )在运行时从 Google Play Services 下载人脸检测模型文件。
我正在尝试在各种嵌入式设备上运行此 SDK。在所有这些设备中,如果我使用选项 (1),则 SDK 可以完美运行。如果我使用选项(2),在我的某些设备上,人脸检测模型永远不会被下载。
当我使用选项 (1) 并编译我的 apk 时,我看到 MLKit 在我的 apk 文件的 asset 目录中捆绑了一个名为“models”的文件夹。“models”文件夹包含以下 .tflite、.tfl、.emd 和 .pb 文件:
所有这些引出了我的实际问题:如果我自己将这些文件部署到设备上(在我配置设备时,或通过我自己的下载机制),我可以指示 SDK 在哪里查找它们吗?或者我可以将这些文件作为自定义模型上传到 Firebase,以便我可以自己控制下载(如果我将这些文件作为自定义模型上传到 Firebase,我需要上传哪些文件 - 全部?)
需要明确的是:虽然我可以使用上面的选项 (1) 并且它可以工作,但我试图使我们的 apk 文件尽可能小,并且排除模型文件会使我的 apk 大小减少约 16 MB。
谢谢你!
firebase-mlkit ×10
android ×6
firebase ×4
google-mlkit ×2
tensorflow ×2
coreml ×1
ocr ×1
parsing ×1
python ×1