我在armadillo中使用 conv2 函数,图像大小为224x224,掩码大小为10x10。对于3频道图像,我正在做类似的事情:
arma::mat temp(215, 215, fill::zeros);
for (int i = 0; i < 3; i++)
temp += arma::mat(arma::conv2(image_channel, channel_mask)).submat(9, 9, 222, 222);
我只想要有效卷积,因此我使用的是submat。此代码使用不同的掩码以 32 循环执行。对于 32 迭代,它需要2.37秒,这比八度音程慢得多。 Octave可以在0.25秒内执行相同的代码。
octave和armadillo都设置为使用OpenBLAS,我在c ++文件中定义了适当的标志。 (例如ARMA_USE_BLAS
等)。有人可以告诉我这里有什么问题。