Caffe中的批处理模式

Batch processing mode in Caffe

我想使用 Caffe 库来提取图像特征,但我遇到了性能问题。我只能使用 CPU 模式。有人告诉我 Caffe 支持批处理模式,在这种模式下处理一张图像所需的平均时间要慢得多。

我正在调用以下方法:

const vector<Blob<Dtype>*>& 
Net::Forward(const vector<Blob<Dtype>* > & bottom, Dtype* loss = NULL);

我放入一个大小为 1 的向量,其中包含一个具有以下维度的 blob -(数量:10,通道:3,宽度:227,高度:227)。它表示以与官方 python 包装器相同的方式过采样的单个图像。

这有效并给出了正确的结果。但是,它太慢了。

每当我尝试发送包含多个 blob(相同维度)的矢量时,我都会收到以下错误:

F0910 16:10:14.848492 15615 blob.cpp:355] Trying to copy blobs of different sizes.
Check failure stack trace:

如何让 Caffe 批量处理我的图像?

如果您想喂养更大的批次,您需要 bottom 中的第一个(也是唯一一个)blob 来获得 num>10。用 num=20 喂养一个 blob 与用 oversample=10 喂养两个输入是一样的。当然,您必须根据您使用的 oversampling 手动执行平均。

此外,您可能希望将 deploy.prototxt 文件中的第一个输入维度从 10 更改为某个更大的值(取决于您机器的内存容量)