Files
opendance 68783c37b6 docs: 消除 Gitea 模棱两可 Unicode 告警(全角标点紧邻 ASCII 时改为半角)
依据 Gitea v1.27.3 modules/charset/escape_stream.go 的判定规则
(analyzeDetectResults:仅当左右相邻字符都不是非 ASCII 时才标记,
且 _common 表恒定生效),把说明文档中会被标记的全角标点
(,:;?!() 等)改为半角,并保证成对括号宽度一致。
中文语境中的全角标点(左右均为中文)保持原样,不动代码与契约语义。
2026-09-15 21:45:51 +08:00

1.5 KiB

T-AND-003 MediaPipe Pose 端侧推理

  • 状态: done
  • 依赖: T-AND-002

目标

用 MediaPipe Tasks Vision 在设备本地做姿态推理,输出 33 个归一化关键点。

load

DSH.md
contracts/skeleton-topology.md    # 锚点:1 33 点、4 坐标系
app/src/main/java/com/opendance/studio/pose/PoseDetector.kt

交付物

pose/PoseDetector.kt + app/src/main/assets/pose_landmarker_lite.task(5.7 MB)。

关键实现

项 说明
运行模式 LIVE_STREAM + detectAsync,不阻塞相机线程
模型 pose_landmarker_lite.task(随 APK 分发,noCompress "task" 保证可读)
置信度阈值 detection / presence / tracking 均 0.5
背压 busy 标志:上一帧仍在推理时直接丢弃新帧并计数,不排队
时间戳 单调递增校正(MediaPipe 要求严格递增)
缺失点 置信度置 0、坐标归零,接收端按契约插值

坐标与镜像语义

  • 发送未镜像的原始 MediaPipe 坐标(契约 4)
  • 是否镜像由帧头 flags.bit0 声明,接收端据此决定如何还原
  • 叠加层绘制时才取 1 - x,与前置摄像头预览的镜像观感一致

这保证了同一份关键点数据在「镜像预览」与「真实左右」两种解释下都不会歧义。

上半身模式

upperBodyOnly = true 时,髋部及以下点置信度置 0 并置 flags.bit2, 接收端会插值。用于带宽/算力不足时降级。

验收

assembleDebug 通过;运行页在真机上可看到骨架叠加层(见 tasks/009)。