This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

feat(android): swap MLKit Pose to the Accurate detector

Same API, higher-quality detector. Swaps the gradle artifact from
pose-detection to pose-detection-accurate and updates both pose-client
call sites to use AccuratePoseDetectorOptions. Trades ~2× per-frame
latency for materially better recall — worthwhile given pose is not
the FPS bottleneck in BOTH mode.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

+6 -6
+1 -1
gradle/libs.versions.toml
··· 32 32 litert-gpu = { module = "com.google.ai.edge.litert:litert-gpu", version.ref = "litert" } 33 33 litert-metadata = { module = "com.google.ai.edge.litert:litert-metadata", version.ref = "litert" } 34 34 litert-support = { module = "com.google.ai.edge.litert:litert-support", version.ref = "litert" } 35 - pose-detection = { module = "com.google.mlkit:pose-detection", version.ref = "poseDetectionVersion" } 35 + pose-detection = { module = "com.google.mlkit:pose-detection-accurate", version.ref = "poseDetectionVersion" } 36 36 pose-detection-common = { group = "com.google.mlkit", name = "pose-detection-common", version.ref = "poseDetectionVersion" } 37 37 filekit-core = { module = "io.github.vinceglb:filekit-core", version.ref = "filekitCore" } 38 38 filekit-dialogs = { module = "io.github.vinceglb:filekit-dialogs", version.ref = "filekitCore" }
+3 -3
posedetection/src/androidMain/kotlin/com.performancecoachlab/posedetection/camera/CameraView.android.kt
··· 55 55 import com.google.mlkit.vision.pose.Pose 56 56 import com.google.mlkit.vision.pose.PoseDetection 57 57 import com.google.mlkit.vision.pose.PoseLandmark 58 - import com.google.mlkit.vision.pose.defaults.PoseDetectorOptions 58 + import com.google.mlkit.vision.pose.accurate.AccuratePoseDetectorOptions 59 59 import com.performancecoachlab.posedetection.custom.CustomObjectRespository 60 60 import com.performancecoachlab.posedetection.custom.ObjectModel 61 61 import com.performancecoachlab.posedetection.recording.AnalysisObject ··· 137 137 val lastPoseRunAtMs = remember { AtomicLong(0L) } 138 138 val analysisFrameCounter = remember { AtomicLong(0L) } 139 139 140 - val options = PoseDetectorOptions.Builder() 141 - .setDetectorMode(PoseDetectorOptions.STREAM_MODE) 140 + val options = AccuratePoseDetectorOptions.Builder() 141 + .setDetectorMode(AccuratePoseDetectorOptions.STREAM_MODE) 142 142 .build() 143 143 val poseDetector = PoseDetection.getClient(options) 144 144
+2 -2
posedetection/src/androidMain/kotlin/com/performancecoachlab/posedetection/recording/InputFrame.android.kt
··· 10 10 import co.touchlab.kermit.Logger 11 11 import com.google.mlkit.vision.common.InputImage 12 12 import com.google.mlkit.vision.pose.PoseDetection 13 - import com.google.mlkit.vision.pose.defaults.PoseDetectorOptions 13 + import com.google.mlkit.vision.pose.accurate.AccuratePoseDetectorOptions 14 14 import com.performancecoachlab.posedetection.camera.applyFocusAreaMaskPooled 15 15 import com.performancecoachlab.posedetection.camera.drawAnalysisResults 16 16 import com.performancecoachlab.posedetection.camera.drawSkeleton ··· 63 63 64 64 actual class FrameAnalyser actual constructor(val model: ObjectModel?) { 65 65 private val options = 66 - PoseDetectorOptions.Builder().setDetectorMode(PoseDetectorOptions.STREAM_MODE).build() 66 + AccuratePoseDetectorOptions.Builder().setDetectorMode(AccuratePoseDetectorOptions.STREAM_MODE).build() 67 67 private val poseDetector = PoseDetection.getClient(options) 68 68 private val objDetector = model?.getDetector() 69 69