我正在使用 Swift 制作图像分类 iOS 应用程序。
当我写作时
guard let model = try? VNCoreMLModel(for: SqueezeNet().model) else { return }
我收到此警告。
'init()' is deprecated: Use init(configuration:) instead and handle errors appropriately.
你知道如何摆脱它吗?
对我来说,Apple 示例项目的代码已经解决了:
guard let mlModel = try? YOLOv3(configuration: .init()).model,
let model = try? VNCoreMLModel(for: mlModel) else {
print("Failed to load detector!")
return
这是给我警告的代码:
guard let model = try? VNCoreMLModel(for: YOLOv3().model) else {
print("Could not load model")
return
正如消息所述,
init()
已弃用。新的初始化程序采用一个配置参数。默认配置可能适合您,在这种情况下,您可以将 SqueezeNet()
替换为:
SqueezeNet(configuration: MLModelConfiguration())
这很奇怪。右键单击
SqueezeNet()
并跳转到其定义。它会带你去上课。
找到该类的
init()
方法。它在您的 SqueezeNet
类中应该如下所示:
/**
Construct SqueezeNet instance by automatically loading the model from the app's bundle.
*/
@available(*, deprecated, message: "Use init(configuration:) instead and handle errors appropriately.")
convenience init() {
try! self.init(contentsOf: type(of:self).urlOfModelInThisBundle)
}
我不确定你是如何设置你的机器学习的,但看起来好像是:
@available(*, deprecated, message: "Use init(configuration:) instead and handle errors appropriately.")
不是你的错。这可能意味着以下任何一种情况:
您所要做的就是将其粘贴到您的项目中:
extension SqueezeNet {
convenience init(_ foo: Void) {
try! self.init(contentsOf: type(of:self).urlOfModelInThisBundle)
}
}
然后,像这样编辑代码:
guard let model = try? VNCoreMLModel(for: SqueezeNet(()).model) else { return }
它应该不能正常工作。如果没有请告诉我。
使用它在 React Native cli 中创建项目
反应本机版本0.76
npx @react-native-community/cli 初始化 FaceDetect