Самая быстрая двумерная свертка или фильтр изображений в Python

Несколько пользователей спрашивали о скорости или потреблении памяти свертками изображений в numpy или scipy [ 1 , ] 2 , 3 , 4 ]. Из ответов и моего опыта использования Numpy я считаю, что это может быть серьезным недостатком numpy по сравнению с Matlab или IDL.

Ни один из ответов до сих пор не отвечал на общий вопрос, поэтому вот он: «Какой самый быстрый метод вычисления двумерной свертки в Python?» Общие модули Python - это честная игра: numpy, scipy и PIL (другие?). Для непростого сравнения я хотел бы предложить следующие правила:

  1. Входные матрицы - 2048x2048 и 32x32 соответственно.
  2. Допустимы как одинарная, так и двойная точность с плавающей запятой.
  3. Время, потраченное на преобразование вашего входная матрица в соответствующий формат не учитывается - только шаг свертки.
  4. Замена матрицы ввода вашим выводом приемлема (поддерживает ли это какая-либо библиотека Python?)
  5. Прямые вызовы DLL в общие библиотеки C - это нормально - lapack или scalapack
  6. PyCUDA прямо сейчас. Несправедливо использовать собственное оборудование графического процессора.

20
задан Community 23 May 2017 в 10:29
поделиться