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

Teachable Machine tensorflow.js预测HTML Canvas内容返回相同结果问题

问题原因

你当前的代码存在两个核心错误导致预测结果固定:

  • 调用model.predict(image)时传入的image变量未定义,你仅获取了canvas元素赋值给了canvas变量,实际传入预测方法的是不存在的变量,相当于每次输入都是固定的无效值,所以返回结果永远相同。
  • Teachable Machine图像模型要求输入尺寸与训练时匹配,若canvas尺寸与模型要求的输入尺寸差异过大也会导致预测结果异常。
解决方法

修改后的可运行代码如下:

const URL = "https://teachablemachine.withgoogle.com/models/S5O-110Gl/";

let model, labelContainer, maxPredictions;

// 点击按钮时预测画布上的绘制内容
document.getElementById('start').addEventListener('click', async function() {
  const modelURL = URL + "model.json";
  const metadataURL = URL + "metadata.json";

  // 加载模型和元数据
  model = await tmImage.load(modelURL, metadataURL);
  maxPredictions = model.getTotalClasses();

  var canvas = document.getElementById('myCanvas');
  // 核心修改:直接传入canvas元素作为预测输入,tmImage内置支持canvas作为输入源
  const prediction = await model.predict(canvas);
  console.log(prediction)
});

如果修改后仍然存在预测偏差,可以补充做以下适配:

  • 确保canvas尺寸与模型训练时的输入尺寸一致,Teachable Machine默认训练的图像尺寸为224x224,可直接将canvas的宽高设置为224px。
  • 也可以手动提取canvas的图像数据传入预测:
const ctx = canvas.getContext('2d');
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
const prediction = await model.predict(imageData);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:36:05