2017-06-11 4 views
7

Ich verwende CoreML mit Swift 4.0 auf Xcode 9 Beta.Warum bekomme ich einen Fehler: Dekodierung CoreML-Dokument?

Wenn Sie eine Datei VGG16.mlmodel im Projektnavigator auswählen, bekomme ich einen Fehler: There was an problem decoding this document CoreML

Darüber hinaus als Folge der Code, den ich die Fehler bekommen Use of unresolved identifier 'VGG16' und Use of undeclared type 'VGG16'

VGG16.mlmodel von hier heruntergeladen https://developer.apple.com/machine-learning/

Was könnte das Problem sein?

PS für Modelle Places205-GoogLeNet, ResNet50 und Inception v3 alles funktioniert gut.

+0

Das Beispielprojekt finden Sie hier https://medium.com/towards-data-science/welcoming-core-ml-8ba325227a28, https://github.com/alaphao/CoreMLExample –

+1

Ich weiß nicht antwort (vielleicht wurde das VGG16.mlmodel nicht korrekt heruntergeladen?), aber du willst VGG16 sowieso nicht auf einem mobilen Gerät verwenden. Es ist viel zu groß (500+ MB), viel zu langsam und verbraucht viel zu viel Energie. –

+0

Ich habe dieses Modell mehrmals von der Apple-Website heruntergeladen. Vielleicht auf der Apple-Website die Datei ist gebrochen ... Ja, ich weiß, dass die Größe dieses Modells sehr groß ist. Also sagen Interesse der Forschung. –

Antwort

8

screenshot laufen Wie gewünscht, ich werde mein Kommentar in einer Antwort konkretisieren.

Andere haben das erwähnt, aber Sie haben wahrscheinlich einen beschädigten Download oder es ist etwas mit dem Modell selbst gebrochen. Zunächst empfehle ich dringend, das VGG16-Modell oder verwandte Modelle auf einem mobilen Gerät nur aufgrund ihrer schieren Größe (500 MB für VGG16) nicht zu verwenden. Sie werden Speicher auf einem iPhone 6 auslasten, wenn Sie nur das Modell laden, Ihre Anwendungsgröße wird gigantisch sein und Sie werden eine lange Initialisierungszeit haben, wenn diese Gewichte geladen werden.

Ich empfehle etwas wie eine SqueezeNet-Variante, die klein ist (~ 5 MB), kann genauer sein, wenn auf ImageNet trainiert, und ist nicht so rechenintensiv wie die Inception-Familie. Apple verweist auf die Verwendung einer dieser Funktionen in einer der WWDC-Kern-Sitzungen.

Wenn Sie das Modell zu Ihrem Xcode-Projekt hinzufügen, vergewissern Sie sich, dass es tatsächlich bei Ihrem Ziel registriert ist. Die aktuelle Betaversion von Xcode vergisst gelegentlich, dies zu Ihrem Ziel hinzuzufügen. Markieren Sie also das Modell und checken Sie den Dateiinspektor ein, um sicherzustellen, dass es Teil Ihres Anwendungsziels ist. Wenn das Modell nicht in Ihrem Ziel ist, generiert Xcode den Swift-Header dafür nicht automatisch.

+0

Eigentlich hatte ich beide Probleme: Erstens, wenn Sie von der Apple-Website herunterladen https://developer.apple.com/machine-learning/ Modelldatei VGG16.mlmodel wurden bei 250-270 MB geschnitten. Sie können das Modell VGG16 hier herunterladen - https://yadi.sk/d/DLr99UZs3KGJqu Zweitens müssen Sie wirklich ankreuzen, um das Modell in Ihrem Ziel hinzuzufügen. Darüber hinaus läuft dieses Modell auf iPhone 6 (IOS 11 Beta) sehr langsam und heizt Telefon. Danke, Brad (@BradLarson). –

+0

@ A.Kant - Soweit Geschwindigkeit geht, zumindest in der ersten Beta scheint es, dass Core ML Accelerate BNNS-Operationen, nicht Metal, diese Netzwerke auf dem iPhone 6 ausführen. In einem Benchmark lief ich auf einem iPhone 6 Core ML war ungefähr 3.5x langsamer, wenn man ein AlexNet-Inventar betrieb, im Gegensatz zu demselben Netzwerk, das auf demselben Gerät mit Metal Performance Shadern implementiert wurde. Nicht sicher, warum es die MPS-Operationen auf dem iPhone 6 nicht verwendet, da die Hardware sie eindeutig unterstützt. –

+0

Oder sie werden MPS auf dem iPhone 6 in der nächsten Version unterstützen, oder ist dieser Apfel ermutigt uns, ein neues iPhone zu kaufen :) @BradLarson –

1
  1. pls ./setup.sh
  2. wählen Sie Ziel für VGG16.mlmodel finden diese
0

Ich bekomme das gleiche für ein Modell, das Dropout hat. Versuchen Sie, diese Ebenen zu entfernen, indem Sie die Gewichtung ohne diese auf ein neues Modell kopieren.

Verwandte Themen