ios - 将一个 VNCoreMLFeatureValueObservation 结果(3D 双精度数组)转换为多个 UIImage
问题描述
我有一个 coreml 模型,它在运行后返回一个 VNCoreMLFeatureValueObservation 对象,其中包含 1“MultiArray:Double 10 x IMG_SIZE x IMG_SIZE array”
我如何将其转换为 10 个 UIImage,每个 UIImage 具有 IMG_SIZE x IMG_SIZE 尺寸,并且它们的值为灰度?
解决方案
在窥探了一下之后,我发现我必须添加这些帮助函数:
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("Model failed to process image")
}
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("Unexpected runtime error. 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)!
}
希望有一种更清洁的方式,但现在可以使用
推荐阅读
- business-intelligence - Cognos 11 Analytics - 折线图颜色
- python-3.x - boto3 创建自动伸缩组
- c# - 如何使用 switch 语句匹配传递的泛型类型并返回对象 []
- python - Python Edgar包——获取CIK号
- android-studio - 轻松本地化:找不到本地化键 [...]
- spring - Java Spring & MyBatis - 如何在 XML 文件中映射“LEVEL”数据库列
- python - 调用 __del__ 函数时如何从列表中删除我的类对象?
- r - 在 r 中使用 dplyr 总结具有不同功能的不同列
- spring - 使用 @DataJpaTest 时休眠 @Formula 在 Spring Boot 测试中不起作用
- node.js - Docker - 我可以有两个 FROM 命令吗?