CoreML 使用 AVCaptureSession 返回不同的值

Posted

技术标签:

【中文标题】CoreML 使用 AVCaptureSession 返回不同的值【英文标题】:CoreML returns different values using AVCaptureSession 【发布时间】:2020-05-05 04:25:51 【问题描述】:

我正在尝试使用 AVCaptureSession 运行 CoreML 模型。

当我将相同的图像作为我的 CoreML 模型的输入时,它每次都会给我相同的结果。 但是当使用函数给出的图像时:

- (void) captureOutput:(AVCaptureOutput*)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection*)connection 
    __block CIImage* ciimage = [CIImage imageWithCVPixelBuffer:CMSampleBufferGetImageBuffer(sampleBuffer)];

    dispatch_sync(dispatch_get_main_queue(), ^
        VNImageRequestHandler* handler = [[VNImageRequestHandler alloc] initWithCIImage:ciimage options:@];
        [handler performRequests:@[self.coreRequest] error:nil];
    );

即使我不移动手机并且背景也始终相同,它也不会给我完全相同的结果。。 (需要明确的是,我的手机在我的桌子上,摄像头正对着我房间的地板,没有任何动静)。

我尝试逐像素比较这两个图像(以前的图像和新图像)并且有不同。

我想了解为什么这些图像不同?

谢谢,

【问题讨论】:

【参考方案1】:

很可能是相机噪音。您从相机中获得的图像永远不会完全稳定。即使相机指向同一事物,噪声也会在像素值上产生微小差异。这些微小的差异会对预测产生很大的影响。

【讨论】:

以上是关于CoreML 使用 AVCaptureSession 返回不同的值的主要内容,如果未能解决你的问题,请参考以下文章

使用两个输入实现 CoreML 自定义层

Keras 模型到 Coreml 并使用 OpenCV

使用 coreML 进行 SceneKit 样式转换

尝试使用 coremltools 4.1 将模型转换为 coreml 不工作

将 PyTorch 模型与 CoreML 一起使用时输入尺寸重塑

使用 ARKit 和 CoreML 从远距离检测物体