如何转换我的python代码以在GPU而不是CPU上运行?

时间:2019-09-11 14:35:58

标签: python pandas numpy opencv matplotlib

为我提供了一个python代码,该代码接受两个图像作为输入,并使用Gabor滤波器查找两个图像RGB的相关性并将其保存在一个csv文件中。因此,我需要使用GPU执行该程序,因为这需要大量时间和CPU利用率。我有GeForce GTX 1050 Ti,并且是编程方面的初学者。

我做了一些研究,并了解了CUDA和Tensorflow,但是我真的不确定如何继续实施它,以及在不更改大量代码的情况下实现它的最佳方法是什么。

#Gabor Filter
def build_filters():
    filters = []
    #tesing phrase filter - reduce
    for ksize in range(9, 19, 5):
        for theta in np.arange(45, 225, 45):
            for sigma in range(2,6,2):
                kern = cv2.getGaborKernel((ksize, ksize), sigma, theta, 5.0, 0.5, 0, ktype=cv2.CV_32F)
                kern /= 1.5*kern.sum()
                filters.append(kern)
    return filters

#Apply filter into the image
def process(images, f):
    accum = np.zeros_like(images)
    for kern in f:
        fimg = cv2.filter2D(images, cv2.CV_8UC3, kern)
        np.maximum(accum, fimg, accum)
    return accum

完整代码: https://gitlab.com/t.tansuwan/image_diff_kce/blob/master/allPixelNoCrop.py

谢谢!

1 个答案:

答案 0 :(得分:0)

Numba可以将Python的一小部分子集转换为。

您将要使用conda软件包管理器conda install numba cudatoolkit安装numba和cudatoolkit。然后,您可以添加@jit(nopython=True, parallel=True)

我不确定Numba是否可以与OpenCV一起使用,但是您可以尝试。 Python并不真正适合高性能计算,您最好学习FORTRAN,着色器语言或C并在其中实现您的计算。