我训练了YOLOv2,并将其更改为pb文件。
我将此pb文件添加到资产中,并在Android上的应用程序中添加了implementation org.tensorflow:tensorflow-android:+
。
我想使用CameraBridgeViewBase.CvCameraViewListener2
和TensorflowInferenceInterface
在Android上加载我的自定义YOLOv2。
输入张量和输出张量的名称分别为input
和output
。输入的大小为608 x 608。
这是我的代码。
public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 {
private Mat matInput;
private TensorFlowInferenceInterface tensorFlowInferenceInterface;
private String MODEL_FILE_NAME = "file:///android_asset/yolo-obj.pb";
private String INPUT_NAME = "input";
private String OUTPUT_NAME = "output";
private int[] inputs = {608, 608};
private float[] outputs;
private int number_of_classes = 6;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tensorFlowInferenceInterface = new TensorFlowInferenceInterface(getAssets(), MODEL_FILE_NAME);
tensorFlowInferenceInterface.feed(INPUT_NAME, inputs, 1, 608, 608, 3);
tensorFlowInferenceInterface.run(new String[] {OUTPUT_NAME});
outputs = new float[number_of_classes];
tensorFlowInferenceInterface.fetch(OUTPUT_NAME, outputs);
}
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
matInput = inputFrame.rgba();
return matInput;
}
}
我提到了TensorflowInferenceInterface
的{{3}}。
我不知道在onCameraFrame()中填写什么。