TensorFlow lite 多线程推理遇到的问题

262 阅读1分钟

移动端使用TensorFlow lite 进行2张人脸照片对比,以Redmi K30 Ultra为例大概时间为50毫秒+ 这个速度对于大多数设备进行1:1 人脸识别应该是没有什么问题的,整个过程时间大部分消耗在启动相机,相机的各种初始化中。

然而对于1:N 的人脸识别,假如N=108,在小区门禁等业务场景中,可能最大的等待时间就差不多要6秒啦,这是用户难以接受的,目前尝试的优化措施包括:

  • 1.加快单次人脸识别。录入的底片提前进行预处理,大小裁剪等裁剪

  • 2.GPU 代理。 目前GPU 代理并不是所有的设备都能显著提高速度,特别是低端机,也许是模型要重新训练?等待后续看看拿几台GPU 配置高的设备看看

  • 3.100 张底片总共推理比对时间大约为100 *(单次对比时间+其他处理),那么多线程是否能加快速度,因为一个解释器需要独占一个线程,那么就开2个线程配置2个推理器,每个线程推理54 张图片

一个线程108 张图共推理5.4 秒

开2个线程每个线程处理54张图。A 线程耗时4.595 秒 B线程耗时4.777 秒,时间取长就是总耗时4.777 秒!

针对措施3,我感觉数据不应该这样,就算是CPU 时间轮询切换会带来时间损耗,8核CPU配置感觉应该能压缩到3秒

**接触不多有点晕了