CoreML returns 使用 AVCaptureSession 的不同值
CoreML returns different values using AVCaptureSession
我正在尝试 运行 使用 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];
});
}
即使我不移动我的 phone 并且背景也始终相同,它也不会给我完全相同的结果。。 (需要说明的是,我的 phone 在我的 table 上,摄像头正对着我房间的地板,没有任何东西在移动)。
我尝试逐个像素地比较两个图像(旧图像和新图像)并且存在差异。
我想了解为什么这些图像不同?
谢谢,
很有可能是相机噪音。你从相机得到的照片永远不会完全稳定。即使相机指向同一物体,噪声也会在像素值中产生微小的差异。这些微小的差异会对预测产生很大的影响。
我正在尝试 运行 使用 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];
});
}
即使我不移动我的 phone 并且背景也始终相同,它也不会给我完全相同的结果。。 (需要说明的是,我的 phone 在我的 table 上,摄像头正对着我房间的地板,没有任何东西在移动)。
我尝试逐个像素地比较两个图像(旧图像和新图像)并且存在差异。
我想了解为什么这些图像不同?
谢谢,
很有可能是相机噪音。你从相机得到的照片永远不会完全稳定。即使相机指向同一物体,噪声也会在像素值中产生微小的差异。这些微小的差异会对预测产生很大的影响。