2017-08-08 3 views
1

Ich habe Inception_v3 mit Keras (2.0.4) & Tensorflow (1.1.0) umtrainiert und fein abgestimmt. Wenn ich das Keras-Modell mit coremltools in MLmodel konvertiere, bekomme ich ein Modell, das eine Eingabe von MultiArray benötigt. Das macht Sinn, wenn ich verstehe, dass es [Höhe, Breite, RGB] = (299,299,3) fragt. Aber ich weiß nicht, wie man den CVPixelBuffer in dieses Format konvertiert.CoreML - Wie Bild für InceptionV3 in MultiArray <Double, 3> vorverarbeiten?

Kann mir jemand bitte helfen zu verstehen, welche Vorverarbeitung für mein neu trainiertes Inkjet-Modell benötigt wird, um in coreml zu arbeiten? Oder was muss ich bei der Konvertierung machen, damit es den CVPixelBuffer akzeptiert?

Antwort

1

Ich hatte InceptionV3 umtrainiert, ging aber zurück, um meinen Code anzusehen. Ich habe die Eingabeform in Keras nicht auf 299.299 gesetzt. Ich habe alle meine Fotos in der Vorverarbeitung auf diese Größe gezwungen. Das Ergebnis war, dass das Model-JSON nicht die Eingabe-Dimensionen enthielt, sondern stattdessen folgende Werte hatte: [null, null, null, 3] und die Konvertierung nach CoreML konnte nicht wissen, dass die Eingabe-Dims 299, 299 sein sollten war in der Lage, die Modellgewichte zu speichern, die JSON-Zeichenkette des Modells zu speichern, den JSON zu bearbeiten, um die richtigen Eingaben zu haben [null, 299, 299, 3], den bearbeiteten JSON-String als neues Modell zu laden, die Gewichte zu laden und Viola ! Das coreML-Modell akzeptiert nun ordnungsgemäß Image

Verwandte Themen