ios - 像 GrabCut 这样的图像分割算法可以在 iPhone GPU 上运行吗?

标签 ios image-processing gpu

我一直在 iPhone 上研究 GrabCut 算法(在 OpenCV 中实现)。表演很糟糕。对于大约 800x800 的图像,即使在模拟器上运行也需要大约 10-15 秒。在我的手机上它运行了几分钟,最终耗尽内存,然后崩溃(iPhone 4)。我敢肯定,如果我用 C 语言编写自己的算法版本,我可能会做一些优化,但我觉得再多的优化也无法使其接近可用。我在一些学术论文中找到了一些性能测量结果,甚至他们在多核 1.8 ghz CPU 上也看到了 30 秒的运行时间。

所以我唯一的希望是 GPU,我对此一无所知。到目前为止,我已经对 OpenGL ES 进行了一些基础研究,但这是一个非常深入的主题,我不想浪费数小时或数天的时间来学习基本概念,这样我就可以确定我是否在正确的道路。

所以我的问题是双重的:

1) GrabCut 之类的东西可以在 GPU 上运行吗?如果是这样,我希望有一个起点而不是“学习 OpenGL ES”。理想情况下,我想知道我需要特别注意哪些概念。请记住,我没有使用 OpenGL 的经验,对图像处理的经验也很少。

2) 即使这种算法可以在GPU上运行,我应该期待什么样的性能提升?考虑到当前在 CPU 上的最佳运行时间大约为 30 秒,GPU 似乎不太可能对运行时间造成足够大的影响以使算法有用。

编辑:为了使算法“有用”,我认为它必须在 10 秒或更短的时间内运行。

提前致谢。

最佳答案

似乎 grabcut 并没有从图像分辨率中获益。这意味着结果的质量不直接取决于输入图像的质量。另一方面,性能受益于大小,这意味着图像越小,算法执行剪切的速度就越快。所以,尝试将图像缩小到 300x300,应用 grabcut,取出蒙版,将蒙版缩放到原始大小,并将蒙版应用于原始图像以获得结果。让我知道它是否有效。

卢卡

关于ios - 像 GrabCut 这样的图像分割算法可以在 iPhone GPU 上运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12210278/

相关文章:

ios - 如何创建保留在 ipad 上的多列表头

python - 使用 OpenCV 在平面图中分隔房间

image-processing - JPEG 伪像检测

python - im.getcolors() 返回 None

c - 抛出错误 'std::bad_alloc' ,OpenCL 对于 CPU 而不是 GPU

iOS cordova 允许位置访问 'Always'

ios - -[NSBundle pathForResource :ofType:inDirectory:] returns nil for localized resources

gpu - 有没有办法确定 TensorFlow 使用了多少 GPU 内存?

graphics - 将缓冲区绑定(bind)到虚幻引擎 4 自定义计算着色器

ios - ionic NativeStorage 错误