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

Vertex AI部署YOLOv8模型推理报错:请求大小超限,代码是否正确?

问题解答

一、原始代码存在两处关键错误

  1. 归一化步骤缺失
    YOLOv8训练时默认会将图像像素值归一化到[0,1]区间(即除以255),你的代码中注释掉了image = image / 255.0,如果训练阶段做了归一化,推理时跳过这一步会导致模型输出结果异常,这一步必须恢复。

  2. 错误使用Vertex AI内置预测参数
    ImageObjectDetectionPredictionParams是Vertex AI针对官方内置目标检测模型设计的参数,自定义部署的YOLOv8 SavedModel无法识别这些参数,设置后完全不会生效,需要删除这部分代码。后续如果需要过滤预测结果,要自行处理模型输出的output0张量。

二、当前报错的直接原因是请求大小超限,但并非“图片大小”问题

报错提示请求大小超过1.5MB,根源在于你将处理后的float32张量直接转base64传输:

  • 处理后的张量尺寸为1×3×960×960,每个float32元素占4字节,原始张量大小约11MB,base64编码后体积会增加约33%,达到约14.7MB,远超Vertex AI预测请求的1.5MB限制。
  • 这不是原始图片的大小问题,而是你传输的是未压缩的张量数据,正确做法是直接传输原始图片(或压缩后的图片),让模型端点负责预处理,或者采用更高效的传输方式。

修正建议

  1. 恢复归一化步骤
    取消image = image / 255.0的注释,确保输入数据和训练时的预处理逻辑一致。

  2. 移除无效参数
    删除parameters = predict.params.ImageObjectDetectionPredictionParams(...).to_value()代码段,调用client.predict时不传入parameters参数。

  3. 优化请求数据传输
    不再传输预处理后的张量,改为传输原始图片的base64编码:

    # 读取原始图片并转base64
    with open(im_test_path, "rb") as f:
        encoded_image = base64.b64encode(f.read()).decode("utf-8")
    instance = {"images": encoded_image}
    

    同时需要修改模型逻辑,让端点侧完成图像resize、BGR转RGB、归一化、转NCHW等预处理操作——可以在导出SavedModel时将预处理逻辑嵌入模型,或者在Vertex AI部署时添加预处理容器。

内容的提问来源于stack exchange,提问作者Jeanne Chaverot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 17:10:02