ARKit 图像检测 - 许多图像

Posted

技术标签:

【中文标题】ARKit 图像检测 - 许多图像【英文标题】:ARKit image detection - many images 【发布时间】:2019-10-10 22:13:51 【问题描述】:

我需要制作一个应用程序来检测图像及其位置,并在其上显示AR 内容。这些图像会在应用程序的生命周期内发生变化,并且可能有很多。我想知道如何设计这种应用程序。 ARKit 可以提供此功能 - 检测图像及其方向,并在其上显示 AR 内容。但问题是ARKit 一次只能检测有限数量的图像。例如,如果我有 300 张图像,那么可能会出现问题。也许我可以准备一些ML 数据集来预先检测图像,然后将其分配为ARKit 可即时跟踪?这是正确的方法吗?我还能做些什么来制作这样一个需要检测大量动态图像的应用程序?

【问题讨论】:

【参考方案1】:

关于ML 方法,您可以使用几乎任何最先进的对象检测网络来拉取所需目标的大致坐标并提取帧的该部分,将阳性结果传递给 ARKit 或类似方法。缺点是培训可能是资源密集型的。它可以工作,但我不能说它相对于其他方法的效率。

在扩展此解释时,我看到 ARKit 2.0 处理(似乎是)您正在尝试做的事情; this不够吗?

为了回答您在 cmets 中的问题,CoreML 似乎提供了对象识别模型,但不提供本地化模型,因此我怀疑在训练 these 等模型后,有必要使用他们的 converter。该网络的输入将是来自相机的帧,输出将是具有检测概率和近似坐标的检测类;如果您的目标存在,以及它们的大致位置。

同样,如果您正在寻找 2D 图像而不是 3D+ 对象,尤其是如果它是一个 ARKit 应用程序,看起来 ARKit 的内置跟踪会更有效开发成本大大降低。

【讨论】:

你能告诉我更多关于如何使用 CoreML 获得这些积极因素的信息吗?至于资源,我认为,模型将在服务器上生成,并在更新发生时由 iPhone 下载。 当然!我会将它添加到原始帖子中,因为这将是原始主题的扩展,并且评论有点多。 :) 我知道 ARKit 已经支持这一点,但问题是,我不能将任意数量的图像加载到 ARKit。在某些时候,它开始太多了,而且效果不佳。这就是为什么我要为 ARKit 寻找一些额外的辅助方法。正如我所说 - 我正在考虑使用 CoreML 预先检测屏幕上的内容,然后在检测到它之后仅使用这个给定的图像启动 ARKit 方法,而不是从一开始就将所有图像加载到 ARKit。 啊!那么vision networks offered in CoreML 可能就足够了!无论如何,值得一试。它可能从 MobileNet 或 InceptionV3 开始,您只需为其提供图像和相关标签即可进行训练。在操作中,它需要一个图像输入(与训练具有相同的维度),并输出一个具有相应概率的类数组。然后你可以——正如你所说的——只使用顶部结果的给定图像(甚至前几个,因为 ARKit 可以处理一点;提取精度)来启动 ARKit 方法。【参考方案2】:

在 WWDC '19 上,ARKit 3 被吹捧为支持多达 100 张图像进行图像检测。图像跟踪支持的图像数量较少,我相信这仍然在 10 个以下。如果您想要更多,您必须自己识别图像,目前。

作为一个想法,您可以识别摄像头馈送中的矩形,然后应用 CIPerspectiveCorrection 过滤器以根据检测到的矩形提取完整的 2D 图像。请参阅 Tracking and Altering Images 执行类似操作的示例代码。

然后,您将矩形的图像数据与您的 300 个源图像集进行比较。 ARKit 可能由于性能问题而停止在 100,但您可以使用您自己的标准可以接受的性能指标来超越这些数字。

【讨论】:

以上是关于ARKit 图像检测 - 许多图像的主要内容,如果未能解决你的问题,请参考以下文章

ARKit 图像检测和从 Assets.xcassets 添加图像

ARKit 可以将特定表面检测为平面吗?

ARKit 无法识别参考图像

ARKit 显示损坏的 UIWebView

第十一节Harris角点检测原理

检测图像错误django模板