让 App 认出你自己的东西:Teachable Machine、PIC 和即教即识怎么选(一图看懂)

« 返回原创内容

让 App 认出你自己的东西:Teachable Machine、PIC 和即教即识怎么选

想做一个「拍一下就知道是苹果还是香蕉」「比个手势就能控制」的 App,网上会搜到一堆名字:Teachable Machine、PIC、TeachableMachine 拓展、TMIC……它们是什么关系?国内能不能用?本站又该用哪个?这一页一次讲清楚。

先说结论:

  • 在国内,直接用本站的「即教即识」组件。在手机上拍几张样本就能教会,也可以用电脑打开即教即识训练台来教。全部离线,不依赖国外网站。
  • 已经有别人训练好的 .tflite 模型文件(比如 Teachable Machine 导出的),用「自定义图像分类」直接加载。
  • 只认手势(石头剪刀布、点赞、握拳),用「手势识别」,不用教。

先弄懂一件事:「教电脑认东西」是怎么回事

把它想成请一位见多识广的老师,再给他看几张你的照片:

  1. 老师(行话叫「底座模型」):已经看过上百万张各种图片,很会抓特征:颜色、形状、纹理、轮廓。这一步是谷歌等公司提前做好的,谁都一样。
  2. 你给他看样本:告诉他「这几张是杯子,这几张是笔」。老师不用从头学,只要记住你这几类东西的特点。这一步叫「训练」,几秒钟到几分钟就完成。
  3. 考他:拿一张新照片,他说出「这是杯子,九成把握」。这就是「识别」,App 里做的就是这一步。

下面所有方案都是这个思路,区别只在三件事:在哪里教、教完存成什么文件、App 里用什么来认。

一张表看懂它们的关系

方案 谁做的 在哪里教 教完存成什么 App 里用什么认 国内能用吗
Teachable Machine 谷歌 谷歌的网站 teachablemachine.withgoogle.com 在线模型链接,或下载 TF.js / TFLite 文件 下面两个拓展之一;TFLite 文件也能给本站的自定义图像分类用 网站需要访问国外网络
├ TeachableMachine 拓展 MIT(2025 年版) 同上,用谷歌网站 同上(填在线模型链接) 这个拓展 + 一个网页浏览框组件,每次运行都要从谷歌网站下载模型 运行时也要访问国外网络,基本用不了
└ TMIC 拓展 巴西圣卡塔琳娜联邦大学 同上,用谷歌网站 同上 这个拓展,只支持后置摄像头,2022 年后没更新 同上
PersonalImageClassifier(PIC) MIT MIT 自己的训练网站 classifier.appinventor.mit.edu .mdl 文件 PIC 拓展 + 一个网页浏览框组件 训练页要从谷歌服务器加载模型,国内网络下常常用不了;识别时离线
即教即识(本站) App Inventor 2 中文网 手机 App 里,或本站的即教即识训练台 即教即识模型文件(.json) 即教即识组件(内置,不用导入) 全部在国内,完全离线
自定义图像分类(本站) App Inventor 2 中文网 不负责教,加载别处训练好的模型 .tflite 模型 + 标签文件 自定义图像分类组件(内置) 识别完全离线;能不能拿到模型看你在哪训练

它们之间的关系,用一句话说:

  • Teachable Machine 是谷歌做的通用训练网站,什么都能训练(图片、声音、姿势),不是专门给 App Inventor 用的。
  • PIC 是 MIT 为 App Inventor 课堂自己做的另一套训练网站加拓展,和 Teachable Machine 是两家各做的,模型文件互不通用。
  • 后来 Teachable Machine 用的人多了,MIT 又出了 TeachableMachine 拓展,让 App Inventor 也能用谷歌网站训练的模型;TMIC 是更早的第三方同类拓展。
  • 即教即识是本站对 PIC 和 Teachable Machine 这两条路的本土化简化版(全程离线运行):把「教」搬到手机和本站网页上,「认」做成内置组件。

详细对比

对比项 PIC 拓展 TeachableMachine 拓展 即教即识
要导入拓展吗 要(.aix) 要(.aix) 不用,设计器「机器学习套件(ML Kit)」分类里直接拖
训练要电脑吗 要,用电脑浏览器 要,用电脑浏览器 不用,手机上直接教;也可以用电脑上的训练台
训练要外网吗 要(加载谷歌服务器上的模型) 要 不要
App 运行要联网吗 不用 要,每次从谷歌网站下载模型 不用
要额外放网页浏览框组件吗 要,拓展在里面跑识别 要 不用
识别引擎 网页里跑 TensorFlow.js(2018 年的 0.13 版) 网页里跑 TensorFlow.js 原生 Google MediaPipe,更快
底座模型 MobileNet v1(0.25 宽度精简版) Teachable Machine 自带 MobileNet v3 small(更新的一代)
教完能马上认吗 要先点「训练」等它跑完 要在网站上训练完再导出 加一张样本立刻生效,不用等
能接着教吗 要回网站重新训练、重新导出 同左 能,加载模型后接着拍样本
测试效果 训练网站有测试页 网站上可预览 训练台有测试页(每类正确率、认错的图片)
可调参数 能选底座、加层、调学习率和轮数 少量 没有,为教学做了简化,只有「最低置信度」一个旋钮
模型文件大小 约 150KB,和样本多少无关 含底座模型,比 .mdl 大 每张样本约 8KB,100 张约 850KB
模型文件能互用吗 只能给 PIC 拓展 只能给 TM 拓展;导出的 TFLite 可给自定义图像分类 只能给即教即识
鸿蒙 不支持 不支持 暂不支持(工程能打开,调用时提示)
适合谁 想讲神经网络怎么训练、自己调参的进阶课 能访问国外网络、已用惯谷歌网站的用户 国内课堂、入门、现场演示、个人小项目

我该用哪个

你的情况 推荐
第一次做「认东西」的 App,或者在课堂上带学生做 即教即识,手机上几分钟教会
老师想在电脑上提前做好模型,投屏演示,再发给学生 即教即识训练台,导出模型文件,学生上传成素材直接用
手上有一批现成照片(比如水果、垃圾分类数据集) 即教即识训练台,把照片按类别拖进去
只认手势:石头剪刀布、点赞、握拳 手势识别,7 种手势不用教
已经有 Teachable Machine 或别人训练好的 .tflite 模型 自定义图像分类
类别很多(几十上百类)、要求很高的准确率 在电脑上专门训练 TFLite 模型,用自定义图像分类
要讲「神经网络是怎么训练出来的」、让学生自己调参数 PIC 拓展(训练网页需要能访问国外网络)
认常见物体(猫、狗、杯子、车……),不想自己教 图像标注,400 多类带中文名,不用教

用即教即识,三步做出来

  1. 教:手机上用「从摄像头采集样本」给每个类别拍 10~30 张;或者电脑打开训练台拍样本、拖入图片。别忘了教一个「背景」类(镜头前什么都不放)。
  2. 存:手机上「保存模型」,或训练台「下载」,得到模型文件;作为素材上传到项目里(文件名用字母数字,如 model.json)。
  3. 认:屏幕初始化时「加载模型」,再「打开实时摄像头」,在「实时分类」事件里拿到类别和置信度。

完整案例、积木和 .aia 源码见即教即识使用指导。

常见问题

以前用 PIC 训练的 .mdl 文件,能直接给即教即识用吗? 不能。两边的「老师」(底座模型)不一样:.mdl 里存的是专门配合 MobileNet v1 的一小段网络,即教即识用的是 MobileNet v3 small,接不上。重新拍样本教一遍就行,一般几分钟。

以前在 Teachable Machine 上训练的模型怎么办? 在 Teachable Machine 网站上「导出模型」,选「TensorFlow Lite」→「浮点」,下载得到 model_unquant.tflite 和 labels.txt,两个都上传成素材,用自定义图像分类加载即可,完全离线。在线模型链接这种用法国内用不了。

即教即识没有「训练」按钮,那它准不准? 它的做法是:每张样本先请「老师」提取特征记下来,认的时候看新照片和哪一类的样本最像(行话叫 k 近邻)。所以不需要训练这一步,加样本立刻生效。课堂上常见的几类到十几类、每类几十张,准确率和 PIC 差不多;类别特别多、样本特别多时,专门训练出来的模型会更准,这时用自定义图像分类。

总是认错或者「拿不准」怎么办? 每类多拍几张,拍的时候换角度、换距离、换背景;再教一个「背景」类。总说「拿不准」可以把「最低置信度」调低一点,乱认就调高。训练台的「测试效果」能看出哪一类最容易认错。

为什么即教即识的模型文件比 .mdl 大? 它存的是每张样本的特征(每张约 8KB),.mdl 存的是训练好的小网络(固定约 150KB)。几百张样本也就几 MB,放进项目没问题。文件里只有数字,不含照片。

PIC 和 TeachableMachine 拓展还能用吗? 能用,本站的拓展页面都保留着。只是在国内,它们的训练网站和(TeachableMachine 拓展的)运行都要访问国外网络,所以推荐优先用即教即识。

相关链接

文档反馈