Convolución 2D más rápida o filtro de imagen en Python

Varios usuarios han preguntado sobre la velocidad o el consumo de memoria de las convoluciones de imagen en numpy o scipy 1, 2, 3, 4]. Según las respuestas y mi experiencia con Numpy, creo que esta puede ser una deficiencia importante de numpy en comparación con Matlab o IDL.

Ninguna de las respuestas hasta ahora ha abordado la pregunta general, así que aquí está: "¿Cuál es el método más rápido para calcular una convolución 2D en Python?" Los módulos de Python comunes son juegos justos: numpy, scipy y PIL (¿otros?). En aras de una comparación desafiante, me gustaría proponer las siguientes reglas:

as matrices de entrada son 2048x2048 y 32x32, respectivamentos puntos flotantes de precisión simple o doble son aceptablel tiempo dedicado a convertir su matriz de entrada al formato apropiado no cuenta, solo el paso de convolución. Reemplazar la matriz de entrada con su salida es aceptable (¿alguna biblioteca de Python lo admite?)Las llamadas DLL directas a bibliotecas C comunes están bien - lapack o scalapackPyCUDA está listo. No es justo usar su hardware de GPU personalizado.

Respuestas a la pregunta(5)

Su respuesta a la pregunta