IOS Core ML如何把输入从MLMultiArray转换为image

12 篇文章 0 订阅
2 篇文章 0 订阅
  1. 一般2D模型在IOS上部署都可以接收输入为image,也可以接收MLMultiArray,但一般采用前者,因为时间上快捷好几百ms(如果不介意这点时间无视)。
  2. IOS设备指定的MLMultiArray极为Python中的numpy,而图片读取的方式为PIL,所以如果是OpenCV进行的图片处理,记得通道的准确。而numpy和PIL image是可以互相转换的,因此部署阶段也可以选择图片或者数组。
  3. 下面给出转换代码:
import coremltools
import coremltools.proto.FeatureTypes_pb2 as ft 

spec = coremltools.utils.load_spec("YourModel.mlmodel")

input = spec.description.input[0]
input.type.imageType.colorSpace = ft.ImageFeatureType.RGB
input.type.imageType.height = 224 
input.type.imageType.width = 224

coremltools.utils.save_spec(spec, "YourNewModel.mlmodel")

这里完成输入从数组到图片转换,如果是灰度图或者OpenCV处理的图片,记得 colorSpace 设置为GRAYSCALE or BGR.。目前不支持四通道图片。如果自己做了图片预处理:归一化什么,记得加入相同操作。这些操作需要在转换时候加入。如mlmodel = ct.convert(model, inputs=[ct.ImageType(bias=[-1,-1,-1], scale=1/127)])不是在这里,所以别搞错了。
结果从数组转换为图片操作相似:

output = spec.description.output[0]

import coremltools.proto.FeatureTypes_pb2 as ft
output.type.imageType.colorSpace = ft.ImageFeatureType.RGB
output.type.imageType.height = 300
output.type.imageType.width = 150

coremltools.utils.save_spec(spec, "YourNewModel.mlmodel")

同样如果是灰度图或者OpenCV处理的图片,记得 colorSpace 设置为GRAYSCALE or BGR.。目前不支持四通道图片。
如果你发现数组输入与图片输出结果不一样,除了预处理操作一样之外还是存在这问题或者报错WARNING:root:Output var XXX of type i32 in function main is cast to type fp32,咨询我解决,方式见个人相似资料。

我叫谢琛,深度学习探索者一枚!(有意咨询xiec177)
tensorflow/pytorch交流群请加QQ:548368797
更多咨询咨询请关注!在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢陈(xiec177)

致力于解决深度学习框架问题。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值