我已经阅读了 caffe2 教程并尝试了预训练模型。我知道 caffe2 将利用 GPU 来运行模型/网络。但是输入数据似乎总是来自 CPU(即主机)内存。例如,在Loading Pre-Trained Models中,加载模型后,我们可以通过以下方式预测图像
result = p.run([img])
但是,应该在 CPU 范围内读取图像“img”。我寻找的是一个可以将图像(从视频解码并仍然驻留在 GPU 内存中)直接传输到预测模型的框架,而不是将其从 GPU 复制到 CPU 范围,然后再次传输到 GPU 进行预测结果。Caffe 或 Caffe2 是否为 python 或 C++ 提供了这样的功能或接口?还是我需要修补 Caffe 才能这样做?非常感谢。
这是我的解决方案:
我在 中发现tensor.h
,函数ShareExternalPointer()
完全可以做我想做的事。
以这种方式提供 gpu 数据,
pInputTensor->ShareExternalPointer(pGpuInput, InputSize);
然后运行预测网络
pPredictNet->Run();
pInputTensor
预测网络的入口张量在哪里pPredictNet