将VNCoreMLFeatureValueObservation结果(3D双精度数组)转换为多个UIImage

我有一个CoreML模型,运行后会返回一个VNCoreMLFeatureValueObservation对象,其中包含一个“MultiArray : Double 10 x IMG_SIZE x IMG_SIZE数组”。

如何将这个结果转换为10个尺寸为IMG_SIZE x IMG_SIZE的UIImage,每个图像的值为灰度?


回答:

经过一番探索后,我发现需要添加这些辅助函数:

https://github.com/hollance/CoreMLHelpers 到我的Xcode项目中。还有一个关于MultiArray初始化的提问: https://stackoverflow.com/a/44462908/403403

然后我拼凑了这个解决方案:

 let request = VNCoreMLRequest(model: model) { (request, error) in            guard let results = request.results as? [VNCoreMLFeatureValueObservation] else {                fatalError("模型处理图像失败")            }            let obs : VNCoreMLFeatureValueObservation = (results.first)!            let m: MLMultiArray = obs.featureValue.multiArrayValue!            var mArrays = [MLMultiArray]()            for i in 0..<10 {                let start = i*(IMG_SIZE*IMG_SIZE)                 guard let tmp : MLMultiArray = try? MLMultiArray(shape:[768,768], dataType:MLMultiArrayDataType.double) else {                    fatalError("运行时意外错误。MLMultiArray")                }                for n in 0..<(IMG_SIZE*IMG_SIZE) {                    tmp[n] = m[start+n]                }                mArrays.append(tmp)            }            self.imagePred0.image = mArrays[0].image(offset: 0, scale: 255)!            self.imagePred1.image = mArrays[1].image(offset: 0, scale: 255)!            self.imagePred2.image = mArrays[2].image(offset: 0, scale: 255)!            self.imagePred3.image = mArrays[3].image(offset: 0, scale: 255)!            self.imagePred4.image = mArrays[4].image(offset: 0, scale: 255)!            self.imagePred5.image = mArrays[5].image(offset: 0, scale: 255)!            self.imagePred6.image = mArrays[6].image(offset: 0, scale: 255)!            self.imagePred7.image = mArrays[7].image(offset: 0, scale: 255)!            self.imagePred8.image = mArrays[8].image(offset: 0, scale: 255)!            self.imagePred9.image = mArrays[9].image(offset: 0, scale: 255)!        }

希望有更简洁的方法,但目前这样可以工作

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注