Mobile App Pose Estimation Implementation

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Mobile App Pose Estimation Implementation
Complex
~1-2 weeks
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Pose Estimation Implementation in Mobile Applications

Pose estimation detects 17–33 key skeleton points of a person in real-time. Used in fitness apps (rep counting, form assessment), medical apps (rehabilitation, gait analysis), and AR products. More complex than object detection: requires not just point localization accuracy but stability between frames.

Model Selection: MoveNet vs BlazePose vs ML Kit Pose Detection

MoveNet Lightning/Thunder (Google)—best accuracy/speed balance for mobile. Lightning: 17 points, 30+ FPS on iPhone 12, TFLite-optimized. Thunder: more accurate, ~15 FPS. Available via TFLite Task Library as PoseLandmarker.

MediaPipe BlazePose / Pose Landmarker—33 points (including face, leg, hand points). Needed when detail matters: wrist angle, finger position. Latency: ~25 ms on Pixel 7 GPU, ~55 ms on CPU.

ML Kit Pose Detection—33 points, simple Firebase integration. In-process, no network. Slightly slower than MoveNet, easier for Android/iOS cross-platform.

For fitness rep tracking, MoveNet Lightning suffices. For medical gait analysis, BlazePose with 33 points and z-coordinates.

Rep Counting: More Complex Than It Seems

Typical task: "count squats." Naïve approach: track hip Y-coordinate, count threshold crossings. Works in perfect conditions, breaks in reality.

Correct approach: compute knee joint angle via dot product of vectors [HIP → KNEE] and [KNEE → ANKLE]. Squat = angle drops below 120°. Standing = angle returns above 160°. State machine: STANDING → DOWN → STANDING = 1 rep.

3D angle via z-coordinates is more stable than 2D if camera isn't strictly side-view. BlazePose/MoveNet return z in normalized units—this is depth estimation, not absolute meters. Sufficient for angles, insufficient for absolute distances.

Smooth landmarks—mandatory. Raw data jitters 3–5 pixels between frames. Simplest filter: exponential moving average EMA(α=0.6) per coordinate. MediaPipe provides VelocityFilter—better for non-linear motion.

Integration: iOS and Android

iOS: MediaPipe Tasks Vision via Swift Package Manager. PoseLandmarker with runningMode = .liveStream. Callback returns PoseLandmarkerResult with landmarks (normalized) and worldLandmarks (meters, for physical calculations). Draw skeleton on AVCaptureVideoPreviewLayer via CAShapeLayer—not UIKit UIView (heavier).

Android: com.google.mediapipe:tasks-vision. PoseLandmarker.create() with BaseOptions.GPU_DELEGATE on supported devices. Draw via Canvas.drawLine() on SurfaceView.

Case: knee injury rehabilitation app. Need knee bend angle assessment during exercises. Used MoveNet Thunder (more accurate than Lightning for small movements). Angle via dot product of 2D vectors (z unnecessary, camera strictly side-view—task constraint). Measurement error vs physician goniometer: ±4.2°. Sufficient for progress tracking, not medical diagnosis—important to communicate in UI.

Draw skeleton via CAShapeLayer with CABasicAnimation on path—smoother than redrawing in drawRect each frame.

Common Mistakes

Drawing skeleton in model coordinates without transforming to preview coordinates. MoveNet points are normalized (0..1), preview coordinates depend on gravity of AVCaptureVideoPreviewLayer. Need explicit transformation accounting for aspect ratio and crop.

Running inference on main thread—guaranteed 0 FPS UI. Inference on DispatchQueue.global(qos: .userInteractive) (iOS) or Executors.newSingleThreadExecutor() (Android).

Timeline

Basic skeleton on video stream + counting one exercise: 1–2 weeks. Full fitness module with multiple exercises, voice feedback, and history: 3–4 weeks. Cost calculated individually.