【问题标题】:SSD mobile net v2 does not detect objects on androidSSD mobilenet v2 未检测到 android 上的对象
【发布时间】:2021-01-29 11:07:32
【问题描述】:

我训练了一个 tensorflow 模型(SSD MOBILE NET V2)并转换为 tflite 以使用 tensorflow 对象检测演示应用在 android 上进行检测,但该模型未检测到任何对象`

0

021-01-28 16:25:30.228 15761-15761/org.tensorflow.lite.examples.detection E/tensorflow:CameraActivity:异常! java.lang.IllegalStateException:此模型不包含关联文件,并且不是 Zip 文件。 在 org.tensorflow.lite.support.metadata.MetadataExtractor.assertZipFile(MetadataExtractor.java:325) 在 org.tensorflow.lite.support.metadata.MetadataExtractor.getAssociatedFile(MetadataExtractor.java:165) 在 org.tensorflow.lite.examples.detection.tflite.TFLiteObjectDetectionAPIModel.create(TFLiteObjectDetectionAPIModel.java:126) 在 org.tensorflow.lite.examples.detection.DetectorActivity.onPreviewSizeChosen(DetectorActivity.java:99) 在 org.tensorflow.lite.examples.detection.CameraActivity.onPreviewFrame(CameraActivity.java:200) 在 android.hardware.Camera$EventHandler.handleMessage(Camera.java:1288) 在 android.os.Handler.dispatchMessage(Handler.java:107) 在 android.os.Looper.loop(Looper.java:213) 在 android.app.ActivityThread.main(ActivityThread.java:8178) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101) 2021-01-28 16:25:30.669 15761-15782/org.tensorflow.lite.examples.detection W/System:资源调用关闭失败。 2021-01-28 16:25:30.669 15761-15782/org.tensorflow.lite.examples.detection W/System:资源调用关闭失败。 2021-01-28 16:25:33.898 15761-15761/org.tensorflow.lite.examples.detection D/AwareBitmapCacher:handleInit 开关未打开 pid=15761 2021-01-28 16:31:38.394 15761-15761/org.tensorflow.lite.examples.detection I/Camera:关闭相机:0,包名:org.tensorflow.lite.examples.detection 2021-01-28 16:31:38.403 15761-15761/org.tensorflow.lite.examples.detection I/HwCameraUtil: notifySurfaceFlingerCameraStatus : isFront = false , isOpend = false 2021-01-28 16:31:38.500 15761-15761/org.tensorflow.lite.examples.detection D/tensorflow:CameraActivity:onPause org.tensorflow.lite.examples.detection.DetectorActivity@a34eeb3 2021-01-28 16:31:39.002 15761-15818/org.tensorflow.lite.examples.detection W/libEGL:EGLNativeWindowType 0x78af41ff50 断开连接失败 2021-01-28 16:31:39.081 15761-15761/org.tensorflow.lite.examples.detection D/tensorflow:CameraActivity:onStop org.tensorflow.lite.examples.detection.DetectorActivity@a34eeb3 2021-01-28 16:31:39.317 15761-15816/org.tensorflow.lite.examples.detection D/ZrHung.AppEyeUiProbe:不看,等一下。 2021-01-28 16:31:39.565 15761-15761/org.tensorflow.lite.examples.detection D/tensorflow:CameraActivity:onDestroy org.tensorflow.lite.examples.detection.DetectorActivity@a34eeb3 2021-01-28 16:31:39.567 15761-15761/org.tensorflow.lite.examples.detection D/ActivityThread:删除活动客户端记录,r= ActivityRecord{f78d8da token=android.os.BinderProxy@2fd533b {org.tensorflow .lite.examples.detection/org.tensorflow.lite.examples.detection.DetectorActivity}} token= android.os.BinderProxy@2fd533b`

【问题讨论】:

  • 请帮忙,我已经为此苦恼了一个星期
  • 似乎您正在使用旧的 tflite 版本来转换您的模型。您可以尝试将其转换为较新的版本吗?

标签: tensorflow


【解决方案1】:

看起来您的模型不像嵌入模型那样包含任何元数据。

可能最简单的方法就是删除这个块:

    try (BufferedReader br =
        new BufferedReader(
            new InputStreamReader(
                metadata.getAssociatedFile(labelFilename), Charset.defaultCharset()))) {
      String line;
      while ((line = br.readLine()) != null) {
        Log.w(TAG, line);
        d.labels.add(line);
      }
    }

只需从 lableFilename(资产文件夹中的 labelmap.txt)中读取 d.labels。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-17
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2019-09-28
    • 2020-01-30
    • 2018-11-07
    相关资源
    最近更新 更多