🏃♂️ PoseNet—在 Scratch 中追踪全身姿态 #
PoseNet 扩展把由真正 AI 驱动的全身追踪功能带到了 Scratch 中。
它可以让你的项目对身体动作做出反应—走路、挥手、跳舞或跳跃—所有动作都可以直接在浏览器中实时识别,无需任何额外设置。
对学生来说足够简单,同时也足够强大,可以用于充满创意的课堂项目。 😊 ✨

🌟 概述 #
- 检测全身: 追踪主要关节—头部、肩膀、肘部、手腕、髋部、膝盖和脚踝。
- 33 个 landmark (特征点): 使用 BlazePose 模型,通过 33 个 keypoints (关键点) 追踪头部、手臂、躯干和腿部。
- 读取坐标: 直接获取任何已检测身体关节在 Scratch Stage (舞台) 上的 X 和 Y 位置—可以用它们移动 sprite (角色) 或触发动作。
- 测量: 计算两个关节之间的角度和距离。
- 更改摄像头预览: 显示、隐藏或翻转实时摄像头画面,以适应你的使用方式。
- 选择输入源: 可以分析实时摄像头画面,也可以直接分析 Scratch Stage 图像。
✨ 主要特点 #
- 使用 BlazePose 模型进行单人全身追踪。
- 为常用身体关节提供简单易用的下拉菜单。
- 可调整“classify”检测间隔,让运行更加流畅。
- 支持摄像头预览、透明度和设备选择控制。
- 完全在浏览器中运行 — 安全且保护隐私。.
🚀 如何使用 #
- 前往: pishi.ai/play
- 打开扩展程序部分。
- 选择 PoseNet 扩展。
- 如果浏览器提示,请允许访问摄像头,并确认视频预览已经出现。
- 如果没有检测到摄像头,输入源会自动切换到 Stage 图像。
- 扩展加载完成后,会自动开始连续姿态检测(你可以随时调整检测模式)。
- 现在,你可以使用位置或测量积木,让 sprite 根据你的身体动作做出反应—移动、跳跃或挥手来控制你的项目!
尖端
- 站在摄像头前,让整个上半身都清晰可见,并保持适当的光线。
- 使用 people count (人数) 检查当前是否检测到一个人。
- 在教室或较旧的设备上,建议先将分类间隔设置为 100–250 ms,以获得更流畅的运行效果。
🧱 积木和函数 #
📍 位置和数量 #
返回某个身体关节在 Stage 上的 X 或 Y 位置。
KEYPOINT:从下拉列表中选择一个关节(肩膀、肘部、手腕等)。
PERSON_NUMBER:选择要追踪的人(在 BazePose 中只能是 1)。“1”表示第一个检测到的人。
如果没有检测到人、所选关节位于摄像头画面之外,或者该关节的检测置信度低于最低阈值,则返回空值。
返回当前检测到的人数(0 或 1)。为了获得最佳准确度,BlazePose 一次只追踪一个人。
📏 测量 #
返回同一个人身上两个关节之间的角度(单位:度)—非常适合检测抬手、身体倾斜或姿势。
返回两个关节之间的 Stage 像素距离—非常适合检查步幅或臂展。
选择当找不到人或关节时,坐标积木应该返回什么。
RETURN_TYPE:可以保留最后一次找到的坐标,也可以返回空值。
注意:
Default keypoints (默认关键点): 11 (left shoulder) 和 12 (right shoulder).
坐标以 Stage 中心为原点(X ≈ −240…240, Y ≈ −180…180).
当视频被镜像时,X 坐标值也会翻转,以与你在屏幕上看到的方向保持一致。
🎯 置信度🎯 置信度 #
设置关节被视为有效检测结果所需的最低检测分数(0–1)。
如果某个关节的 confidence (置信度) 低于此阈值,它就会被忽略—也就是说,X/Y、角度或距离积木会返回空值,而不是不稳定的数值。
0.3–0.5 —将其提高到 0.3-0.5,可以减少抖动或错误移动。
0.1–0.2 —如果手腕或脚踝等较小关节经常无法检测到,可以将其降低到 0.1-0.2。
返回当前的置信度阈值—可以用于将其显示在屏幕上,或在项目运行过程中动态调整。
注意: Confidence 筛选是针对每个关节单独进行的,而不是针对整个人。
如果某个特定关节没有达到阈值,那么任何使用该关节坐标的积木(例如位置、角度或距离)都会返回空值。
⚙️ 检测控制 #
- 分类 [INTERVAL] - 选择检测运行的频率:
- 每次运行此积木时检测一次
- 连续检测,无延迟
- 连续检测,每隔 50–2500 ms 运行一次
- 将分类 [ON_OFF] - 开始或停止连续检测。
- 分类间隔 - 返回当前检测间隔,单位为毫秒。
- 连续分类 - 返回连续检测当前是“on”还是“off”。
- 选择输入图像 [camera/stage] - 选择 camera(摄像头)或 Stage(舞台)。
- 输入图像 - 返回当前正在使用的输入源。
🎥 视频控制 #
- 将视频 [off/on/on-flipped]
- on:以镜像方式显示摄像头预览(就像普通网络摄像头或镜子一样)。
- on-flipped:以非镜像方式显示摄像头预览——方向与现实世界中的左右方向一致。
- off:关闭摄像头预览。在 Stage 输入模式下,检测仍会继续运行。
- 将视频透明度设为[TRANSPARENCY|text] — 调整摄像头预览的可见程度:
- 0:完全可见(不透明图像)
- 100:完全透明(不可见,但仍在运行)
- 选择摄像头 [CAMERA] — 从设备上的可用摄像头中进行选择。下拉菜单会列出检测到的所有摄像头,扩展会自动切换到你选择的摄像头。
- 显示检测框 [开启/关闭]打开或关闭检测框显示。 打开后,每个检测到的物体周围都会显示一个方框,让你可以看到模型正在跟踪哪些物体。 这对于测试摄像头、检查模型的识别效果以及实时调试项目都很有帮助。
🦵 常用关键点(实用编号) #
可以使用下面这些常见身体关节的快捷编号,也可以从下拉菜单中进行选择。
BlazePose(33 个 keypoint):
1 / 2 / 3:左眼内侧 / 中心 / 外侧
4 / 5 / 6:右眼内侧 / 中心 / 外侧
7 / 8:左耳 / 右耳, 9 / 10:嘴巴左侧 / 右侧
11 / 12:左肩 / 右肩, 13 / 14:左手肘 / 右手肘
15 / 16:左手腕 / 右手腕, 17 / 18:左小指 / 右小指
19 / 20:左食指 / 右食指, 21 / 22:左拇指 / 右拇指
23 / 24:左髋 / 右髋 25 / 26:左膝 / 右膝
27 / 28:左脚踝 / 右脚踝, 29 / 30:左脚跟 / 右脚跟
31 / 32:左脚前端 / 右脚前端
这些编号与 MediaPipe BlazePose 使用的 landmark 索引一致。
🎓 教育用途 #
- 使用实时关节角度和距离探索 biomechanics (生物力学)。
- 将身体动作与 Stage 上 sprite 的位置关联起来,学习坐标系统。
- 运用数学和几何知识测量对称性、步幅或姿势。
- 创建由身体动作控制的互动艺术、舞蹈或健身项目。
🎮 示例项目 #
- 跳跃计数器: 检测脚踝的 Y 方向移动,对跳跃次数进行计分。
- 抬手控制器: 抬起手,让 sprite 向上移动。
- 平衡游戏: 使用肩膀角度让 sprite 保持在中央。
- 舞蹈镜像: 将手腕和脚踝的位置映射到彩色特效。
- 深蹲训练器: 使用髋部和膝盖之间的角度计算深蹲次数。
🧩 自己试试: pishi.ai/play
🔧 提示和故障排除 #
- 没有摄像头?
• 确保摄像头已经连接,并且浏览器已获得摄像头访问权限。
• 如果摄像头被阻止,请在浏览器的网站设置中启用摄像头权限,然后重新加载页面。
• 加载扩展时,如果未检测到摄像头,输入图像会自动切换到 Scratch 舞台,也就是显示背景和角色的画布,这样你仍然可以继续使用和测试扩展的功能。 - 没有检测结果?
• 连续分类:使用这个 reporter(报告积木)查看检测功能是否处于启用状态。
• 如果检测已经启用,请改善环境光线,并正对摄像头。
• 将分类 [ON]:如果检测没有启用,请使用这个积木,然后再次使用上面的 reporter 检查检测状态。
• 在 camera 输入模式下,当摄像头关闭时,检测也会停止——你必须重新打开视频,或者将输入源切换到 Stage。
• 在 Stage 输入模式下,系统会检测 Stage 上所有可见的内容——背景、sprite 或图像。你可以完全关闭视频,同时仍然处理 Stage 图像。
• Stage 模式比 camera 输入速度慢,因此可以使用这个积木将检测间隔调低一些(例如 100–250 ms),以获得更流畅的效果: 分类 [INTERVAL]
• 在 Stage 模式中,“left”和“right”对应的 landmark 会互换,因为 Stage 图像没有镜像——坐标空间表示的是真实的非镜像视图。
• 当你使用以下积木时,检测也可能自动重新启动:
将视频 [开启] / 分类 [INTERVAL] / 选择摄像头 [CAMERA] / 选择输入图像 [camera/stage]. - 画面方向翻转了?
将视频 [镜像开启]:使用此积木可以显示非镜像的摄像头画面。“on”会像自拍画面一样进行镜像;“on-flipped”则显示真实的左右方向。 - 卡顿或运行缓慢?
使用 100–250 ms 之间的检测间隔,或者关闭其他浏览器标签页,以减少设备的处理负担。 - 出现 WebGL2 警告?
尝试使用 Firefox,或者使用支持 WebGL2 图形加速的较新设备。 - 想分析 Stage 而不是摄像头?
选择输入图像 [stage]:使用这个积木分析 Scratch Stage 图像,而不是实时摄像头画面。 Scratch 舞台可以包含摄像头画面,以及当前在舞台上可见的任何角色和背景。注意: 处理 Scratch 舞台的速度可能会比直接使用摄像头更慢。
🏃♂️ PoseNet 专用提示 #
- 检测不到人物? 确保整个上半身都清晰可见—至少头部、肩膀和手臂应该出现在画面中,这样才能保持稳定检测。
- 有些关节检测不到? 如果手腕或脚踝等关节被遮挡或位于画面之外,它们可能会消失。检查 people count 以确认是否检测到人物。
- 某个关节的 confidence 太低? 改善光线,或者稍微降低 minimum confidence 的值(例如 0.1–0.2),以帮助检测脚踝等较难识别的关节。
- 追踪不稳定? 与摄像头保持大约 3–6 feet 的距离,确保全身可见并且光线均匀。
- 追踪不稳定? 比较 keypoint 15 或 16(手腕)的 Y 位置与 keypoint 11 或 12(肩膀)的 Y 位置。如果手腕
- 计算跳跃次数? 追踪 keypoint 27 或 28(脚踝)的 Y 位置。突然向上的移动表示发生了一次跳跃。
- 检测深蹲? 测量 keypoint 23(髋部)、25(膝盖)和 27(脚踝)之间的角度。角度越小,表示蹲得越深。
- 检查姿势或平衡? 计算 keypoint 11 和 12(肩膀)之间的角度。偏离水平线的倾斜表示身体可能正在侧倾或失去平衡。
- 检测走路? 观察 keypoint 27 和 28(脚踝)的 X 位置是否交替移动。规律的左右移动表示正在走路。
- BlazePose 只检测到一个人? 这是正常的—BlazePose 专注于高精度的单人全身追踪。
- 在 Stage 模式下使用人体照片? Stage 模式中的 landmark 不会被镜像—left 和 right 与真实的人体解剖左右方向一致。
🔒 隐私与安全 #
- 所有处理都在你的浏览器本地运行。
- 不会将任何图像或视频上传到其他地方。
- 扩展启动时,模型文件会直接从 Pishi.ai 加载,因此不会使用任何第三方模型服务器。
- 使用摄像头之前,请务必先询问老师或家长。
- 你可以随时安全地使用此积木 将视频 [关闭].
🧪 技术信息 #
- Model (模型): MediaPipe BlazePose
- Framework (框架): TensorFlow.js (latest version)—完全在浏览器中运行,并使用 WebGL2 加速
- People (人数): 1(单人检测)
- Landmarks (特征点): 33 keypoints (0–32)
- Coordinates (坐标): 以 Stage 中心为原点的像素坐标(X 向右,Y 向上)
- Mirroring (镜像): “on” = 镜像预览,“on-flipped” = 真实方向视图
- Inputs (输入源): camera 或 Stage canvas
- Default keypoints (默认关键点): 11(left shoulder,左肩)、12(right shoulder,右肩)
- Requires (要求): 为获得最佳性能,需要支持 WebGL2
🔗 相关扩展 #
- 😎 人脸网格 — 检测面部 landmark
- 🖐️ Hand Pose – 检测手部 landmark
- 🖼️ Image Trainer – 创建自定义 AI model
- 🏫 Google 可训练机器 – 导入你自己的 TM model

