机器学习套件(ML Kit)组件在在线版和教育版中提供,离线版(含机房版)不包含。
暂未开放:该组件暂未上架组件面板,本页保留供了解(原因与恢复进度见 组件参考)。
它能做什么
自定义目标检测找出图片里的物体并给出位置框,再用你自己的 TFLite 模型做精细分类,突破基础模型只有 5 大类的限制。案例工程自带 Google ML Kit 官方示例里的物体分类模型 object_labeler.tflite(Apache-2.0 许可,ImageNet 上千种类别)。
准备工作
- 模型文件:先把
.tflite上传为素材,「模型文件」填素材文件名。 - 事件:与「目标检测」相同,先发汇总,再逐个物体触发。
- 实时识别:在设计器里放一个垂直布局当「预览容器」,「打开实时摄像头」后画面上直接框出物体,同一个物体有不变的跟踪编号。
- 联机调试:安卓上用 AI 伴侣调试需要安装 MLKit 版 AI 伴侣(应用宝,包名 cn.fun123.appinventor);普通版伴侣不含识别引擎,调用时会触发「屏幕.出现错误时」(错误码 4722)。直接打包 APK 安装测试不受影响。
- 安装包体积:只有用到本组件的 App 才会打包它的识别引擎与模型,体积以编译结果为准。
- 鸿蒙:暂不支持:鸿蒙需要 MindSpore 格式的模型,暂不支持 TFLite 模型,图片识别与实时摄像头都会触发「检测失败时」。
案例一:检测并画框
画布背景设成原图,汇总事件里记下换算比例:
global 横向比例 = 1
global 纵向比例 = 1
when 图像选择器_相册.AfterPicking() {
画布_结果.BackgroundImage = 图像选择器_相册.Selection
画布_结果.Clear()
自定义目标检测1.DetectFromFile(图像选择器_相册.Selection)
}
when 自定义目标检测1.GotObjects(数量, 图片宽度, 图片高度, 结果JSON) {
横向比例 = 画布_结果.Width / 图片宽度
纵向比例 = 画布_结果.Height / 图片高度
}
案例二:显示细分类别
每个物体给出模型里的类别名和置信度:
when 自定义目标检测1.GotObject(索引, x坐标, y坐标, 宽度, 高度, 标签文字, 置信度, 跟踪编号) {
画布_结果.DrawLine(x坐标 * 横向比例, y坐标 * 纵向比例, (x坐标 + 宽度) * 横向比例, y坐标 * 纵向比例)
画布_结果.DrawText(join(索引, " ", 标签文字), x坐标 * 横向比例 + 6, y坐标 * 纵向比例 + 24)
标签_详情.Text = join(索引, ". ", 标签文字, " ", round(置信度 * 100), "%")
}
when 自定义目标检测1.NoObjectFound(操作) {
标签_状态.Text = "没有找到物体"
}
案例三:实时检测:画面上直接框出物体
实时检测用视频流模式,更快,且同一个物体在连续画面里保持同一个「跟踪编号」;画面上的框和类别由组件画好,事件里只刷新列表:
when 按钮_实时.Click() {
自定义目标检测1.PreviewContainer = 垂直布局_预览
自定义目标检测1.StartLiveCamera()
}
when 按钮_停止.Click() { 自定义目标检测1.StopLiveCamera() }
when 自定义目标检测1.LiveObjects(数量, 图片宽度, 图片高度, 结果JSON) {
var 名单 = list()
foreach 物体 in Web客户端1.JsonTextDecodeWithDictionaries(结果JSON) {
var 标签表 = dictget(物体, "labels", list())
var 类别 = "(未分类)"
if length(标签表) > 0 {
类别 = dictget(select(标签表, 1), "label", "")
}
listAdd(名单, join("#", dictget(物体, "trackingId", -1), " ", 类别))
}
列表显示框_物体.Elements = 名单
}
结果数据说明
与「目标检测」相同:序号从 1 开始,坐标是原图像素;「结果JSON」每项含 bounds、trackingId、labels(label、confidence、index)。
常见问题
| 现象 | 原因与处理 |
|---|---|
| 提示没设模型文件 | 「模型文件」为空或素材没上传 |
| 类别为空 | 关掉了「分类」,或模型不含标签元数据 |
| 框画歪了 | 横纵分别按比例换算 |
| 实时预览黑屏、看不到画面 | 「预览容器」要选布局组件并给明确宽高(如宽度充满、高度 300 像素);第一次打开要允许摄像头权限 |
| 实时检测时界面卡 | 调大「实时事件间隔」,事件里少做事;画面上的标注不受间隔影响 |
完整 .aia 源码与操作指导
导入 CustomObjectDetectorDemo.aia 后可以直接打包 APK 运行;用 AI 伴侣联机调试请安装 MLKit 版 AI 伴侣。源码文件已通过正式编辑器载入、后台导入和 APK 编译校验;真机识别效果请以实际设备为准。
| 功能 | 操作 | 预期结果 |
|---|---|---|
| 检测照片 | 选一张有日常物品的照片 | 画布上画框,列表列出细分类别与置信度 |
| 无物体 | 选纯色背景图 | 提示没有找到物体 |
| 实时识别 | 点「实时识别」,对准桌上的东西 | 预览区直接框出物体并标出细分类别,列表按跟踪编号实时刷新 |
案例界面与积木源码在仓库 docs/markdown/reference/components/guide/examples/CustomObjectDetectorDemo/,SHA-256:efe5bb97fa9b2139c10c62d7b604a265c2ceb307955eaf2a0d3288be1c654f68。
扫码添加客服咨询