gpt4 book ai didi

computer-vision - 带有 ARkit 和 CoreML 的视觉框架

转载 作者:行者123 更新时间:2023-12-03 22:48:28 25 4
gpt4 key购买 nike

虽然我一直在研究最佳实践并为正在进行的项目试验多种选择(即 Vuforia 中具有原生集成的 Unity3D iOS 项目,使用 AVFoundation 提取帧,然后通过基于云的图像识别传递图像),但我得出的结论是,我想使用 ARkit、Vision Framework 和 CoreML;让我解释。

我想知道如何捕获 ARFrame,使用 Vision Framework 来检测和跟踪使用 CoreML 模型的给定对象。

此外,一旦对象被识别并能够在手势触摸时添加 AR 对象,拥有一个边界框会很好,但这是可以在完成实体项目后实现的。

这无疑是可能的,但我不确定如何通过 Vision 将 ARFrames 传递给 CoreML 进行处理。

有任何想法吗?

最佳答案

更新:苹果现在有一个 sample code project执行其中一些步骤。继续阅读那些你仍然需要弄清楚自己的人......

几乎所有的部分都可以用来做你想做的事情……你大部分时候只需要把它们放在一起。

您获得 ARFrame s 或者通过定期轮询 ARSession为其 currentFrame 或将它们推送给您的 session 代表。 (如果您正在构建自己的渲染器,则为 ARSessionDelegate ;如果您正在使用 ARSCNViewARSKView ,则它们的委托(delegate)回调引用 View ,因此您可以从那里返回 session 以获取currentFrame 导致回调。)
ARFrame提供电流 capturedImage CVPixelBuffer 的形式.

您将图像传递给 Vision使用 VNImageRequestHandler 进行处理或 VNSequenceRequestHandler 类,它们都具有采用 CVPixelBuffer 的方法作为要处理的输入图像。

  • 如果您想要执行使用单个图像的请求,您可以使用图像请求处理程序 — 例如查找 rectanglesQR codesfaces , 或 using a Core ML model to identify the image .
  • 您使用序列请求处理程序来执行涉及分析多个图像之间的更改的请求,例如 tracking an object's movement after you've identified it .

  • 您可以在 WWDC17 session on Vision 中找到将图像传递给 Vision + Core ML 的通用代码。 ,如果您观看该 session ,现场演示还包括通过 CVPixelBuffer到愿景。 (他们在该演示中从 AVCapture 获取像素缓冲区,但如果您从 ARKit 获取缓冲区,则 Vision 部分是相同的。)

    您可能遇到的一个症结是识别/定位对象。人们在 Core ML + Vision 中使用的大多数“对象识别”模型(包括 Apple 在其 ML developer page 上提供的预转换版本)都是场景分类器。也就是说,他们看着一张图片说,“这是一张(东西)的图片”,而不是像“这张图片中有一个(东西),位于(边界框)”。

    Vision 为处理分类器提供了简单的 API — 您的请求的结果数组用 VNClassificationObservation 填充告诉您场景是什么的对象(或“可能是”,具有置信度等级)。

    如果您找到或训练了一个既能识别又能定位物体的模型——对于这部分,我必须强调,球在你的球场上——将 Vision 与它结合使用将导致 VNCoreMLFeatureValueObservation 对象。这些有点像任意键值对,因此您如何从中识别对象取决于您如何构建和标记模型的输出。

    如果您正在处理 Vision 已经知道如何识别的东西,而不是使用您自己的模型(例如人脸和 QR 码),您可以使用 Vision 的 API 获取图像框架中的位置。

    如果在 2D 图像中定位对象后,您想在 AR 中显示与其关联的 3D 内容(或显示 2D 内容,但使用 ARKit 将所述内容定位为 3D),您需要 hit test那些 2D 图像指向 3D 世界。

    一旦你到了这一步,放置带有 HitTest 的 AR 内容就已经在其他地方得到了很好的介绍, by Applethe community .

    关于computer-vision - 带有 ARkit 和 CoreML 的视觉框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44976459/

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