Konvertiert das trainierte Keras-Bildklassifikationsmodell in coreml und integriert es in iOS11

8

Unter Verwendung des Tutorials in Ссылка , Ich trainierte ein Keras-Modell, um den Unterschied zwischen Katzen und Hunden zu erkennen.

%Vor%

Verwenden Sie die Dokumentation von coremltools als Leitfaden Ich habe versucht, mein Modell in das coreml-Format zu konvertieren:

%Vor%

Wenn ich das Modell in XCode importiere und es mit dem folgenden Code ausführe (der mit den Modellen resnet50 und inceptionv3 auf der Apple-Website funktioniert), gibt das Code-Snippet guard let prediction = try? model.prediction(image: pixelBuffer!) else {print("error!") return } "error!" und das textView.text = "I think this is a \(String(describing: prediction.classLabel))." Code-Snippet wird nie erreicht.

%Vor%

XCode-Fehler beim Implementieren des benutzerdefinierten Keras-CoreML-Modells

Ich habe Stackoverflow ausgiebig gesucht, um dieses Problem zu lösen. Hilfe zur Behebung dieses Problems wäre sehr willkommen!

================================================== ================================ EDIT # 1:

Mit "print (try! model.prediction (image: pixelBuffer!) als Any)" habe ich den folgenden Fehler gedruckt:

2017-07-13 15: 33: 49.034967-0400 cats_dogs [60441: 1198094] fataler Fehler: "Versuch!" Ausdruck hat unerwarteterweise einen Fehler ausgelöst: Fehler Domain = com.apple.CoreML Code = 0 "Die Abmessungen des Layers 'output' haben nicht dieselbe Größe wie die Anzahl der Klassenbezeichnungen." UserInfo = {NSLocalizedDescription = Die Größe des Layers 'output' hat nicht dieselbe Größe wie die Anzahl der Klassenbezeichnungen.}:

Nicht sicher, was "Abmessungen der Ebene 'Ausgabe' nicht die gleiche Größe wie die Anzahl der Klassenbezeichnungen" bedeutet.

================================================== ============================

Bearbeiten # 2:

Dies ist der Code, mit dem ich das Modell in das .mlmodel-Format umwandle

%Vor%

Dies ist die Terminalausgabe:

%Vor%     
j_dev 11.07.2017, 13:17
quelle

1 Antwort

0
  

Nicht sicher, was "Abmessungen der Ebene 'Ausgabe' nicht die gleiche Größe wie die Anzahl der Klassenbezeichnungen" bedeutet.

Dies bedeutet, dass die letzte Ebene Ihres Modells eine andere Dimension hat als Ihre Klassenbezeichnungen (von denen ich annahm, dass sie die Dimension 2 haben). Ich würde empfehlen, diesen Parameter zu entfernen:

  

class_labels = output_labels

von Ihrer Modellkonvertierung und sehen, ob es das Problem behebt

    
hartw 01.02.2018 17:52
quelle

Tags und Links