|
| 1 | +{ |
| 2 | + "title": "3D Pose Estimation with ml5.js", |
| 3 | + "description": "Building on BodyPose in ml5.js, this video explores the 3D capabilities of the BlazePose model, visualizing poses in a 3D space using WEBGL in p5.js.", |
| 4 | + "videoId": "IF414I26_K8", |
| 5 | + "nebulaSlug": "codingtrain-3d-pose-estimation-with-ml5js", |
| 6 | + "date": "2024-12-01", |
| 7 | + "languages": ["ml5.js", "JavaScript"], |
| 8 | + "topics": ["machine learning (ML)", "webcam", "pose detection", "ml5.js", "MoveNet", "BlazePose"], |
| 9 | + "canContribute": true, |
| 10 | + "timestamps": [ |
| 11 | + { "time": "0:00", "title": "Introduction" }, |
| 12 | + { "time": "2:00", "title": "Incorporating BlazePose model" }, |
| 13 | + { "time": "2:37", "title": "What are the xyz values?" }, |
| 14 | + { "time": "4:30", "title": "Replace live camera with recorded video." }, |
| 15 | + { "time": "5:49", "title": "Render with p5.js WEBGL" }, |
| 16 | + { "time": "7:48", "title": "Use scale() to expand range of xyz values" }, |
| 17 | + { "time": "9:00", "title": "Creating 3D scene" }, |
| 18 | + { "time": "9:58", "title": "Rotating scene." }, |
| 19 | + { "time": "11:24", "title": "Using orbitControl()" }, |
| 20 | + { "time": "12:22", "title": "Using 3D shapes" }, |
| 21 | + { "time": "13:42", "title": "Goodbye!" } |
| 22 | + ], |
| 23 | + "codeExamples": [ |
| 24 | + { |
| 25 | + "title": "BlazePose 3D", |
| 26 | + "description": "Sketch demonstrating use of BlazePose model with 3D keypoints.", |
| 27 | + "image": "blazepose.png", |
| 28 | + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/ftALPDieT" } |
| 29 | + }, |
| 30 | + { |
| 31 | + "title": "BlazePose Lerp", |
| 32 | + "description": "Sketch demonstrating linear interpolation of 3D keypoints.", |
| 33 | + "image": "blazepose_lerp.png", |
| 34 | + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/JMhDRpcxi_" } |
| 35 | + } |
| 36 | + ], |
| 37 | + "groupLinks": [ |
| 38 | + { |
| 39 | + "title": "References", |
| 40 | + "links": [ |
| 41 | + { |
| 42 | + "icon": "π»", |
| 43 | + "title": "ml5.js: BodyPose", |
| 44 | + "url": "https://docs.ml5js.org/#/reference/bodypose", |
| 45 | + "description": "ml5.js documentation on BodyPose models." |
| 46 | + }, |
| 47 | + { |
| 48 | + "icon": "π", |
| 49 | + "title": "On-device, Real-time Body Pose Tracking with MediaPipe BlazePose", |
| 50 | + "url": "https://research.google/blog/on-device-real-time-body-pose-tracking-with-mediapipe-blazepose/", |
| 51 | + "description": "Google Research blog post on the BlazePose model." |
| 52 | + }, |
| 53 | + { |
| 54 | + "icon": "π", |
| 55 | + "title": "3D Pose Detection with MediaPipe BlazePose GHUM and TensorFlow.js", |
| 56 | + "url": "https://blog.tensorflow.org/2021/08/3d-pose-detection-with-mediapipe-blazepose-ghum-tfjs.html", |
| 57 | + "description": "TensorFlow blog post on the BlazePose GHUM model." |
| 58 | + }, |
| 59 | + { |
| 60 | + "icon": "π", |
| 61 | + "title": "BlazePose GHUM Holistic:", |
| 62 | + "url": "https://arxiv.org/pdf/2206.11678", |
| 63 | + "description": "Research paper covering real-time 3D human landmarks and pose estimation." |
| 64 | + } |
| 65 | + ] |
| 66 | + }, |
| 67 | + { |
| 68 | + "title": "Videos", |
| 69 | + "links": [ |
| 70 | + { |
| 71 | + "icon": "π", |
| 72 | + "title": "ml5.js Pose Estimation", |
| 73 | + "url": "/tracks/ml5js-beginners-guide/ml5/7-bodypose/pose-detection", |
| 74 | + "description": "Previous video covering BodyPose in ml5.js focusing on the MoveNet model." |
| 75 | + }, |
| 76 | + { |
| 77 | + "icon": "π", |
| 78 | + "title": "Custom Shapes", |
| 79 | + "url": "/tracks/p5-tips-and-tricks/more-p5/custom-shapes", |
| 80 | + "description": "In this video, I look at how to draw \"custom\" shapes in p5.js, using, `beginShape()`, `endShape()`, `vertex()` and `curveVertex()." |
| 81 | + }, |
| 82 | + { |
| 83 | + "icon": "π", |
| 84 | + "title": "Translate, Rotate, Push/Pop", |
| 85 | + "url": "/tracks/transformations-in-p5/transformations/translate-rotate-push-pop", |
| 86 | + "description": "In this video I cover the functions translate(), rotate(), push() and pop()." |
| 87 | + } |
| 88 | + ] |
| 89 | + } |
| 90 | + ], |
| 91 | + "credits": [ |
| 92 | + { "title": "Editing", "name": "Mathieu Blanchette" }, |
| 93 | + { "title": "Animations", "name": "Jason Heglund" } |
| 94 | + ] |
| 95 | +} |
0 commit comments