gpt4 book ai didi

tensorflow - 将视频帧馈送到 tensorflow 模型的最快方法是什么?

转载 作者:行者123 更新时间:2023-12-03 01:23:57 27 4
gpt4 key购买 nike

有一个用于图像识别的预训练 Tensorflow 模型。我想用它作为特征提取器。

为了提高性能,使用cv2.read()读取视频帧并在frameBuffer中缓冲。在下一步中,我选择一批图像,并在经过一组预处理后将它们输入到图表中(以便准备用于输入的图像):

for x in range ( lowerIndex,upperIndex):
frame = frameBuffer[x]
img_data = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 100]
result, img_str = cv2.imencode('.jpg', frame, encode_param)
img_str = img_str.tostring(order='C')
batchFrameBuffer.append(img_str)

预处理步骤需要相当长的时间,在此期间 GPU 的利用率为 0。有没有办法让GPU一直工作? (例如使用不同的线程(一个用于读取和预处理,另一个用于运行 session )

最佳答案

Tensorflow 有专门用于此目的的 data.Dataset。看看here

您可以从 frame_buffer 创建一个数据集,然后可以将函数映射到该数据集

但是该函数需要是tensorflow ops,但您需要cv2函数。为此,请使用 tf.py_func,因为它允许您将普通 python 代码包装为 tensorflow 操作,请阅读 here

使用dataset的好处是,多线程是由Tensorflow在C++中完成的,而不必在Python中手动完成。您甚至可以将并行线程数设置为dataset.map 中的参数。

一旦获得了数据集对象,您就可以从中创建一个迭代器,并从迭代器开始构建图表,因此使用的开销feed_dict 也被避免。

Here是 GPU 的通用 Tensorflow 性能指南。

希望这有帮助!

关于tensorflow - 将视频帧馈送到 tensorflow 模型的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48849913/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com