当我通过Python运行用于确定手 mediapipe solutions的模型时,在确定手的过程中遇到了缓慢的工作!更确切地说是
interpreter.invoke()
帧速率从40急剧下降到4!
如何将帧频提高到20或25?
# ...
# Called before the loop
def start(self):
self._interpreter = tf.lite.Interpreter(model_path = path_to_model)
self._interpreter.allocate_tensors()
self._input_details = self._interpreter.get_input_details()
self._output_details = self._interpreter.get_output_details()
# ...
# Called in a loop
def generate(self, img):
if img.size == 0:
return False
img_resize = cv2.resize(img, (256, 256))
img_resize_expanded = np.expand_dims(img_resize, axis = 0)
image_np_expanded = (np.float32(img_resize_expanded) - 0) / 255
self._interpreter.set_tensor(self._input_details[0]['index'], image_np_expanded)
self._interpreter.invoke() # Slow !!!!!!!!!!!!!!!!!!!!!!
output_data = self._interpreter.get_tensor(self._output_details[0]['index'])
return output_data
答案 0 :(得分:0)
其他信息将使其更易于响应:
1)您是在台式机还是手机上运行它? TFLite已针对移动设备进行了优化(例如,针对手臂进行了优化),并且仍在不断完善支持在台式机(例如x86)上快速运行
2)MediaPipe在Android上运行时可能会使用GPU委托API。看一下与GPU一起运行的tensorflow.org/lite文档。在上述文档中查看他们利用了哪些加速器,并找到如何启用它。如果它们确实在CPU上运行并使用量化,那就值得研究。