CoreML возвращает разные значения, используя AVCaptureSession - PullRequest
0 голосов
/ 18 января 2020

Я пытаюсь запустить модель CoreML с помощью AVCaptureSession.

Когда я помещаю одно и то же изображение в качестве ввода моей модели 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 Ответ

0 голосов
/ 19 января 2020

Шум камеры, скорее всего. Изображение, полученное с камеры, никогда не бывает полностью стабильным. Шум создает небольшие различия в значениях пикселей, даже если камера указывает на одно и то же. Эти небольшие различия могут оказать большое влияние на прогнозы.

...