2017-07-27 57 views
5

我正在使用Inception v3机器学习模型在Swift中构建一个基本的图像识别应用程序。 我将Inceptionv3.mlmodel拖放到我的项目文件夹中,并确保勾选了“如果需要复制项目”选项。为什么我的项目中没有识别Inceptionv3机器学习模型?

里面的检测功能:

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 
     } 

} 

我得到以下信息:

使用未解决的标识符 'Inceptionv3'

此外,当我点击Inceptionv3.mlmodel我的项目浏览器上的文件我收到此消息:

接口生成只适用于有效的目标

但我知道它应该读的东西,如:

Inceptionv3(SWIFT生成的源)

用小箭头旁边允许您访问课程。

任何想法?

+3

我面临同样的问题。出于某种原因,拖放在Xcode中不起作用。当我试图通过右键单击添加模型并选择“将文件添加到项目”时,它会生成接口correclty。 –

+0

@GudlaSrinivas在这里相同的问题,并与您的提示解决,请考虑回答问题,保持在这里。 – valcanaia

+0

一旦我决定将一些obj-c文件添加到我的项目中,我就会弹出此bug。你做了类似的事吗? – Causaelity

回答

2

我有同样的问题。我通过在桥接头中添加inceptionv3来解决问题。

+0

如果你点击你的inceptionv3模型,它会显示如下:自动生成的Objective-C模型类。您实际上必须将“inceptionv3.h”添加到您的桥接标头。 – Causaelity

1

似乎有某种错误。这可能有所帮助,删除文件参考并尝试再次添加。

这对我有效。欢呼声

8

确保您的目标会员资格已被选中。

+0

这是正确的答案 –

+0

嘿,谢谢你的回答,不幸的是它仍然无法正常工作。如果我解决了问题,我会发布。 – Kilian

3

相反拖放,右键单击该项目,并单击“添加文件到项目”。然后添加模型文件。这对我有效。

0

问题是,在导入模型文件之前,您不能存在代码行。

删除模型文件,请求时删除引用。现在添加模型库文件。回到注释的代码行,直接输入相同的代码行,并允许xcode预测你想使用'Incepetionv3'模型文件。错误现在将消失。

当有一个文件引用时,Xcode不喜欢剪切和粘贴代码行,但更重要的是,在写入代码行之前文件必须存在。

相关问题