Teachable Machine 图像分类扩展
本文档介绍两款用于在 App Inventor 中部署 Google Teachable Machine 图像分类模型的扩展,均可利用手机摄像头进行实时图像识别。
两款扩展对比分析
| 对比项 | MIT TeachableMachine(推荐) | TMIC |
|---|---|---|
| 作者 | MIT App Inventor 官方 | 巴西圣卡塔琳娜联邦大学(UFSC) |
| 最新版本 | 20250312(2025年3月) | 2.0(2022年8月) |
| 许可证 | Apache 2.0 | BSD 3 |
| 输入模式 | 视频模式 + 图片模式 | 仅视频模式 |
| 前后摄像头 | 支持切换前后摄像头 | 仅后置摄像头 |
| 连续分类 | 支持(StartContinuousClassification) | 不支持 |
| 图片分类 | 支持对已有图片分类 | 不支持,仅支持摄像头实时拍摄 |
| 分类结果获取 | 属性直接获取(Classification、Confidence) | 仅通过事件获取 |
| 错误处理 | 有 Error 事件和详细错误代码 | 无专门错误处理 |
| 模型标签 | 可通过 ModelLabels 属性获取 | 不支持 |
| 最小间隔控制 | 支持(MinimumInterval) | 不支持 |
| 离线支持 | 不支持 | 不支持 |
| 官方维护 | 是,持续更新 | 否,2022年后未更新 |
结论:MIT 官方 TeachableMachine 扩展功能更全面、更新更及时、支持前后摄像头切换和图片分类,推荐优先使用。TMIC 扩展适合简单的后置摄像头实时分类场景,但功能较为有限且已停止更新。
MIT TeachableMachine 扩展(推荐)
使用 Google Teachable Machine 训练的视觉模型,通过设备摄像头进行图像分类识别。
该扩展是 MIT App Inventor 官方支持的扩展,版本号 20250312。用户需要在 Google Teachable Machine 中训练图像分类模型,将模型导出并上传,然后在 App Inventor 中使用本扩展加载模型并进行实时分类。
扩展需要配合一个 WebViewer(网页浏览框)组件使用,用于加载模型和显示摄像头画面。支持视频模式(实时摄像头画面分类)和图片模式(对已有图片分类)两种输入模式。
下载:
属性
- ModelLink 模型链接
- 设置 Teachable Machine 模型的 URL 链接。该链接必须是从 Google Teachable Machine 导出的模型链接,格式为
https://teachablemachine.withgoogle.com/models/...。在设计器中设置。 - WebViewer 网页浏览框
- 设置用于图像分类的
WebViewer(网页浏览框)组件。必须在设计器中指定一个 WebViewer 组件,扩展才能正常工作。WebViewer 用于加载模型并显示摄像头画面。 - InputMode 输入模式
- 获取或设置分类的输入模式。有效值为
"Video"(视频模式,默认值)和"Image"(图片模式)。视频模式下使用摄像头实时画面进行分类,图片模式下可以对已有图片进行分类。 - ModelLabels 模型标签
- 获取模型中的所有标签(分类类别)列表。仅在
ClassifierReady事件触发后才有效。 - Running 运行中
- 返回分类器是否正在运行连续分类。
- MinimumInterval 最小间隔
- 获取或设置两次分类之间的最小时间间隔(毫秒)。默认值为
0。适用于连续分类模式,避免过于频繁地进行分类。 - Classification 分类结果
- 返回最近一次分类中置信度最高的类别名称。如果尚未进行分类或分类结果为空,则返回空文本。
- Confidence 置信度
- 返回最近一次分类中置信度最高的类别的置信度分数(0.0 到 1.0)。如果尚未进行分类或分类结果为空,则返回
0.0。
事件
- ClassifierReady 分类器就绪()
- 当分类器完成模型加载并准备好进行分类时触发此事件。
- GotClassification 获得分类结果(result)
- 当分类完成时触发此事件。
result是一个字典,格式为{类别1: 置信度1, 类别2: 置信度2, ...},包含每个类别的名称和对应的置信度分数。 - Error 发生错误(errorCode)
- 当发生错误时触发此事件。
errorCode为错误代码,用于标识具体的错误类型。
方法
- ClassifyVideoData 分类视频画面()
- 对当前视频帧进行分类,结果通过
GotClassification事件返回。使用智能手机的摄像头视频流,通过 WebViewer 组件捕获画面。 - ClassifyImageData 分类图片(image)
- 对指定路径的图片进行分类,结果通过
GotClassification事件返回。image:图片文件的路径。
- ToggleCameraFacingMode 切换摄像头()
- 在前置摄像头和后置摄像头之间切换。
- StartContinuousClassification 开始连续分类()
- 在视频模式下开始连续分类。分类器会持续对摄像头画面进行分类,每次分类完成后触发
GotClassification事件。仅在视频模式下有效。 - StopContinuousClassification 停止连续分类()
- 停止连续分类。仅在视频模式下有效。
使用说明
- 在 Google Teachable Machine 中训练你的图像分类模型。
- 导出模型,选择”上传(锐边可用)”方式,获得模型链接(格式为
https://teachablemachine.withgoogle.com/models/...)。 - 在 App Inventor 设计器中添加一个
WebViewer(网页浏览框)组件。 - 导入 TeachableMachine 扩展(.aix 文件)。
- 在设计器中,将 TeachableMachine 扩展的
ModelLink属性设置为模型链接,WebViewer属性设置为刚才添加的 WebViewer 组件。 - 在代码块中处理
ClassifierReady事件,确认模型加载完毕后再调用分类方法。 - 调用
ClassifyVideoData(视频模式)或ClassifyImageData(图片模式)进行分类。 - 在
GotClassification事件中获取分类结果。
TMIC 扩展

TMIC(Teachable Machine Image Classifier)是一款用于在教育场景中部署 Google Teachable Machine 导出的机器学习图像分类模型的 App Inventor 扩展。
该扩展由巴西圣卡塔琳娜联邦大学(UFSC)的”学校计算”(Computação na Escola)项目团队开发,基于 PIC(Personal Image Classifier)扩展构建。
扩展支持导入通过 Google Teachable Machine 创建并导出为 TensorFlow.js(上传至 Google Cloud)的机器学习模型,在 App Inventor 应用中运行训练好的模型,并使用设备后置摄像头捕获图像进行分类。
- 版本:2.0(2022年8月30日发布)
- 许可证:BSD 3
- 已测试平台:Android 9、12、13(Companion 和编译版本均已测试)
代码块预览:


下载:
属性
- UrlModel 模型地址
- 设置 Google Teachable Machine 训练模型的 URL 地址。该模型需导出为 TensorFlow.js 格式并上传至 Google Cloud。URL 用于在运行时加载模型。
- WebViewer 网页浏览框
- 设置用于扩展的 WebViewer(网页浏览框)组件。WebViewer 用于可视化扩展的功能,包括显示摄像头画面和运行分类模型。
事件
- ClassifierReady 分类器就绪()
- 当扩展完成从 Google Teachable Machine 云端加载机器学习模型后触发此事件。模型加载完成后,即可调用分类方法。
- GotClassification 获得分类结果(result)
- 当扩展完成图像分类后触发此事件。此事件在
ClassifyVideoData方法执行完成后立即触发,返回模型中每个类别的预测结果列表。
方法
- ClassifyVideoData 分类视频数据()
- 使用 WebViewer 组件,对智能手机后置摄像头捕获的图像进行分类。分类完成后,结果通过
GotClassification事件返回。 - StopWebcam 停止摄像头()
- 当离开进行图像分类的屏幕时,停止摄像头。应在屏幕切换或应用退出时调用此方法以释放摄像头资源。
示例应用
垃圾分类回收应用——使用 TMIC 扩展识别可回收垃圾的类型。


已知限制
- 不支持前置摄像头,仅可使用后置摄像头
- 需要联网使用,不支持离线运行
- 不能对已有图片进行分类,仅支持摄像头实时拍摄
- 不支持模拟器/虚拟设备,需要带摄像头的真实设备
- 不支持视频集成
版权声明
MIT TeachableMachine 扩展
- 作者:MIT App Inventor
- 许可证:Apache License 2.0
- 原始链接:https://mit-cml.github.io/extensions/
- 源代码:https://github.com/mit-cml/appinventor-extensions/tree/extension/teachable-machine
TMIC 扩展
- 作者:F. Pereira de Oliveira, C. Gresse von Wangenheim, J. C. R. Hauck
- 机构:巴西圣卡塔琳娜联邦大学(UFSC)信息学与统计学系,Computação na Escola 项目
- 许可证:BSD 3-Clause
- 原始链接:https://community.appinventor.mit.edu/t/tmic-app-inventor-extension-for-the-deployment-of-image-classification-models-exported-from-teachable-machine/64411
- 源代码:https://codigos.ufsc.br/gqs/tmic
扫码添加客服咨询