Pose Detection ایک کمپیوٹر وژن ٹیکنالوجی ہے جو اہم نکات (landmarks) کے ذریعے انسانی جسم کی پوزیشن کا تعین کرتی ہے: سر، کندھے، کہنیاں، کلائیاں، کولہے، گھٹنے، ٹخنے۔ ہر نقطہ کے 2D جگہ میں (x, y) کوآرڈینیٹ ہوتے ہیں، اور جدید ماڈل (MediaPipe BlazePose 3D) گہرائی کے لیے z-کوآرڈینیٹ شامل کرتے ہیں۔ موبائل ایپلی کیشنز میں، Pose Detection فٹنس ٹریکرز، یوگا ایپس، AR فلٹرز، بحالی پروگراموں اور کھیلوں کے تجزیہ کے نظام میں استعمال ہوتا ہے۔ Google ML Kit، 2025 کے مطابق، آن ڈیوائس Pose Detection 94% PCK درستگی کے ساتھ فی سیکنڈ 30 فریم تک پروسیس کرتا ہے۔
اہم نکات
Pose Detection (Pose Estimation بھی کہا جاتا ہے) سے مراد تصویر یا ویڈیو سے انسانی جسم کے معنوی اہم نکات کا تعین کرنے کا کام ہے۔ Top-down نقطہ نظر پہلے شخص کا پتہ لگاتا ہے (Object Detection)، پھر اس کی پوز کا تعین کرتا ہے۔ Bottom-up نقطہ نظر تصویر میں تمام landmarks تلاش کرتا ہے، پھر انہیں شخص کے مطابق گروپ کرتا ہے (OpenPose)۔ موبائل آلات کے لیے bottom-up استعمال کیا جاتا ہے — یہ فریم میں متعدد افراد کے ساتھ تیز تر ہے۔ ML Kit اور BlazePose سنگل اسٹیج نقطہ نظر استعمال کرتے ہیں — ایک پاس میں پتہ لگانا + پوز۔
COCO Keypoints — 17 نکات کا ایک معیاری سیٹ: ناک، آنکھیں (2)، کان (2)، کندھے (2)، کہنیاں (2)، کلائیاں (2)، کولہے (2)، گھٹنے (2)، ٹخنے (2)۔ MediaPipe BlazePose 33 نکات استعمال کرتا ہے، شامل کرتا ہے: پیر کی انگلیاں، ایڑیاں، دھڑ کا مرکز، چہرے کے نکات۔ جتنے زیادہ نکات ہوں گے، پوز کا تجزیہ اتنا ہی درست ہوگا، لیکن حسابی بوجھ اتنا ہی زیادہ ہوگا۔ فٹنس ایپس کے لیے، 17–20 نکات کافی ہیں۔ مکمل تجزیہ (یوگا، رقص) کے لیے — 33 نکات۔ AR فلٹرز کے لیے — 33 نکات + 468 چہرے کے نکات (MediaPipe Face Mesh)۔
PCK (Percentage of Correct Keypoints) — Pose Detection درستگی کا میٹرک۔ گراؤنڈ ٹروتھ سے ایک فاصلے کے اندر پیش گوئی کیے گئے نکات کے تناسب کا حساب لگاتا ہے (عام طور پر شخص کے باؤنڈنگ باکس سائز کا 0.05–0.15)۔ ML Kit Pose Detection: 94% PCK@0.1. BlazePose Full: 96% PCK@0.1. MoveNet Lightning: 91% PCK@0.1. OKS (Object Keypoint Similarity) — COCO میں استعمال ہونے والا میٹرک، جو شخص کے پیمانے اور نقطہ کی مشکل کو مدنظر رکھتا ہے۔ mAP@OKS — بینچ مارکس کے لیے معیاری میٹرک۔
| ماڈل | Landmarks | PCK@0.1 | تاخیر (GPU) | سائز |
|---|---|---|---|---|
| ML Kit Pose Acc | 33 | 94% | 15–30 ms | 14 MB |
| BlazePose Full | 33 + 3D | 96% | 10–20 ms | 12 MB |
| BlazePose Lite | 33 | 91% | 5–10 ms | 5 MB |
| MoveNet Lightning | 17 | 91% | 8–15 ms | 8 MB |
| MoveNet Thunder | 17 | 95% | 25–40 ms | 13 MB |
Keypoint Visibility: ہر landmark کا ایک سکور (0..1) ہوتا ہے جو بتاتا ہے کہ ماڈل نقطہ کے بارے میں کتنا پراعتماد ہے اور کیا یہ نظر آتا ہے۔ سکور < 0.5 والے نکات پوشیدہ (منتقل، فریم سے باہر) سمجھے جاتے ہیں۔ پوز کے تجزیہ کے لیے، صرف نظر آنے والے نکات استعمال کریں۔ سیدھ کی تشخیص کے لیے — اعتماد کے وزنی فاصلے شمار کریں، جہاں کم سکور والے نکات کا میٹرک میں کم وزن ہوتا ہے۔
ML Kit Pose Detection — Google کی آن ڈیوائس پوز کا پتہ لگانے کے لیے ایک لائبریری۔ 33 landmarks کو سپورٹ کرتی ہے، بشمول چہرے کے نکات، پیر کی انگلیاں اور ایڑیاں۔ موڈ: Accurate Mode (14 MB ماڈل، 15–30 ms، اعلی درستگی) اور Streaming Mode (5 MB، 5–10 ms، ریئل ٹائم کے لیے)۔ Streaming Mode ٹریکنگ کے ساتھ ہلکا پھلکا ماڈل استعمال کرتا ہے — پہلے فریم کے بعد، درست پوزیشنوں کو دوبارہ معلوم کیے بغیر حرکت کو ٹریک کرتا ہے، جو 60 FPS تک حاصل کرتا ہے۔
ML Kit Pose Detection API: PoseDetector (اختیارات: setDetectorMode، setPerformanceMode) ← InputImage ← Pose (List<PoseLandmark>)۔ ہر PoseLandmark میں ہے: landmarkType (38 اقسام)، position (PointF3D)، inFrameLikelihood (0..1)۔ Pose یہ بھی فراہم کرتا ہے: شخص کا boundingBox، landmarks کی فہرست، getLandmark(type) طریقہ۔ پوز کی درجہ بندی کے لیے، ہڈیوں کے درمیان زاویے استعمال کریں: shoulderAngle، elbowAngle، hipAngle — ملحقہ landmarks کے درمیان Vector3D کے ذریعے شمار کیے جاتے ہیں۔
val options = PoseDetectorOptions.Builder()
.setDetectorMode(PoseDetectorOptions.STREAM_MODE)
.setPerformanceMode(PoseDetectorOptions.PERFORMANCE_MODE_FAST)
.build()
val detector = PoseDetection.getClient(options)
detector.process(inputImage)
.addOnSuccessListener { pose ->
val leftElbow = pose.getLandmark(PoseLandmark.LEFT_ELBOW)
val leftShoulder = pose.getLandmark(PoseLandmark.LEFT_SHOULDER)
val leftWrist = pose.getLandmark(PoseLandmark.LEFT_WRIST)
val elbowAngle = calculateAngle(
leftShoulder.position, leftElbow.position, leftWrist.position
)
}
iOS پر ML Kit: Pose Detection ML Kit CocoaPods کے ذریعے دستیاب ہے۔ API Android جیسی ہے: PoseDetector ← UIImage ← Pose ← PoseLandmark۔ iOS پر، ML Kit Core ML اور ANE (A12+) استعمال کرتا ہے، جو iPhone 15 Pro پر Accurate Mode میں 10–20 ms تاخیر حاصل کرتا ہے۔ Streaming Mode — 3–8 ms، 120 FPS تک۔ iOS پر، ML Kit Pose Detection MediaPipe BlazePose سے تیز تر ہے (Core ML ایکسلریشن)، لیکن پرانے آلات (iPhone X–11) پر FPS میں BlazePose سے پیچھے ہے۔
MediaPipe BlazePose — Google Research کا Pose Detection کے لیے ایک اعلی کارکردگی والا ماڈل۔ ہائبرڈ فن تعمیر استعمال کرتا ہے: MobileNetV2 + Feature Pyramid Network پر مبنی detector-decoder پائپ لائن۔ BlazePose Full: 33 landmarks + 3D کوآرڈینیٹ (گہرائی z)۔ BlazePose Lite: گہرائی کے بغیر 33 landmarks (2D)۔ دونوں ماڈل Android، iOS، Python اور Web پر MediaPipe Tasks Vision میں دستیاب ہیں۔ BlazePose Full GPU پر 30–60 FPS پروسیس کرتا ہے، Lite — 60+ FPS۔
BlazePose کے ساتھ 3D پوز کا تخمینہ: ماڈل ہر landmark کے لیے z-کوآرڈینیٹ کی پیش گوئی کرتا ہے، جو سٹیریو کیمرے کے بغیر گہرائی کا تخمینہ (اعضاء کا قریب/دور) لگانے کی اجازت دیتا ہے۔ z-کوآرڈینیٹ کیمرے کے نسبت میٹرک اسپیس (میٹر) میں شمار کیا جاتا ہے۔ BlazePose 3D درستگی: عوامی بینچ مارکس پر 37 mm MPJPE (Mean Per Joint Position Error) — فٹنس اور AR کے لیے کافی، طبی تشخیص کے لیے ناکافی۔ ARKit/ARFoundation کے لیے، BlazePose 3D قدرتی گہرائی فراہم کرتا ہے۔
// MediaPipe Pose Detection Tasks Vision
val options = PoseLandmarkerOptions.Builder()
.setBaseOptions(BaseOptions.builder()
.setModelAssetPath("pose_landmarker_full.task")
.build())
.setDelegate(Delegate.GPU)
.build()
val landmaker = PoseLandmarker.createFromOptions(context, options)
val result = landmaker.detect(MPImage.fromBitmap(bitmap))
result.landmarks.forEach { pose ->
pose.forEach { landmark ->
drawLandmark(landmark.x, landmark.y, landmark.z)
}
}
BlazePose بمقابلہ ML Kit Pose Detection: BlazePose تیز تر ہے (60+ FPS بمقابلہ 30 FPS)، 3D کوآرڈینیٹ کو سپورٹ کرتا ہے، MediaPipe کے ذریعے کراس پلیٹ فارم کام کرتا ہے۔ ML Kit کو ضم کرنا آسان ہے (MediaPipe SDK کی ضرورت نہیں)، اعلی درستگی کے ساتھ پہلے سے تربیت یافتہ ماڈلز شامل ہیں۔ iOS مقامی پروجیکٹس کے لیے — ML Kit Pose Detection (بہترین ANE اصلاح)۔ کراس پلیٹ فارم پروجیکٹس (Flutter، React Native) کے لیے — MediaPipe BlazePose (تمام پلیٹ فارمز کے لیے متحد ماڈل)۔ مشکل مناظر میں درستگی کے لیے — دونوں ماڈلز تقابلی ہیں۔
MoveNet — TensorFlow سے Pose Detection ماڈلز کا ایک خاندان، TFLite کے لیے بہتر بنایا گیا۔ Lightning (8 MB، INT8 — 4 MB): 17 COCO keypoints، 91% PCK، 8–15 ms تاخیر، 30+ FPS۔ Thunder (13 MB، INT8 — 6 MB): 17 keypoints، 95% PCK، 25–40 ms تاخیر، 20+ FPS۔ MoveNet CenterNet فن تعمیر + اعلی ریزولوشن ہیٹ میپ کے لیے bilinear interpolation استعمال کرتا ہے۔ MoveNet ملٹی پوز ڈیٹیکشن (6 افراد تک) کو سپورٹ کرتا ہے۔ ماڈلز TensorFlow Hub پر دستیاب ہیں۔
MoveNet Lightning بمقابلہ Thunder: Lightning — اعلی FPS (فٹنس، AR فلٹرز) کے ساتھ ریئل ٹائم ایپلی کیشنز کے لیے۔ Thunder — GPU والے آلات پر درست پوز تجزیہ (بحالی، کھیلوں کا تجزیہ) کے لیے۔ دونوں ماڈل iOS کے لیے tf-coreml کے ذریعے Core ML میں تبدیل ہوتے ہیں۔ MoveNet TFLite Task Vision PoseLandmarker API کے ذریعے بھی دستیاب ہے۔ سفارش: Lightning سے شروع کریں، اگر درستگی ناکافی ہے — Thunder پر جائیں (صرف +15 ms تاخیر کا اوورہیڈ)۔
// TFLite کے ساتھ MoveNet تخمینہ
Interpreter interpreter = new Interpreter(loadModel(context));
TensorImage image = TensorImage.fromBitmap(bitmap);
image.load(Bitmap.createScaledBitmap(bitmap, 192, 192, true));
float[][] output = new float[1][51];
interpreter.run(image.getTensorBuffer(), output);
float[] keypoints = output[0];
for (int i = 0; i < 17; i++) {
float y = keypoints[i * 3];
float x = keypoints[i * 3 + 1];
float score = keypoints[i * 3 + 2];
drawKeypoint(x, y, score);
}
MoveNet ملٹی پوز: فریم میں 6 افراد تک کا پتہ لگانا۔ معیاری ہیٹ میپ طریقہ کے بجائے، MoveNet شخص کا پتہ لگانا + پوز کی تطہیر استعمال کرتا ہے: پہلے افراد کا پتہ لگاتا ہے (مرکز پر مبنی)، پھر ہر پوز کا تخمینہ لگاتا ہے۔ ملٹی پوز موڈ سنگل پوز سے 2–3 گنا سست ہے: Lightning — 25–50 ms (6 افراد)۔ ایک صارف والی فٹنس ایپس کے لیے، سنگل پوز استعمال کریں۔ گروپ سرگرمیوں (یوگا، کراس فٹ) کے لیے — بیٹری بچانے کے لیے فریم ریٹ کی حد بندی کے ساتھ ملٹی پوز۔
Pose Classification — پتہ لگانے کے بعد کا مرحلہ: landmarks کو معنوی اعمال (کھڑا، بیٹھا، ہاتھ اٹھایا، بیٹھک) میں تبدیل کرنا۔ طریقے: Rule-based (دستی اصول — ہڈیوں کے درمیان زاویے)، ML-based (landmark ویکٹر پر لاجسٹک ریگریشن یا Random Forest)، DL-based (فریموں کے درمیان پوز کے سلسلے کا LSTM درجہ بند)۔ Rule-based — 50–80% درستگی، سادہ اور تیز۔ ML-based — 200+ لیبل والی مثالوں کے ساتھ 85–95% درستگی۔ LSTM — وقت کی سیریز (ویڈیو) پر 90–98% درستگی۔
ہڈیوں کے درمیان زاویے: ہر نقطہ کے لیے، پڑوسی نکات کے ساتھ زاویے شمار کیے جاتے ہیں۔ مثالیں: دائیں کہنی کا زاویہ (کندھا ← کہنی ← کلائی)، دائیں گھٹنے کا زاویہ (کولہا ← گھٹنا ← ٹخنہ)، دھڑ کا زاویہ (کندھوں کا وسط ← کولہوں کا وسط)۔ زاویے شخص کے پیمانے اور اسکرین کی پوزیشن سے غیر متغیر ہیں۔ زاویوں کو [0, 1] حد میں معمول پر لانا ایک سادہ حد کے اصول کے ساتھ پوز کی درجہ بندی کی اجازت دیتا ہے: اگر elbowAngle < 30° — بازو جھکا ہوا ہے، اگر > 150° — پھیلا ہوا ہے۔
// قواعد پر مبنی اسکواٹ درجہ بند
fun classifySquat(pose: Pose): SquatPhase {
val kneeAngle = angle(
pose.getLandmark(PoseLandmark.LEFT_HIP),
pose.getLandmark(PoseLandmark.LEFT_KNEE),
pose.getLandmark(PoseLandmark.LEFT_ANKLE)
)
return when {
kneeAngle > 140f -> SquatPhase.STANDING
kneeAngle < 90f -> SquatPhase.SQUAT
else -> SquatPhase.TRANSITION
}
}
MediaPipe Pose Classification — MediaPipe Tasks میں شامل پہلے سے تربیت یافتہ درجہ بند: اسکواٹ، پش اپ، پلانک، ٹانگ اٹھانا۔ درجہ بند landmarks کی ایک فہرست لیتا ہے اور عمل + اعتماد واپس کرتا ہے۔ وقتی ہمواری (وقتی فلٹر) شامل ہے: پوزوں کے درمیان ہموار منتقلی کے لیے HED (Holt Exponential Double Smoothing)۔ حسب ضرورت اعمال کے لیے — MediaPipe Model Maker (TensorFlow Lite + میٹا ڈیٹا) کے ذریعے 100–500 مثالوں پر ایک درجہ بند تربیت دیں۔
تکنیکی اصلاح کے ساتھ فٹنس ٹریکرز — ایپ ورزش کے دوران صارف کی پوز کا تجزیہ کرتی ہے اور آواز کے اشارے فراہم کرتی ہے: “کولہے نیچے کریں”، “دھڑ کو آگے نہ جھکائیں”۔ ML Kit Pose Detection + قواعد پر مبنی درجہ بند تکرار شمار کرتا ہے اور معیار کا جائزہ لیتا ہے۔ اسکواٹ: گھٹنے کا زاویہ < 90° — صحیح اسکواٹ، کمر کا زاویہ < 45° — خطرناک دھڑ جھکاؤ۔ پش اپ: نچلے نقطہ پر کہنی کا زاویہ < 90° — مکمل پش اپ۔ پل اپ: بار کی سطح سے اوپر ٹھوڑی۔
بحالی اور فزیو تھراپی — Pose Detection جسمانی تھراپی کی مشقوں کی دور دراز نگرانی کے لیے استعمال ہوتا ہے۔ ڈاکٹر ایک حوالہ پوز مقرر کرتا ہے (مثال کے طور پر، 45° پر کندھے کا اغوا)، ایپ موجودہ زاویہ اور انحراف کی پیمائش کرتی ہے۔ BlazePose 3D ±3° کی زاویہ درستگی فراہم کرتا ہے — طبی تشخیص کے لیے کافی۔ تعدد: 3–5 سیکنڈ میں 1 فریم (بیٹری بچت)۔ آن ڈیوائس — مریض کے طبی ڈیٹا کی رازداری۔ فالج کے بعد بحالی: ہاتھ سے کندھے، کہنی کی توسیع، کولہے کے موڑنے کی ٹریکنگ۔
AR فلٹرز اور اثرات — Pose Detection سوشل نیٹ ورکس (TikTok، Instagram، Snapchat) میں AR فلٹرز کی بنیاد ہے۔ سر، کندھوں اور ہاتھوں کے landmarks ماسک، اینیمیشن، آرائشی عناصر کو اوورلے کرنے کے لیے استعمال ہوتے ہیں۔ MediaPipe BlazePose Full + Face Mesh (468 نکات) فلیگ شپ آلات پر 120+ FPS فراہم کرتا ہے۔ ARKit/ARCore Face Tracking + Pose Detection — مکمل جسم AR کے لیے ایک مجموعہ۔ تقاضے: FPS > 30، motion-to-photon تاخیر < 20 ms۔
// پوز landmarks کے ساتھ AR فلٹر
let request = VNDetectHumanBodyPoseRequest { req, _ in
guard let observation = req.results?.first as? VNHumanBodyPoseObservation else { return }
let keypoints = try observation.recognizedPoints(.all)
let rightShoulder = keypoints[VNHumanBodyPoseObservation.JointName.rightShoulder]
DispatchQueue.main.async {
arView.placeFilter(at: rightShoulder?.location ?? .zero)
}
}
کھیلوں کا تجزیہ — پیشہ ورانہ تکنیکی تشخیص: دوڑ کا بائیو مکینیکل تجزیہ (کیڈنس، قدم کی لمبائی، بازو جھولنے کی ہم آہنگی)، تیراکی (جسم کا گھومنا، اسٹروک کے دوران کہنی کا زاویہ)، ٹینس (کندھے کا گھومنا، کلائی کا سنیپ)۔ MoveNet Thunder پوسٹ پروسیسنگ کے ساتھ غیر پیشہ ورانہ تجزیہ کے لیے کافی درستگی فراہم کرتا ہے۔ پیشہ ورانہ کھیلوں میں 3D موشن کیپچر (Vicon، OptiTrack) کی ضرورت ہوتی ہے، لیکن فون پر مبنی Pose Detection بڑے بازار کے لیے ایک سستا متبادل ہے۔ فریموں کے درمیان زاویہ کی ہم آہنگی ایک اہم جز ہے۔
اکثر پوچھے گئے سوالات
وقتی ہمواری استعمال کریں: One Euro Filter (1€ فلٹر) — ہر landmark کے لیے الگ سے ترتیب پذیر کٹ آف فریکوئنسی، حقیقی حرکت (کم تاخیر) کو برقرار رکھتے ہوئے اعلی تعدد والے شور (ہلنا) کو دباتا ہے۔ MediaPipe BlazePose میں بلٹ ان HED (Holt Exponential Double Smoothing) شامل ہے — حرکت کی پیش گوئی کے ساتھ انکولی ہمواری۔ ML Kit کے لیے، 1€ فلٹر خود لاگو کریں: فلٹر کے دو پیرامیٹر ہیں — beta (رفتار) اور minCutoff (فریکوئنسی حد)۔ تجویز کردہ: beta = 0.04، minCutoff = 0.5 (Android)۔
ML Kit Pose Detection — ایک شخص (سنگل پوز)۔ MoveNet Lightning — 6 افراد تک (ملٹی پوز)۔ MediaPipe BlazePose — MediaPipe Tasks کے ذریعے 2–3 افراد تک (ملٹی پوز)۔ گروپ سرگرمی والی ایپس کے لیے، MoveNet Lightning یا BlazePose استعمال کریں۔ ایک صارف والی فٹنس ایپس کے لیے — ML Kit (آسان انضمام، اعلی سنگل پوز درستگی)۔ AR فلٹرز والی ویڈیو کالز کے لیے — ملٹی پوز (اعلی FPS) کے ساتھ BlazePose Lite کافی ہے۔
دو ہڈیوں کے درمیان زاویہ: تین landmarks لیں — جوڑ A، جوڑ B (زاویہ کا سرا)، جوڑ C۔ ویکٹر BA = (A - B) اور BC = (C - B) شمار کریں۔ زاویہ = atan2(cross(BA, BC)، dot(BA, BC))۔ Math.toDegrees(acos(dot(BA, BC) / (len(BA) * len(BC))))۔ زاویہ 0–180° کی حد میں۔ تین جہتی کوآرڈینیٹ (BlazePose 3D) کے لیے Vector3D استعمال کریں۔ ML درجہ بند کے لیے زاویوں کو [0,1] حد میں معمول پر لائیں۔
ہاں، تمام بڑے ماڈلز (ML Kit، BlazePose، MoveNet) ایک ساتھ دونوں ہاتھوں کے landmarks کا پتہ لگاتے ہیں: LEFT_SHOULDER، LEFT_ELBOW، LEFT_WRIST، RIGHT_SHOULDER، RIGHT_ELBOW، RIGHT_WRIST۔ اضافی ہاتھ کی ٹریکنگ کے لیے، Pose Detection + Hand Landmarker (فی ہاتھ 21 نکات) کو یکجا کریں۔ MediaPipe Hands + BlazePose مکمل جسم + ہاتھوں کے لیے معیاری مجموعہ ہے۔ iOS پر — VNDetectHumanHandPoseRequest + VNDetectHumanBodyPoseRequest۔
ML Kit Pose Detection: کم از کم شخص کا باؤنڈنگ باکس — 100x100 پکسلز (پہلو کا تناسب ~1:1)۔ MoveNet Lightning: 120x120 پکسلز۔ BlazePose: 80x160 پکسلز (عمودی باؤنڈنگ باکس)۔ کیمرے سے 3 میٹر کے فاصلے پر پورے قد کے شخص کے لیے (1920x1080) — تقریباً 250x600 px، جو کافی ہے۔ > 5 میٹر کے فاصلے پر، درستگی کم ہو جاتی ہے — ملٹی پوز + اعلی ریزولوشن ان پٹ استعمال کریں۔ دور کی چیزوں کے لیے، Object Detection + Pose Estimation (دو مرحلے) بہتر ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں