2017-06-11 2 views
7

J'utilise CoreML avec Swift 4.0 sur Xcode 9 Beta.Pourquoi ai-je une erreur: un document CoreML de décodage pblblem?

Si vous sélectionnez un fichier VGG16.mlmodel dans le navigateur du projet, je reçois une erreur: There was an problem decoding this document CoreML

En outre, en conséquence dans le code que je reçois les erreurs Use of unresolved identifier 'VGG16' et Use of undeclared type 'VGG16'

VGG16.mlmodel téléchargé ici https://developer.apple.com/machine-learning/

Quel pourrait être le problème? PS pour les modèles Places205-GoogLeNet, ResNet50 et Inception v3 tout fonctionne correctement.

+0

L'exemple de projet peut être trouvé ici https://medium.com/towards-data-science/welcoming-core-ml-8ba325227a28, https://github.com/alaphao/CoreMLExample –

+1

Je ne connais pas le répondre (peut-être le VGG16.mlmodel n'a pas été téléchargé correctement?) mais vous ne voulez pas utiliser VGG16 sur un appareil mobile de toute façon. C'est trop grand (500+ MB), beaucoup trop lent, et il consomme trop d'énergie. –

+0

J'ai téléchargé ce modèle à partir du site Web Apple à plusieurs reprises. Peut-être sur le site Apple le fichier est cassé ... Oui, je sais que la taille de ce modèle est très grande. Donc dites intérêt de la recherche. –

Répondre

8

Comme l'a demandé, je vais étoffer mes commentaires dans une réponse.

D'autres ont mentionné cela, mais vous avez probablement un téléchargement corrompu ou il y a quelque chose de cassé avec le modèle lui-même. Pour commencer, je recommande fortement de ne pas utiliser le modèle VGG16 ou les modèles associés sur un appareil mobile juste en raison de leur taille pure (500 Mo pour VGG16). Vous allez épuiser la mémoire sur un iPhone 6 tout en chargeant le modèle, la taille de votre application sera gigantesque, et vous aurez une longue durée d'initialisation que ces poids sont chargés. Je recommande d'utiliser quelque chose comme un variant SqueezeNet, qui est petit (~ 5 Mo), peut être plus précis lorsqu'il est entraîné sur ImageNet, et n'est pas aussi coûteux en termes de calcul que la famille Inception. Apple fait référence à l'utilisation de l'un d'entre eux dans l'une des sessions Core ML WWDC.

Lorsque vous ajoutez le modèle à votre projet Xcode, assurez-vous qu'il est en cours d'enregistrement auprès de votre cible. La version bêta actuelle de Xcode oublie occasionnellement d'ajouter ceci à votre cible, donc mettez en surbrillance le modèle et vérifiez dans l'inspecteur de fichiers pour vous assurer qu'il fait partie de la cible de votre application. Si le modèle n'est pas dans votre cible, Xcode ne générera pas automatiquement l'en-tête Swift pour cela.

+0

En fait, j'ai eu ces deux problèmes: Tout d'abord, lorsque vous téléchargez à partir du site apple https://developer.apple.com/machine-learning/ fichier de modèle VGG16.mlmodel ont été coupés à 250-270 MB. Vous pouvez télécharger le modèle VGG16 ici - https://yadi.sk/d/DLr99UZs3KGJqu Deuxièmement, vous devez vraiment cocher pour ajouter le modèle dans votre cible. En outre, sur l'iPhone 6 (IOS 11 bêta) ce modèle fonctionne très lentement et chauffe le téléphone. Merci, Brad (@BradLarson). –

+0

@ A.Kant - En ce qui concerne la vitesse, au moins dans la version bêta initiale, Core ML utilise les opérations BNNS d'Accelerate, pas Metal, pour exécuter ces réseaux sur l'iPhone 6. Dans un benchmark, j'ai couru sur un iPhone 6 Core ML était environ 3,5 fois plus lent lors de l'exécution d'un stock AlexNet par rapport au même réseau mis en œuvre sur le même périphérique en utilisant Metal Performance Shaders. Je ne sais pas pourquoi il n'utilise pas les opérations MPS sur l'iPhone 6, car le matériel les supporte clairement. –

+0

Ou ils vont soutenir MPS sur l'iPhone 6 dans la prochaine version, ou est-ce que cette pomme nous encourage à acheter un nouvel iPhone :) @BradLarson –

1
  1. pls fonctionnent ./setup.sh
  2. cible de sélection pour VGG16.mlmodel, voir ce screenshot
0

Je reçois la même chose pour un modèle qui a Dropout dessus. Essayez de supprimer ces couches en copiant les poids sur le nouveau modèle sans eux.