2017-07-27 1 views
5

Ich baue eine grundlegende Bilderkennung App in Swift mit dem Inception v3 Machine Learning-Modell. Ich habe das Inceptionv3.mlModel in meinem Projektordner gezogen und abgelegt und sichergestellt, dass die Option "Objekte kopieren, wenn nötig" angekreuzt war.Warum wird das Inceptionv3 Machine Learning-Modell in meinem Projekt nicht erkannt?

Innerhalb der Erkennungsfunktion:

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 
     } 

} 

bekomme ich folgende Meldung:

Verwendung von ungelösten Bezeichner 'Inceptionv3'

Auch wenn ich auf die Inceptionv3.mlmodel Datei in meinem Projekt Browser bekomme ich diese Nachricht:

Schnittstelle Generation nur mit gültigem Ziel

Aber ich weiß, dass es so etwas wie soll lauten:

Inceptionv3 (Swift erzeugte Quelle)

Mit einem kleinen Pfeil daneben mit denen Sie auf die Klasse zugreifen können.

Irgendwelche Ideen?

+3

Ich konfrontiert das gleiche Problem. Drag & Drop funktioniert aus irgendeinem Grund momentan nicht in Xcode. Als ich versuchte, das Modell per Rechtsklick hinzuzufügen und "Dateien zum Projekt hinzufügen" auszuwählen, erzeugte es die Schnittstellen korrekt. –

+0

@GudlaSrinivas gleichen Problem hier und mit Ihrem Tipp gelöst, bitte bedenken Sie die Frage zu beantworten, um es hier zu halten. – valcanaia

+0

Ich hatte diesen Fehler, nachdem ich mich entschieden habe, einige obj-c-Dateien zu meinem Projekt hinzuzufügen. Hast du etwas ähnliches gemacht? – Causaelity

Antwort

2

Ich hatte das gleiche Problem. Ich habe durch Hinzufügen invectionv3 in Bridging-Header gelöst.

+0

Das ist wahr, wenn Sie auf Ihr inceptionv3-Modell klicken und es heißt: Automatisch generierte Objective-C-Modellklasse. Sie müssen "inceptionv3.h" zu Ihrem Bridging-Header hinzufügen. – Causaelity

1

Scheint eine Art Bug. Dies könnte helfen, entfernen Sie die Dateiverweis und versuchen Sie es erneut hinzufügen.

Das funktionierte für mich. Prost

8

stellen Sie sicher, dass Ihre Zielmitgliedschaft überprüft wird.

+0

Das ist die richtige Antwort –

+0

Hey, danke für deine Antwort, leider funktioniert es immer noch nicht. Ich werde posten, wenn ich es gelöst bekomme. – Kilian

3

Statt Drag and Drop, rechts das Projekt klicken und klicken Sie auf "Dateien hinzufügen Zum Projekt". Fügen Sie dann die Modelldateien hinzu. Das hat für mich funktioniert.

0

Das Problem besteht darin, dass die Codezeile nicht vor dem Importieren der Modelldatei vorhanden sein kann.

Löschen Sie die Modelldatei, entfernen Sie die Referenzen, wenn sie gefragt wird. Fügen Sie nun die Modellbibliotheksdatei zurück. Gehe zurück zur kommentierten Codezeile und tippe direkt unter die selbe Codezeile und lasse xcode vorhersagen, dass du die Modeldatei "Incepetionv3" verwenden willst. Der Fehler wird jetzt verschwinden.

Xcode schneidet Codezeilen nicht ausschneiden und einfügen, wenn ein Verweis auf eine Datei vorhanden ist, aber wichtiger ist, dass die Datei vorhanden sein muss, bevor die Codezeile geschrieben wird.

Verwandte Themen