gpt4 book ai didi

python - 如何使用 CUDA 或 OpenCL 加速 block 匹配算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:57:16 28 4
gpt4 key购买 nike

我想知道如何使用 CUDA 或 OpenCL 加速我的 Python block 匹配算法,因为这样的算法应该是高度可并行化的。目前,我的算法工作如下:

For some blocks B1_i of the first image:
For blocks B2_j (in the neighborhood of B1_i) in the second image:
Find the block which minimizes the distance d(B1_i,B2_j)

由于我的代码目前需要大约 1 小时,我想避免第一个循环,即我想以并行方式处理所有 B1_i block 。

但是,当我尝试在第二张图片上找到最相似的 block 时,我需要使用一些特定的函数,例如使用 scikit-learn 的核密度估计,因此这部分最好用 Python 编写。

您认为这是一种“聪明”的方法吗?

编辑:

我分析了我的代码,我意识到最慢的部分是联合直方图估计。到目前为止,我已经通过 scikit-learn (KernelDensity) 使用高斯核密度估计来这样做,而且 numpy histogram2d 函数似乎更快。但是,我认为我仍然可以提高这部分的速度,但我想知道如何。

您认为用 C 或 C++ 等低级语言重写二维联合直方图会有帮助吗?

最佳答案

让其中一张图片的 block 保持静态(例如:block_1 将始终为 x:0 y:0 w:64 h:64,而 2 将是 x:64 y:0 w:64 h:64)和对于另一个图像,根据您的邻域阈值创建所有可能的 block 。

For y = -NeighborHoodThresholdY To NeighborHoodThresholdY
For x = -NeighborHoodThresholdX To NeighborHoodThresholdX
// parallelize
FOr Each block2 In image2
// separate thread / task / kernel
block1 = image1.Region(block2.X + x, block2.Y + y, block2.Width, block2.Height)
Compare(block1, block2)
Next
Next
Next

关于python - 如何使用 CUDA 或 OpenCL 加速 block 匹配算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32630186/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com