Java 捕获图像后,标签不会返回,我的代码正确吗? 私有类推断线程扩展异步任务{ 字符串标签; @凌驾 受保护的FirebaseModelInputs后台(位图…位图){ 试一试{ 输入输出选项= 新的FirebaseModelInputOutputOptions.Builder() .setInputFormat(0,FirebaseModelDataType.FLOAT32,新int[]{11152896,1}) .setOutputFormat(0,FirebaseModelDataType.FLOAT32,新int[]{1,2}) .build(); }捕获(FireBaseMException e){ e、 printStackTrace(); } imageBitmap=Bitmap.createScaledBitmap(imageBitmap,1152896,true); int batchNum=0; 浮动[]输入=新浮动[1][1152][896][1]; 对于(int x=0;x
我在这里要做的是,获取模型实例,并对其进行操作和推理。该模型位于firebase自定义模型上。我在一个异步类中进行推理。我知道的是,我的代码没有运行和推理 我试图在我的应用程序中实现的基本上是一个摄像头应用程序拍摄照片并在firebase自定义模型上远程运行Java 捕获图像后,标签不会返回,我的代码正确吗? 私有类推断线程扩展异步任务{ 字符串标签; @凌驾 受保护的FirebaseModelInputs后台(位图…位图){ 试一试{ 输入输出选项= 新的FirebaseModelInputOutputOptions.Builder() .setInputFormat(0,FirebaseModelDataType.FLOAT32,新int[]{11152896,1}) .setOutputFormat(0,FirebaseModelDataType.FLOAT32,新int[]{1,2}) .build(); }捕获(FireBaseMException e){ e、 printStackTrace(); } imageBitmap=Bitmap.createScaledBitmap(imageBitmap,1152896,true); int batchNum=0; 浮动[]输入=新浮动[1][1152][896][1]; 对于(int x=0;x,java,android,firebase,android-fragments,Java,Android,Firebase,Android Fragments,我在这里要做的是,获取模型实例,并对其进行操作和推理。该模型位于firebase自定义模型上。我在一个异步类中进行推理。我知道的是,我的代码没有运行和推理 我试图在我的应用程序中实现的基本上是一个摄像头应用程序拍摄照片并在firebase自定义模型上远程运行 如果有人能提供帮助,请回答。如果遇到问题,最好在发布问题时创建一个新的解决方案。您为此问题发布了近300(三百)行代码。对于人们来说,在线解析和调试是非常困难的。请编辑您的问题并隔离问题,这样可以增加您获得帮助的机会。好的,谢谢您,因为我是
如果有人能提供帮助,请回答。如果遇到问题,最好在发布问题时创建一个新的解决方案。您为此问题发布了近300(三百)行代码。对于人们来说,在线解析和调试是非常困难的。请编辑您的问题并隔离问题,这样可以增加您获得帮助的机会。好的,谢谢您,因为我是这个社区的新手,所以,我不知道如何获得帮助,我将编辑此问题。
private class InferenceThread extends AsyncTask <Bitmap , Integer , FirebaseModelInputs> {
String labels;
@Override
protected FirebaseModelInputs doInBackground(Bitmap... bitmaps) {
try {
inputOutputOptions =
new FirebaseModelInputOutputOptions.Builder()
.setInputFormat(0, FirebaseModelDataType.FLOAT32, new int[]{1, 1152, 896, 1})
.setOutputFormat(0, FirebaseModelDataType.FLOAT32, new int[]{1, 2})
.build();
} catch (FirebaseMLException e) {
e.printStackTrace();
}
imageBitmap = Bitmap.createScaledBitmap(imageBitmap , 1152 ,896 , true);
int batchNum = 0 ;
float[][][][] input = new float[1][1152][896][1];
for (int x = 0; x < 1152; x++) {
for (int y = 0; y < 896; y++) {
int pixel = imageBitmap.getPixel(x, y);
// Normalize channel values to [-1.0, 1.0]. This requirement varies by
// model. For example, some models might require values to be normalized
// to the range [0.0, 1.0] instead.
input[batchNum][x][y][0] = (Color.red(pixel) - 127) / 128.0f;
// input[batchNum][x][y][1] = (Color.green(pixel) - 127) / 128.0f;
// input[batchNum][x][y][2] = (Color.blue(pixel) - 127) / 128.0f;
}
}
FirebaseModelInputs inputs = null;
try {
inputs = new FirebaseModelInputs.Builder()
.add(input) // add() as many input arrays as your model requires
.build();
} catch (FirebaseMLException e) {
e.printStackTrace();
}
return inputs;
}
@Override
protected void onPostExecute(FirebaseModelInputs inputs) {
super.onPostExecute(inputs);
interpreter.run(inputs, inputOutputOptions).addOnSuccessListener(
new OnSuccessListener<FirebaseModelOutputs>() {
@Override
public void onSuccess(FirebaseModelOutputs result) {
d("Hellow", "Success");
float[][] output = result.getOutput(0);
float[] probabilities = output[0];
BufferedReader reader = null;
try {
reader = new BufferedReader(
new InputStreamReader(context.getAssets().open("labels.txt")));
} catch (IOException e) {
e("Label file not read" , "file not buffered" , e);
}
for (int i = 0; i < probabilities.length; i++) {
String label = null;
try {
label = reader.readLine();
d("Labels", label);
} catch (IOException e) {
e("line not read" , "labels not identified" ,e);
}
i("MLKit", String.format("%s: %1.4f", label, probabilities[i]));
labels = label;
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
d("Hellow", "Failure");
}
});
//resulttextbox.setText(labels);
}
}