对于图像批量分类,我使用了此问题的代码Modifying the Caffe C++ prediction code for multiple inputs。但是我注意到由于某种原因分割图像通道的功能。
我认为它适用于通常的CNN架构,但它适用于Siamese架构吗?我猜不是,因为在C ++分类中它无法正常工作。
有人可以解释一下,我应该如何改变暹罗体系结构的代码(通过通道分割图像并将这些通道分配给不同的层,这就是重点),或者至少输入的内存存储是如何工作的,以便自己弄清楚?
Blob<float>* input_layer = net_->input_blobs()[0];
答案 0 :(得分:0)
想出来,问题出在Classifier::Preprocess
cv::split(img[i], channels);
因为仅当cv::Mat
中包含的img
形成为带有频道的2D图像时,它才有效。如果,就我的情况而言,如果形成了其他方式,(channels, width, height)
或(width, height, channels)
cv::split
等尺寸将不会按预期分割cv::Mat
,所以我已经用其他实现取代了这一步。