TensorFlow图像分类CNN转CoreML报无有效图像输入如何解决
解决方法
你遇到的报错是因为Core ML Tools默认将TensorFlow模型的张量输入识别为MultiArray类型,需要手动指定输入为图像类型,同时匹配你模型的预处理逻辑即可解决,修改转换阶段的代码即可:
修改后的转换代码
将你原本的Core ML转换部分替换为以下内容:
import coremltools as ct # 定义图像输入配置,匹配模型输入要求 image_input = ct.ImageType( name="image_input", shape=(1, 256, 256, 3), scale=1/255.0, color_layout="RGB" ) # 配置分类标签,转换后模型可直接返回分类结果 classifier_config = ct.ClassifierConfig(class_labels) # 转换时传入图像输入和分类配置 coremlmodel = ct.convert( savedmodel, inputs=[image_input], classifier_config=classifier_config ) # 可选:补充模型元信息,方便Xcode中查看 coremlmodel.short_description = "棉花图像分类模型" coremlmodel.input_description["image_input"] = "输入256x256分辨率的RGB棉花图像" coremlmodel.output_description["classLabel"] = "分类结果标签" # 保存为标准mlmodel格式 coremlmodel.save('cotton.mlmodel')
配置说明
ct.ImageType会明确告知转换工具该输入为图像类型,转换后Xcode中模型的输入类型会自动显示为Imagescale=1/255.0对应你训练时的归一化逻辑,Core ML会自动对输入图像做像素值缩放,无需App端额外处理- 保存时添加
.mlmodel后缀,Xcode可直接识别使用
内容的提问来源于stack exchange,提问作者user11640506
相关产品推荐
相关产品推荐

