2017-06-24 10 views
0

this CoreMLモデルを使用してスケッチ認識をテストしますが、結果は返されません。ここに私のコードです:結果を返さないCoreMLモデル

func predict(){ 
    guard let image = UIImage(named: "test.png") else{ 
     print("Image not found") 
     return 
    } 
    do{ 
     let model = try VNCoreMLModel(for: sketch2().model) 
     let request = VNCoreMLRequest(model: model, completionHandler: displayPredictions) 
     let handler = VNImageRequestHandler(cgImage: (image.cgImage!)) 
     try handler.perform([request]) 
    }catch{ 

    } 
} 

func displayPredictions(request: VNRequest, error: Error?) { 

    if let results = request.results as? [VNClassificationObservation]{ 
     print(results) 
    }else{ 
     print("some error") 
    } 

} 

そしてpredict()方法はviewDidLoad()に呼ばれています。

results()displayPredictions()に出力されると、空の配列[]が返されます。私はasked the developer of the modelモデルがどんなフォーマットの画像を受け入れ、それが128x128のグレースケールであると言いましたが、これは問題であり、もしそうなら、どのようにtest.pngファイルを128x128のグレースケールに変換するでしょうか?この問題に関する他のアイデアがある場合、おそらくcoremltoolsなどを使用してモデルを変換する際の問題がある場合は、教えてください。助けてくれてありがとう。

+0

それは分類モデルですか?コアMLは、期待される出力が(Xcodeで.mlmodelファイルを開いたとき)と何を言いますか? Visionは現在、分類子ではないモデルでは動作しないように見えることに注意してください。 –

+0

はい、私はかなり分類器であると確信しています。モデルは 'Image 'を入力とし、 'MultiArray 'を出力します。だから私は[map.txtファイル](https://github.com/keplerlab/neuralCreativityServer/blob/master/server/caffeModel/map.txt)のラベルの1つを出力すると推測しています。モデルが訓練されたデータの中に空の配列を出力してみても、変換/出力そのものではなく、入力とは何かが関係していると思います。 –

+0

出力が 'MultiArray'の場合、それはクラシファイアではありません(コアMLの場合)。 Core MLの分類器は 'String:Double'の辞書を返します。モデルを変換したときに、 'class_labels = 'map.txt''を指定しましたか? –

答えて

-1

私は過去に同じ問題を抱えていました。私はpngファイルをPhotoshopで128x128のグレースケールに縮小することでこれを解決しました。私は簡単にそれをコーディングしていることがわかりました。これをコードで修正できますか、誰かがどのように知っているのでしょうか?幸運;)

+0

ありがとうございます。 –

+0

これで問題は解決しませんでした。私は問題が他の場所にあると思う。 –

関連する問題