2017-07-27 30 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不喜歡剪切和粘貼代碼行,但更重要的是,在寫入代碼行之前文件必須存在。