【发布时间】:2020-03-01 19:26:29
【问题描述】:
我是 Android 开发新手(更多 Python 和 ML 工程师),但想尝试 TensorFlow 中的这个示例:TF Lite Transfer Learning.
我在 Android Studio 上成功运行了它,但发现我无法对应用程序执行任何操作,因为它运行速度非常慢。我正在挖掘代码以找到根本原因并发现了这一点。
在函数CameraFragment::startCamera() 中创建预览上下文
PreviewConfig config = new PreviewConfig.Builder()
.setLensFacing(LENS_FACING)
.setTargetAspectRatio(screenAspectRatio)
.setTargetRotation(viewFinder.getDisplay().getRotation())
.build();
Preview preview = new Preview(config);
preview.setOnPreviewOutputUpdateListener(previewOutput -> {
ViewGroup parent = (ViewGroup) viewFinder.getParent();
parent.removeView(viewFinder);
parent.addView(viewFinder, 0);
以及我们可以保留为空的其他用例:
final ImageAnalysisConfig imageAnalysisConfig =
new ImageAnalysisConfig.Builder()
.setLensFacing(LENS_FACING)
.setTargetResolution(new Size(224, 224))
.setCallbackHandler(new Handler(inferenceThread.getLooper()))
.setImageReaderMode(ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
.build();
final ImageAnalysis imageAnalysis2 = new ImageAnalysis(imageAnalysisConfig);
imageAnalysis2.setAnalyzer((image, rotationDegrees) -> { });
我们有一条新线让它们栩栩如生:
CameraX.bindToLifecycle(this, preview, imageAnalysis2);
这就是问题的开始。如果我们这样保留它们,应用程序将无法使用。但是,如果我们只保留一个(任何一个),我们可以使用该应用程序以使所有导航都正常工作。你知道是什么导致了这种行为吗?
【问题讨论】:
标签: android android-studio tensorflow machine-learning android-camerax