Python中最快的2D卷积或图像过滤器
|
一些用户以numpy或scipy [1、2、3、4]来询问图像卷积的速度或内存消耗。从回答和我使用Numpy的经验来看,与Matlab或IDL相比,我认为这可能是numpy的主要缺点。
到目前为止,没有一个答案能解决总体问题,所以这里是:\“在Python中计算2D卷积最快的方法是什么?\”常见的python模块是公平的游戏:numpy,scipy和PIL(其他? )。为了比较具有挑战性,我想提出以下规则:
输入矩阵分别为2048x2048和32x32。
单精度或双精度浮点都可以接受。
将输入矩阵转换为适当格式所花费的时间不计算在内-仅是卷积步骤。
用输出替换输入矩阵是可以接受的(任何python库都支持吗?)
可以直接对常见C库进行DLL调用-lapack或scalapack
PyCUDA就可以了。使用您的自定义GPU硬件是不公平的。
没有找到相关结果
已邀请:
5 个回复
勺的驴吓识
,
比实现为通用nD卷积的同一事物要快得多的原因。) 无论如何,作为比较点:
这在我的机器上花费6.9秒... 与with3比较
这大约需要10.8秒。但是,在输入大小不同的情况下,使用fft进行卷积可能会更快(尽管目前我似乎还没有提出一个很好的例子……)。
旅牢斯讲
请注意,这可能是圆形卷积,因此对边缘附近区域的处理方式可能不同于其他方式。
嗜蒂谷尘旱
浅镁
,它刚好比ѭ8slow慢20倍,而我的输入矩阵更小(
)。截至2018年,这就是我在计算机(Dell Inspiron 13,Core i5)上针对实际问题中指定矩阵观察到的结果。
表现最好,但要注意的是它没有提供“ mode”选项。输入和输出的大小相同。
坝硷操