TensorFlow.js客户端Azure自定义视觉模型图像分类异常问题排查
果蔬图像分类模型预测异常排查建议
检查图像预处理逻辑
Azure Custom Vision导出的模型对输入图像有严格的预处理要求,必须和训练时的流程完全匹配:- 图像尺寸:确认模型要求的输入分辨率(如224x224),上传图片必须缩放到对应尺寸,不能直接使用原图尺寸
- 像素值归一化:多数TF.js模型要求将0-255的像素值转换为0-1或-1到1的范围,比如训练时用了除以255,代码里要添加
image.div(255)的处理 - 通道顺序:确认是RGB还是BGR,Custom Vision导出的模型一般采用RGB格式,避免通道顺序搞反
验证模型加载与输出解析
- 模型加载完成后,打印
model.inputShape和model.outputShape,确认输入输出维度符合预期(比如输入应为[null, height, width, 3],输出为[null, classCount]) - 预测时要保证传入的张量维度正确,单张图片需扩展维度为
[1, height, width, 3],可使用tf.expandDims(image, 0)实现 - 解析结果时,若模型输出未经过softmax处理,需先转换再取概率最高的类别,示例代码:
- 模型加载完成后,打印
const predictions = await model.predict(inputTensor).data(); const softmaxed = tf.softmax(tf.tensor(predictions)).dataSync(); const topClassIndex = softmaxed.indexOf(Math.max(...softmaxed));
排查资源加载与缓存问题
- 打开浏览器控制台(F12)的Network标签,确认model.json及权重文件的HTTP状态码为200,确保模型资源加载正常
- 清空浏览器缓存或重启Live Server,避免旧模型缓存导致的异常
测试已知样本与核对类别顺序
- 使用Azure门户中测试过的正确分类图片,上传到本地应用并打印所有类别的预测概率,若只有Apple概率接近1,基本可确定预处理步骤出错
- 核对本地代码中的类别数组顺序,必须和Azure Custom Vision中的类别顺序完全一致,不能出现顺序错位
内容的提问来源于stack exchange,提问作者Rjelf93
相关产品推荐
相关产品推荐

