【问题标题】:How long can Android Camera2 run?Android Camera2 能运行多久?
【发布时间】:2022-08-22 21:55:21
【问题描述】:
我对在 Android 设备上运行 Camera 有点陌生,所以我想问这个非常陌生的问题。使用 Camera2 API 的相机可以运行多长时间,使其即使每天都可以连续运行?如果是这样,那有效吗?
有点上下文,我目前参与了一个项目,该项目计划连续使用相机并在该图像输入上运行 Pose Estimation(使用 TFlite API)以检测一些可能有趣的姿势(尚未确定)以触发一些行动(例如 - 发起与智能扬声器的对话)。因此,我们希望相机和模型能够长时间连续工作以收集数据并尽可能触发动作。但是,我们进行了测试,应用程序在运行约 9 小时后崩溃。因此,我怀疑这是否是一些错误,或者相机本身和模型是否有可能连续有效地运行?如果有人熟悉使用 Camera2 API,如果可能的话,使用 ML 模型,给我一些建议,这将是很好的。非常感谢 :\')
标签:
android-camera2
tflite
【解决方案1】:
我认为我可以提出几点建议。我假设您尝试使用库存(内置)相机应用程序运行该设备,并且它可以随心所欲地运行。因为如果不能运行,成功的几率就相对较低。
- 防止过热。根据您的 ML 模型,图像处理可以快速加热某些设备,这会导致 Android 操作系统向应用程序发送终止信号。我主要在 Google Pixel 设备上遇到过这个问题,但有很多设备都有同样的问题。
- 另一点是内存管理。确保不要在每次新帧出现时都加载 TFLite 模型,而在开始时只加载一次。我认为您可以使用 android studio 内存分析器监控内存使用情况。
- 降低相机的帧率。如果它不会损坏您的用例,请将相机 fps 设置为最低。您可能不需要恒定的 30ps。您甚至可以考虑降低帧分辨率。如果一切都可以使用 640x480,请尝试。
- 查找/开发一个简单的 ML 模型,该模型将识别动作与空闲。仅当场景中有动作时才运行姿势检测模型。您甚至可以使用简单的面部检测器吗?比如:https://developer.android.com/reference/android/media/FaceDetector
- 找到一种方法来优化您可能一直在做的位图转换。例如,YUV 到 RGB 的转换可能成本很高。您可能希望使用 OpenCV 之类的库来处理图像。