2017-09-26 1 views
2
india Reagieren

enter image description hereMit CoreML mit

ich den Fehler

Argument Labels '(Bild :)' passen nicht alle verfügbaren Überlastungen bin immer

Ich folgte diesem Tutorial here und Apple-Dokumentation, aber als ich versuchte, das Framework zu überbrücken, um ein Bild von React Native zu bekommen, fing ich an, diesen Fehler zu bekommen. Die Brücke zwischen Swift und Reac Native funktioniert, nur wenn ich versuche, coreML zu verwenden, habe ich Fehler

Ich denke, es hat etwas mit der neuen schnellen Syntax zu tun, aber ich bin mir nicht sicher, wie es zu beheben, ich auch noch

Hier habe niemanden mit india Reagieren mit CoreML gesehen ist meine volle Funktion:

import Foundation 
import CoreML 

@objc(Printer) 
class Printer: NSObject { 

    @objc func imageRec(_ image:CGImage) -> CVPixelBuffer? { 
let model = Inceptionv3(); 

    UIGraphicsBeginImageContextWithOptions(CGSize(width: 299, height: 299), true, 1.0) 
//image.draw(in: CGRect(x: 0, y: 0, width: 299, height: 299)) 
let newImage = UIGraphicsGetImageFromCurrentImageContext()! 
UIGraphicsEndImageContext() 

let attrs = [kCVPixelBufferCGImageCompatibilityKey: kCFBooleanTrue, kCVPixelBufferCGBitmapContextCompatibilityKey: kCFBooleanTrue] as CFDictionary 
var pixelBuffer : CVPixelBuffer? 
let status = CVPixelBufferCreate(kCFAllocatorDefault, Int(newImage.size.width), Int(newImage.size.height), kCVPixelFormatType_32ARGB, attrs, &pixelBuffer) 
guard (status == kCVReturnSuccess) else { 
    return nil 
} 

CVPixelBufferLockBaseAddress(pixelBuffer!, CVPixelBufferLockFlags(rawValue: 0)) 
let pixelData = CVPixelBufferGetBaseAddress(pixelBuffer!) 

let rgbColorSpace = CGColorSpaceCreateDeviceRGB() 
let context = CGContext(data: pixelData, width: Int(newImage.size.width), height: Int(newImage.size.height), bitsPerComponent: 8, bytesPerRow: CVPixelBufferGetBytesPerRow(pixelBuffer!), space: rgbColorSpace, bitmapInfo: CGImageAlphaInfo.noneSkipFirst.rawValue) 

context?.translateBy(x: 0, y: newImage.size.height) 
context?.scaleBy(x: 1.0, y: -1.0) 

UIGraphicsPushContext(context!) 
newImage.draw(in: CGRect(x: 0, y: 0, width: newImage.size.width, height: newImage.size.height)) 
UIGraphicsPopContext() 
CVPixelBufferUnlockBaseAddress(pixelBuffer!, CVPixelBufferLockFlags(rawValue: 0)) 

guard let prediction = try? model.prediction(image: newImage) else { 
} 

} 
} 

Antwort

1

Sie haben modelInput init (dies ist eine autogenerate-Klasse, wenn Sie hinzufügen und Datenmodell) Klasse, dann schicken modelInput zur Vorhersage.

Im Folgenden Code-Schnipsel, die helfen können:

 // create indupt data model 
     // in your case this must be taking image as argument 
     let input = ProfitPredictorInput.init(R_D_Spend: 
      Double(rndInv)!, Administration: Double(adminInv)!, 
      Marketing_Spend: Double(marketingInv)!) 

     // give input data model to your mlmodel 
     let outData = try mlModel?.prediction(input: input) 

Sie this als Referenz verwenden können.

+0

Ich bin verwirrt, was R_D_Spend, Administration und Marketing_Spend sind? Ich habe versucht, dies zu tun, aber ich bekomme den gleichen Fehler nur in der Init-Zeile. – codegeek511

+0

R_D_Spend, Administration, Marketing_Spend sind die Parameter für mein ML-Modell. Öffnen Sie Ihr MLModel in Xcode. Es zeigt den Input-Output-Parameter für Ihr ml-Modell, das Sie stattdessen verwenden müssen. – user3378829

+0

Hmmm der Parameter ist 'Bild' – codegeek511

Verwandte Themen