недавно я хотел проверить 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](https://i.stack.imgur.com/BSXzc.png)
Спасибо за любую помощь!