特征检测期间 iOS Vision API“computeBlinkFunction”中的错误和冻结
Posted
技术标签:
【中文标题】特征检测期间 iOS Vision API“computeBlinkFunction”中的错误和冻结【英文标题】:Error and freezes in iOS Vision API "computeBlinkFunction" during feature detection 【发布时间】:2019-05-08 14:25:37 【问题描述】:我使用 ios Vision API 对从 iPhone X 上的摄像头传递的 ARFrame
缓冲区进行实时特征检测。它通常运行良好,但在 iOS 11 和 iOS 12 上,我偶尔会看到我无法找到任何信息的控制台。此错误连续打印多次,通常与我的应用程序中的严重冻结有关。
之前有没有人在他们的控制台中看到过这个错误,或者知道是什么原因造成的?任何信息或调试提示将不胜感激。
LandmarkDetector error -20:out of bounds in int vision::mod::LandmarkAttributes::computeBlinkFunction(const vImage_Buffer &, const Geometry2D_rect2D &, const std::vector<Geometry2D_point2D> &, vImage_Buffer &, vImage_Buffer &, std::vector<float> &, std::vector<float> &) @ /BuildRoot/Library/Caches/com.apple.xbs/Sources/Vision/Vision-2.0.62/LandmarkDetector/LandmarkDetector_Attributes.mm:535
更多信息:我认为此错误发生在我的VNDetectFaceLandmarksRequest
期间。目前我将ARKit找到的人脸边界框归一化为inputFaceObservations
,但是当我使用VNDetectFaceRectangleRequest
查找人脸边界框时,我也看到了这些错误。我正在使用VNSequenceRequestHandler
在来自摄像头的每个ARFrame
上实时发出这些请求,在后台线程上运行。
【问题讨论】:
【参考方案1】:今年的 WWDC 与 Vision 讨论的内容是,检测请求比跟踪请求更占用资源。我相信建议是,一旦您收到检测,您应该停止检测请求,而只使用跟踪。我在自己的 Vision 代码(我将其用于文本和条形码)中注意到的一件事是,一旦您获得初始检测,您就会开始获得大量观察结果,这可能是 Vision 输出观察结果的速度更快如果运行时间足够长,系统将无法真正处理。
【讨论】:
跟踪请求似乎可以用于后续的人脸边界框,但您知道它是否可以用于跟踪单个人脸地标吗? 我想这可能就是你要找的东西:developer.apple.com/documentation/vision/…以上是关于特征检测期间 iOS Vision API“computeBlinkFunction”中的错误和冻结的主要内容,如果未能解决你的问题,请参考以下文章
Mobile Vision API (TEXT) 未检测到单个数字?
在相机源 + Vision API iOS11 上跟踪面部对象