Ich war hart an der Arbeit, um eine einfache Computer Vision Anwendung mit CoreML und Vision schnell zu erstellen. Ich habe mein eigenes Keras-Netzwerk trainiert, das farbige Bilder mit einer 64x64-Auflösung aufnimmt und Ihnen dann sagt, welcher Buchstabe des Alphabets es ist. Als ich diese App auf meinem Handy ausführen und ein Bild nehmen und klicken Sie auf ‚Mit diesem Bild‘, die Code-Abstürze in diesem Stück Code:VNC KlassifizierungFunktion nicht funktioniert?
//send a request to the network to identify the image
let request = VNCoreMLRequest(model: model) { (request, error) in
guard let results = request.results as? [VNClassificationObservation] else {
fatalError("Model failed to load image")
}
Ich habe zu diesem Fehler in den letzten drei Stunden und Hoffnung stecken geblieben Ihr könnt mir helfen, herauszufinden, was falsch ist! Unten ist der Rest des Codes, den ich verwendet habe.
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var imageView: UIImageView!
let imagePicker = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
imagePicker.delegate = self
imagePicker.sourceType = .camera
imagePicker.allowsEditing = false
}
//function to chose an image from your library or take one with your camera
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let userPickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
imageView.image = userPickedImage
//transform the image from UIImage to a CIIMage type
guard let ciImage = CIImage(image: userPickedImage) else {
fatalError("Couldn't transform image to CIImage type")
}
//call the detect function to pass the new ciImage into the network
detect(image: ciImage)
}
imagePicker.dismiss(animated: true, completion: nil)
}
//function to classify the image that is taken with the camera or chosen from the library
func detect(image: CIImage) {
//try to load the model, if not throw an error
guard let model = try? VNCoreMLModel(for: chars74k().model) else {
fatalError("Loading coreML model failed")
}
//send a request to the network to identify the image
let request = VNCoreMLRequest(model: model) { (request, error) in
guard let results = request.results as? [VNClassificationObservation] else {
fatalError("Model failed to load image")
}
print(results)
}
//create handler for image
let handler = VNImageRequestHandler(ciImage: image)
do{
try handler.perform([request])
}
catch {
print(error)
}
Auf welcher Linie stürzt es genau ab? Auf Ihrem 'fatalError' oder auf dem Aufruf von' VMCoreMLRequest() 'oder auf' try handler.perform() '? –
Es stürzt auf der fatalError Zeile, nach dem Versuch, die Ergebnisse als VNClassificationObservation –
Ich weiß, sicher, dass dieser Code funktioniert, weil ich es mit dem InceptionV3-Modell getestet, die gute Ergebnisse ergab, aber wenn ich den Code mit meinem eigenen Keras CNN, die testen Bei Eingabe eines 64x64 farbigen Bildes stürzt der Code bei diesem fatalError ab. –