【问题标题】:TensorFlow Lite PoseNet on Android crashes because of memoryAndroid 上的 TensorFlow Lite PoseNet 因内存问题而崩溃
【发布时间】:2021-02-19 22:29:15
【问题描述】:

我正在尝试创建一个使用 TensorFlow Lite PoseNet 进行人体姿势估计的 Android 应用。 我遇到的问题是本机内存缓慢增加,直到崩溃。 即使我运行demo app,它也会在大约 20 分钟后在我的 S10 上崩溃。 我尝试对其进行分析,但我认为这不是泄漏,因为如果我对其进行编码以便解释器中断,那么垃圾收集就能够跟上。

我想让它以大约每秒 15 次的速度进行估计,这在几分钟内似乎做得很好。有没有办法调整它以使其运行更长时间,或者在三星 S10 等设备上运行是否不切实际?

【问题讨论】:

    标签: android tensorflow


    【解决方案1】:

    Android PoseNet 演示应用中存在内存泄漏,除非您启用window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON),否则不会引起注意

    PosenetActivity.kt captureSession!!.setRepeatingRequest 正在使用一个 backgroundHandler,它持有一个阻止本机内存被清理的引用。 setRepeatingRequest 不需要回调和处理程序。 改变这个

          previewRequest = previewRequestBuilder!!.build()
          captureSession!!.setRepeatingRequest(
            previewRequest!!,
            captureCallback, backgroundHandler
          )
    

      previewRequest = previewRequestBuilder!!.build()
      captureSession!!.setRepeatingRequest(
        previewRequest!!,
        null, null
      )
    

    修复内存泄漏。

    此外,演示应用 Posenet.kt 被编码为使用 CPU,这可能有助于支持更大范围的设备,但将其切换到 GPU 或 NNAPI 会显着加快速度。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多