Teachable Machine 图像分类扩展

« 返回首页

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(网页浏览框)组件使用,用于加载模型和显示摄像头画面。支持视频模式(实时摄像头画面分类)和图片模式(对已有图片分类)两种输入模式。

下载:

属性

设置 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 停止连续分类()
停止连续分类。仅在视频模式下有效。

使用说明

  1. Google Teachable Machine 中训练你的图像分类模型。
  2. 导出模型,选择”上传(锐边可用)”方式,获得模型链接(格式为 https://teachablemachine.withgoogle.com/models/...)。
  3. 在 App Inventor 设计器中添加一个 WebViewer(网页浏览框)组件。
  4. 导入 TeachableMachine 扩展(.aix 文件)。
  5. 在设计器中,将 TeachableMachine 扩展的 ModelLink 属性设置为模型链接,WebViewer 属性设置为刚才添加的 WebViewer 组件。
  6. 在代码块中处理 ClassifierReady 事件,确认模型加载完毕后再调用分类方法。
  7. 调用 ClassifyVideoData(视频模式)或 ClassifyImageData(图片模式)进行分类。
  8. 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 和编译版本均已测试)

代码块预览:

TMIC 代码块说明

TMIC v2.0 代码块

下载:

属性

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 扩展识别可回收垃圾的类型。

示例应用代码块

示例应用截图1 示例应用截图2

已知限制

  • 不支持前置摄像头,仅可使用后置摄像头
  • 需要联网使用,不支持离线运行
  • 不能对已有图片进行分类,仅支持摄像头实时拍摄
  • 不支持模拟器/虚拟设备,需要带摄像头的真实设备
  • 不支持视频集成

MIT TeachableMachine 扩展

TMIC 扩展

文档反馈