|
| 1 | +{ |
| 2 | + "title": "Hand Pose Detection with ml5.js", |
| 3 | + "description": "In this video, I explore the HandPose model using ml5.js. I'll demonstrate how to track hand keypoints and create an interactive painting sketch using gestures.", |
| 4 | + "videoId": "vfNHdVbE-l4", |
| 5 | + "nebulaSlug": "codingtrain-hand-pose-detection-with-ml5js", |
| 6 | + "date": "2024-10-27", |
| 7 | + "languages": ["ml5.js", "JavaScript"], |
| 8 | + "topics": ["machine learning (ML)", "webcam", "pose detection", "ml5.js", "HandPose"], |
| 9 | + "canContribute": true, |
| 10 | + "timestamps": [ |
| 11 | + { "time": "0:00", "title": "Introduction" }, |
| 12 | + { "time": "1:23", "title": "Technical background of the model" }, |
| 13 | + { "time": "3:52", "title": "Convert BodyPose to HandPose" }, |
| 14 | + { "time": "5:54", "title": "Detecting more than one hand" }, |
| 15 | + { "time": "6:14", "title": "Detecting handedness (left or right)" }, |
| 16 | + { "time": "6:51", "title": "Creating a painting sketch with index and thumb" }, |
| 17 | + { "time": "10:19", "title": "Add a layer using createGraphics()" }, |
| 18 | + { "time": "12:40", "title": "Storing previous hand position to draw a line" }, |
| 19 | + { "time": "14:17", "title": "Exercise ideas for you!" }, |
| 20 | + { "time": "15:27", "title": "Goodbye!" } |
| 21 | + ], |
| 22 | + "codeExamples": [ |
| 23 | + { |
| 24 | + "title": "HandPose - Keypoints", |
| 25 | + "description": "This sketch demonstrates how to render all of the 21 keypoints detected by the handPose model.", |
| 26 | + "image": "handpose-keypoints.png", |
| 27 | + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/o5wnL6esQ" } |
| 28 | + }, |
| 29 | + { |
| 30 | + "title": "HandPose - Painting", |
| 31 | + "description": "This sketch demonstrates how to draw using the index finger tip and thumb tip keypoints.", |
| 32 | + "image": "handpose-drawing.png", |
| 33 | + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/LCEHJm6PA" } |
| 34 | + }, |
| 35 | + { |
| 36 | + "title": "Simple painting", |
| 37 | + "description": "This sketch demonstrates drawing with mouseX, mouseY, pmouseX, pmouseY.", |
| 38 | + "image": "simple-painting.png", |
| 39 | + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/3VcKxx_GY" } |
| 40 | + }, |
| 41 | + { |
| 42 | + "title": "HandPose Painting - Stroke Weight", |
| 43 | + "description": "This sketch demonstrates how to change the stroke weight with the left hand.", |
| 44 | + "image": "painting-stroke-weight.png", |
| 45 | + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/-C3Og5Wzs" } |
| 46 | + }, |
| 47 | + { |
| 48 | + "title": "HandPose Painting - Color", |
| 49 | + "description": "This sketch demonstrates how to change colors with left hand taps.", |
| 50 | + "image": "painting-color.png", |
| 51 | + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/InzaVXI-R" } |
| 52 | + }, |
| 53 | + { |
| 54 | + "title": "HandPose - Thumbs up or Thumbs Down", |
| 55 | + "description": "This sketch demonstrates how to recognize a gesture based on the relative positions of two keypoints.", |
| 56 | + "image": "thumbs-up.png", |
| 57 | + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/0_qPHtsF_" } |
| 58 | + }, |
| 59 | + { |
| 60 | + "title": "HandPose - Particles", |
| 61 | + "description": "This sketch demonstrates how to emit particles from the keypoints of the hand.", |
| 62 | + "image": "handpose-particles.png", |
| 63 | + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/t7l5pYDDI" } |
| 64 | + } |
| 65 | + ], |
| 66 | + "groupLinks": [ |
| 67 | + { |
| 68 | + "title": "References", |
| 69 | + "links": [ |
| 70 | + { |
| 71 | + "icon": "💻", |
| 72 | + "title": "ml5.js", |
| 73 | + "url": "https://ml5js.org/", |
| 74 | + "description": "ml5.js website with model documentation and other supporting material." |
| 75 | + }, |
| 76 | + { |
| 77 | + "icon": "🏫", |
| 78 | + "title": "Introduction to ML for the Arts", |
| 79 | + "url": "https://github.com/ml5js/Intro-ML-Arts-IMA-F24", |
| 80 | + "description": "Syllabus for ITP/IMA course." |
| 81 | + }, |
| 82 | + { |
| 83 | + "icon": "📺", |
| 84 | + "title": "Jack B. Du's YouTube channel", |
| 85 | + "url": "https://www.youtube.com/channel/UCUP34ETx7nvIbd4ypkR02hg", |
| 86 | + "description": "Jack's coding tutorials, experiments, and more!" |
| 87 | + }, |
| 88 | + { |
| 89 | + "icon": "🎨", |
| 90 | + "title": "Jack B. Du's Instagram", |
| 91 | + "url": "https://www.instagram.com/jackbdu/", |
| 92 | + "description": "Jack B. Du is an artist and researcher whose work explores the poetic possibilities of code in both analog and digital forms." |
| 93 | + }, |
| 94 | + { |
| 95 | + "icon": "💻", |
| 96 | + "title": "On-Device, Real-Time Hand Tracking with MediaPipe", |
| 97 | + "url": "https://research.google/blog/on-device-real-time-hand-tracking-with-mediapipe/", |
| 98 | + "description": "Google Research blog post covering the technical details of the HandPose model." |
| 99 | + }, |
| 100 | + { |
| 101 | + "icon": "📄", |
| 102 | + "title": "3D Hand Pose with MediaPipe and TensorFlow.js", |
| 103 | + "url": "https://blog.tensorflow.org/2021/11/3D-handpose.html", |
| 104 | + "description": "Tensorflow Blog post covering the 2021 updates to hand detection model." |
| 105 | + } |
| 106 | + ] |
| 107 | + } |
| 108 | + ], |
| 109 | + "credits": [ |
| 110 | + { "title": "Editing", "name": "Mathieu Blanchette" }, |
| 111 | + { "title": "Animations", "name": "Jason Heglund" } |
| 112 | + ] |
| 113 | +} |
0 commit comments