Почему мой предварительно обученный mlmodel так не прав в распознавании объектов? - PullRequest
0 голосов
/ 03 мая 2020

недавно я хотел проверить CoreML и CreateML, поэтому я создал простое приложение с распознаванием объектов.

Я создал модель только для бананов и моркови (только для того, чтобы попробовать). Я использовал более 60 изображений для обучения моей модели, и в приложении Create ML процесс обучения выглядел хорошо.

Все шло отлично, пока я не распечатал результаты в консоли и не увидел, что моя модель на 100% уверена, что водопад - это банан ...

В идеале я думал, что результат будет 0% достоверности для бананов и 0% достоверности для моркови (потому что я использовал изображение водопада).

Не могли бы вы объяснить, почему вывод выглядит так, и дать какой-нибудь совет, как улучшить мое приложение?

Это мой код для распознавания изображений:

func recognizeObject (image: CIImage) {

    guard let myModel = try? VNCoreMLModel(for: FruitVegeClassifier_1().model) else {
        fatalError("Couldn't load ML Model")
    }

    let recognizeRequest = VNCoreMLRequest(model: myModel) { (recognizeRequest, error) in
        guard let output = recognizeRequest.results as? [VNClassificationObservation] else {
            fatalError("Your model failed !")
        }
        print(output)
    }

    let handler = VNImageRequestHandler(ciImage: image)

    do {
    try handler.perform([recognizeRequest])
    } catch {
        print(error)
    }

}

в консоли мы можем видеть, что:

[<VNClassificationObservation: 0x600001c77810> 24503983-5770-4F43-8078-F3F6243F47B2 requestRevision=1 confidence=1.000000 "banana", <VNClassificationObservation: 0x600001c77840> E73BFBAE-D6E1-4D31-A2AE-0B3C860EAF99 requestRevision=1 confidence=0.000000 "carrot"]

и изображение выглядит так:

waterfall image

Спасибо за любую помощь!

1 Ответ

2 голосов
/ 03 мая 2020

Если вы тренировались только на изображениях бананов и моркови, модель следует использовать только на изображениях бананов и моркови.

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

Другими словами, эти модели работают не так, как вы ожидали.

...