You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenVINO部署Stable Diffusion传入初始图时遇精度不匹配错误

解决Stable Diffusion OpenVINO传入初始图像时的精度不匹配错误

问题分析

你遇到的RuntimeError: [ PARAMETER_MISMATCH ] Failed to set input blob with precision: I64, if CNNNetwork input blob precision is: FP64错误,核心是传入UNet模型的某个标量参数类型为64位整数(I64),但模型要求该输入为64位浮点数(FP64)。无初始图像时运行正常,说明带初始图像的推理分支中,某个参数的类型处理逻辑存在遗漏。

解决步骤

  1. 定位问题参数
    打开stable_diffusion_engine.py,找到第188行附近调用self.unet.infer_new_request的代码,检查传入的参数字典,重点关注和初始图像相关的标量参数(比如timestep或类似控制变量),确认其数据类型是否为int64。

  2. 强制转换参数精度
    将该参数转换为float64类型后再传入模型。例如:

    # 假设问题参数是timestep,原代码可能直接传入整数
    timestep = np.array(timestep, dtype=np.float64)
    # 然后将转换后的参数传入推理请求
    noise_pred = result(self.unet.infer_new_request({
        "sample": latents,
        "timestep": timestep,
        # 其他参数...
    }))
    
  3. 验证模型输入要求
    用OpenVINO命令行工具查看UNet模型的输入信息,确认所有输入的精度要求:

    mo --input_model path/to/your/unet/model.xml --print_all_inputs_and_outputs
    

    输出会明确每个输入的精度,确保所有传入参数的类型与之匹配。

  4. 检查初始图像预处理
    确认初始图像的预处理流程(尺寸缩放、归一化、通道转换等)完全符合模型要求,错误的预处理可能间接导致后续参数类型不匹配。

补充说明

这个问题并非模型与输入图像不兼容,而是代码分支中类型转换的遗漏——无初始图像时,相关参数的类型可能已经被正确转换为FP64,但带初始图像的分支未做同样处理。

内容的提问来源于stack exchange,提问作者Igor Deruga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 04:20:26