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 更改为某个更大的值(取决于您机器的内存容量)
我想使用 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 更改为某个更大的值(取决于您机器的内存容量)