iOS的使用Vision在实时与ARKit推理性能下降

问题描述 投票:1回答:1

这个问题可以从苹果样本代码here可以容易地示出。我观察到的时间开始v3网络的量作出推断/预测随时间漂移高。周围400毫秒开始800-900ms。我有我观察到超过1秒,使一个预测的相当深网。该应用程序变得非常不可用(实时与AR)。

为了快速和肮脏的分析,我只是做了TIC / TOC:

let requestHandler = VNImageRequestHandler(cvPixelBuffer: currentBuffer!, orientation: orientation)
    visionQueue.async {
        do {
            // Release the pixel buffer when done, allowing the next buffer to be processed.
            defer { self.currentBuffer = nil }
            self.tik = Date()
            try requestHandler.perform([self.classificationRequest])
            let tok = Date()
            let executionTime = tok.timeIntervalSince(self.tik)
            print("Total Execution time: \(executionTime*1000) ms")
        } catch {
            print("Error: Vision request failed with error \"\(error)\"")
        }

这使得一个很好的演示了1或2分钟,但它似乎遭遇了一些明显的丢帧。任何人都看到了这一点,并就如何调试任何指针?我是新来这个,我可能需要挖一个位到仪器之一。但是,如果有人在那里与深这类调试的经历也将是巨大的。这也将使商量好了,如果这确实是苹果的一侧一些bug。

额外的观点:我也还发现了一个很好的理由示例代码已经决定只在CPU运行以来,爱惜GPU做AR和SceneKit图形。在我跑的一个,我把这个关闭,使得网络可以使用GPU。这似乎创造AR与愿景之间的激烈竞争时都希望GPU供电。我后来还发现,各地移动电话可以对FPS一个很大的打击和推理时间,由于AR试图追踪电话(加上我还添加了平面检测,这都强调了整个手机出加热它)。

ios deep-learning computer-vision arkit coreml
1个回答
0
投票

@MatthijsHollemans。我回顾了WWDC 2018会话视频“与CoreML愿景”。这似乎相当简单,做给他们有一个很好的API和示例代码,虽然它可能不是最优的,但良好的简单的试探。我会尽力实现它。

此外,它可能是有意义的:

1)检测如果图像已经走了全黑的(用户放下电话面朝上)

2)如果CNN推理没有检测到OBJ,那么它也应该停止制造新的推断。因为如果新的OBJ移动到现场,就会引发映像差别重新唤醒它。如果网有更多的误报比漏报这可能工作。也就是说,它是非常渴望做出预测比不了。

© www.soinside.com 2019 - 2024. All rights reserved.