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などを使用してモデルを変換する際の問題がある場合は、教えてください。助けてくれてありがとう。
それは分類モデルですか?コアMLは、期待される出力が(Xcodeで.mlmodelファイルを開いたとき)と何を言いますか? Visionは現在、分類子ではないモデルでは動作しないように見えることに注意してください。 –
はい、私はかなり分類器であると確信しています。モデルは 'Image'を入力とし、 'MultiArray 'を出力します。だから私は[map.txtファイル](https://github.com/keplerlab/neuralCreativityServer/blob/master/server/caffeModel/map.txt)のラベルの1つを出力すると推測しています。モデルが訓練されたデータの中に空の配列を出力してみても、変換/出力そのものではなく、入力とは何かが関係していると思います。 –
出力が 'MultiArray'の場合、それはクラシファイアではありません(コアMLの場合)。 Core MLの分類器は 'String:Double'の辞書を返します。モデルを変換したときに、 'class_labels = 'map.txt''を指定しましたか? –