快速选择多个 .mlModel

Posted

技术标签:

【中文标题】快速选择多个 .mlModel【英文标题】:Selecting Multiple .mlModel in swift 【发布时间】:2020-08-15 08:31:15 【问题描述】:

我的 xcode 项目中有多个 .mlModel,我希望用户选择模型并执行预测

let gestureClassifier = GestureClassifier() //mlModel

func predictGesture(window: Int) 

    let previousOutput = modelOutputs[window]
       let modelOutput = try? gestureClassifier.prediction(features: modelInput, hiddenIn: previousOutput?.hiddenOut, cellIn: previousOutput?.cellOut)
       modelOutputs[window] = modelOutput

       if let prediction = modelOutput?.activity,
          let probability = modelOutput?.activityProbability[prediction] 
         if prediction == Config.restItValue 
           return
         
         if probability > Config.predictionThreshold 
            if prediction == Config.chopItValue || prediction == Config.driveItValue || prediction == Config.shakeItValue 
               print("prediction: \(prediction)")
                self.recordGestures(gesture: prediction)
           

         
         else

            print("unrecognised gesture")
            self.recordGestures(gesture: "unRecognised Gesture")
        
       
     

我有其他型号 手势分类器1 我想做这样的事情

func predictGesture(window: Int, **selectedModel**) 

      let previousOutput = modelOutputs[window]
       let modelOutput = try? **selectedModel**.prediction(features: modelInput, hiddenIn: 
   previousOutput?.hiddenOut, cellIn: previousOutput?.cellOut)

    

我怎样才能做到这一点,我尝试使用 Anyclass 作为数据类型,但无法访问诸如 .prediction(..) 之类的类函数。

【问题讨论】:

【参考方案1】:

这与其说是一个 Core ML 问题,不如说是一个一般性的编程问题:如何创建一个接受不同类型对象但以相同方式处理它们的函数?

一种方法是创建一个包含prediction() 方法的协议,然后为每个GestureClassifier 等类创建一个扩展,以使它们符合协议。

另一种方法是使用GestureClassifier.model 属性中的MLModel 并使用它。

【讨论】:

以上是关于快速选择多个 .mlModel的主要内容,如果未能解决你的问题,请参考以下文章

如何快速从相册中选择多个视频?

快速选择另一个表中具有“1 个或多个”匹配行的所有行

选择预订的快速复杂查询

怎么让线条快速选中并组合多个形状

MLModel 如何分析 ImagePicker?

快速设置多个文件夹共享