2017-07-27 1 views
5

Je construis une application de reconnaissance d'image de base dans Swift en utilisant le modèle Inception v3 Machine Learning. J'ai glissé et déposé le fichier Inceptionv3.mlmodel dans mon dossier de projet et j'ai vérifié que l'option "Copier les éléments si nécessaire" était cochée.Pourquoi le modèle Inceptionv3 Machine Learning n'est-il pas reconnu sur mon projet?

l'intérieur de la fonction de détection:

func detect(image: CIImage) { 

    guard let model = try? VNCoreMLModel(for: Inceptionv3().model) else { 
     fatalError("Loading CoreML Model Failed!") 
    } 

    let request = VNCoreMLRequest(model: model) { (request, error) in 
     guard let results = request.results as? [VNClassificationObservation] else { 
      fatalError("Model failed to process") 
    } 

     if let firstResult = results.first { 
      self.navigationItem.title = firstResult.identifier 
     } 

} 

Je reçois le message suivant:

Utilisation d'identifiant sans solution 'Inceptionv3'

De même, lorsque je clique sur le Inceptionv3.mlmodel fichier sur mon navigateur de projet Je reçois ce message:

génération Interface disponible uniquement avec cible valide

Mais je sais qu'il doit lire quelque chose comme:

Inceptionv3 (source Swift générée)

Avec une petite flèche à côté qui vous permet d'accéder à la classe.

Des idées?

+3

J'ai fait face au même problème. Le glisser-déposer ne fonctionne pas actuellement dans Xcode pour une raison quelconque. Lorsque j'ai essayé d'ajouter le modèle en faisant un clic droit et en sélectionnant "Ajouter des fichiers au projet", il a généré les interfaces correclty. –

+0

@GudlaSrinivas même question ici et résolu avec votre astuce, s'il vous plaît envisager de répondre à la question de le garder ici. – valcanaia

+0

J'ai eu ce bug quand j'ai décidé d'ajouter des fichiers obj-c à mon projet. Avez-vous fait quelque chose de similaire? – Causaelity

Répondre

2

J'ai eu le même problème. J'ai résolu en ajoutant inceptionv3 dans l'en-tête de pontage.

+0

Ceci est vrai si vous cliquez sur votre modèle inceptionv3 et il lit: Classe de modèle Objective-C générée automatiquement. Vous devez ajouter "inceptionv3.h" à votre en-tête de pontage. – Causaelity

1

Semble une sorte de bug. Cela peut aider, supprimez la référence de fichier et essayez de l'ajouter à nouveau.

Cela a fonctionné pour moi. Bravo

8

assurez-vous que votre adhésion à la cible est vérifiée.

+0

C'est la bonne réponse –

+0

Salut, merci pour votre réponse, malheureusement, ça ne marche toujours pas. Je posterai si je l'obtiens résolu. – Kilian

3

Au lieu de glisser-déposer, cliquez droit sur le projet et cliquez sur « Ajouter des fichiers au projet ». Ensuite, ajoutez les fichiers modèles. Cela a fonctionné pour moi.

0

Le problème est que vous ne pouvez pas avoir la ligne de code existante avant d'importer le fichier de modèle.

Supprimez le fichier de modèle, supprimez les références lorsqu'il le demande. Maintenant, ajoutez le fichier de bibliothèque de modèles. Revenez à la ligne de code commentée et directement sous le type de la même ligne de code et permettez à xcode de prédire que vous voulez utiliser le fichier de modèle 'Incepetionv3'. L'erreur va maintenant disparaître.

Xcode n'aime pas couper et coller des lignes de code lorsqu'il existe une référence à un fichier mais, plus important encore, le fichier doit exister avant que la ligne de code ne soit écrite.