diff --git a/.gitignore b/.gitignore index 8243ef7d1..a1d8af482 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,4 @@ public .DS_Store _descriptions .netlify -google-credentials/ +google-credentials \ No newline at end of file diff --git a/content/tracks/main-tracks/ml5js-beginners-guide/index.json b/content/tracks/main-tracks/ml5js-beginners-guide/index.json index c631a7b7f..20e937124 100644 --- a/content/tracks/main-tracks/ml5js-beginners-guide/index.json +++ b/content/tracks/main-tracks/ml5js-beginners-guide/index.json @@ -1,20 +1,16 @@ { - "title": "A Beginner's Guide to Machine Learning in JavaScript", + "title": "A Beginner's Guide to Machine Learning in JavaScript with ml5.js", "date": "2018-07-31", "playlistId": "PLRqwX-V7Uu6YPSwT06y_AEYTqIwbeam3y", "description": "Welcome to \u201cA Beginner's Guide to Machine Learning in JavaScript\u201d! In this series, I'll teach the concepts behind machine learning using the ml5.js library.", "chapters": [ { "title": "Introduction", - "videos": ["ml5/0-introduction/1-introduction", "ml5/0-introduction/patt-vira"] + "videos": ["ml5/0-introduction/0-trailer", "ml5/0-introduction/1-introduction"] }, { "title": "Classification", - "videos": [ - "ml5/1-classification/image-classification", - "ml5/1-classification/3-object-detection", - "ml5/9-doodleNet/1-doodleNet" - ] + "videos": ["ml5/1-classification/image-classification", "ml5/1-classification/3-object-detection", "ml5/9-doodleNet/1-doodleNet"] }, { "title": "Transfer Learning", @@ -46,8 +42,12 @@ ] }, { - "title": "PoseNet", - "videos": ["ml5/7-posenet/pose-detection", "ml5/7-posenet/2-pose-classifier", "ml5/7-posenet/3-pose-regression"] + "title": "BodyPose", + "videos": ["ml5/7-bodypose/pose-detection", "ml5/7-bodypose/2-pose-classifier", "ml5/7-bodypose/3-pose-regression"] + }, + { + "title": "FaceMesh", + "videos": ["ml5/0-introduction/patt-vira"] }, { "title": "Convolutional Neural Network", diff --git a/content/videos/ml5/0-introduction/0-trailer/index.json b/content/videos/ml5/0-introduction/0-trailer/index.json new file mode 100644 index 000000000..b9ea786f4 --- /dev/null +++ b/content/videos/ml5/0-introduction/0-trailer/index.json @@ -0,0 +1,45 @@ +{ + "title": "Trailer", + "description": "This playlist provides an introduction to developing creative coding projects with machine learning. The theory and application of machine learning algorithms is demonstrated in JavaScript using the p5.js and ml5.js libraries.\n\nLearning Objectives:\n\nDevelop an intuition for and high level understanding of core machine learning concepts and algorithms, including supervised learning, unsupervised learning, reinforcement learning, transfer learning, classification, and regression.\n\nBe able to apply machine learning algorithms to real-time interaction in media art projects using pre-trained models and β€œtransfer learning” in JavaScript and related tools.\n\nLearn how to collect a custom dataset to train a machine learning model and Understand how to use a machine learning model to generate media: words, sound, and images.", + "videoNumber": "0.0", + "videoId": "26uABexmOX4", + "date": "2022-03-03", + "languages": ["p5.js", "ml5.js"], + "topics": ["machine learning (ML)", "ml5.js"], + "canContribute": true, + "timestamps": [], + "groupLinks": [ + { + "title": "References", + "links": [ + { + "icon": "πŸ’»", + "title": "ml5.js", + "url": "https://ml5js.org/", + "description": "Reference material for the ml5 library." + }, + { + "icon": "πŸ“•", + "title": "Intelligence and Learning Class", + "url": "https://github.com/nature-of-code/NOC-S17-2-Intelligence-Learning/tree/master/week3-classification-regression", + "description": "Nature of Code github page with resources about intelligence learning" + } + ] + }, + { + "title": "Videos", + "links": [ + { + "icon": "πŸš‚", + "title": "Code! Programming with p5.js", + "url": "https://www.youtube.com/playlist?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA", + "description": "Learn all the basics of code (variables, conditionals, loops, objects, arrays) in JavaScript with p5.js!." + } + ] + } + ], + "credits": [ + { "title": "Editing", "name": "Mathieu Blanchette" }, + { "title": "Animations", "name": "Jason Heglund" } + ] +} diff --git a/content/videos/ml5/0-introduction/1-introduction/index.json b/content/videos/ml5/0-introduction/1-introduction/index.json index da5078868..dd5edc5d4 100644 --- a/content/videos/ml5/0-introduction/1-introduction/index.json +++ b/content/videos/ml5/0-introduction/1-introduction/index.json @@ -1,5 +1,5 @@ { - "title": "A Beginner's Guide to Machine Learning with ml5.js", + "title": "Introduction", "description": "Welcome to \"A Beginner's Guide to Machine Learning in JavaScript\"! In this series, I'll teach the concepts behind machine learning using the ml5.js library.", "videoNumber": "0.1", "videoId": "jmznx0Q1fP0", @@ -10,14 +10,14 @@ "timestamps": [ { "time": "0:00", "title": "Introduction" }, { "time": "2:00", "title": "What is machine learning?" }, - { "time": "6:00", "title": "What is ML5?" }, + { "time": "6:00", "title": "What is ml5.js?" }, { "time": "11:45", "title": "Tensorflow" }, { "time": "14:30", "title": "Neural networks, pretrained models, and data sets" }, - { "time": "16:50", "title": "MobilNet" }, - { "time": "18:06", "title": "ML5.org" }, + { "time": "16:50", "title": "MobileNet" }, + { "time": "18:06", "title": "The ml5.js website" }, { "time": "20:34", "title": "Attributions" } ], "groupLinks": [ diff --git a/content/videos/ml5/1-classification/3-object-detection/index.json b/content/videos/ml5/1-classification/3-object-detection/index.json index e7fb43100..ed5470b8b 100644 --- a/content/videos/ml5/1-classification/3-object-detection/index.json +++ b/content/videos/ml5/1-classification/3-object-detection/index.json @@ -111,7 +111,7 @@ { "icon": "πŸš‚", "title": "Pose Estimation with PoseNet", - "url": "/tracks/ml5js-beginners-guide/ml5/7-posenet/pose-detection", + "url": "/tracks/ml5js-beginners-guide/ml5/7-bodypose/pose-detection", "description": "In this video I cover pose estimation: finding the keypoints of person's pose and skeleton using the pre-trained machine learning model PoseNet." }, { diff --git a/content/videos/ml5/7-posenet/2-pose-classifier/index.json b/content/videos/ml5/7-bodypose/2-pose-classifier/index.json similarity index 93% rename from content/videos/ml5/7-posenet/2-pose-classifier/index.json rename to content/videos/ml5/7-bodypose/2-pose-classifier/index.json index 9a1e09962..7af4173db 100644 --- a/content/videos/ml5/7-posenet/2-pose-classifier/index.json +++ b/content/videos/ml5/7-bodypose/2-pose-classifier/index.json @@ -60,9 +60,9 @@ "links": [ { "icon": "πŸš‚", - "title": "ml5.js Pose Estimation with PoseNet", - "url": "/tracks/ml5js-beginners-guide/ml5/7-posenet/pose-detection", - "description": "In this video I cover pose estimation: finding the keypoints of person's pose and skeleton using the pre-trained machine learning model PoseNet (in JavaScript with p5.js and ml5.js)." + "title": "ml5.js Pose Estimation", + "url": "/tracks/ml5js-beginners-guide/ml5/7-bodypose/pose-detection", + "description": "In this video I cover pose estimation: finding the keypoints of person's pose and skeleton using BodyPose (in JavaScript with p5.js and ml5.js)." }, { "icon": "πŸš‚", diff --git a/content/videos/ml5/7-posenet/3-pose-regression/index.json b/content/videos/ml5/7-bodypose/3-pose-regression/index.json similarity index 92% rename from content/videos/ml5/7-posenet/3-pose-regression/index.json rename to content/videos/ml5/7-bodypose/3-pose-regression/index.json index fff2c7858..c3e098421 100644 --- a/content/videos/ml5/7-posenet/3-pose-regression/index.json +++ b/content/videos/ml5/7-bodypose/3-pose-regression/index.json @@ -51,9 +51,9 @@ "links": [ { "icon": "πŸš‚", - "title": "ml5.js Pose Estimation with PoseNet", - "url": "/tracks/ml5js-beginners-guide/ml5/7-posenet/pose-detection", - "description": "In this video I cover pose estimation: finding the keypoints of person's pose and skeleton using the pre-trained machine learning model PoseNet (in JavaScript with p5.js and ml5.js)." + "title": "ml5.js Pose Estimation", + "url": "/tracks/ml5js-beginners-guide/ml5/7-bodypose/pose-detection", + "description": "In this video I cover pose estimation: finding the keypoints of person's pose and skeleton using BodyPose (in JavaScript with p5.js and ml5.js)." }, { "icon": "πŸš‚", diff --git a/content/videos/ml5/7-posenet/pose-detection/images/blazePose.jpg b/content/videos/ml5/7-bodypose/pose-detection/images/blazePose.jpg similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/images/blazePose.jpg rename to content/videos/ml5/7-bodypose/pose-detection/images/blazePose.jpg diff --git a/content/videos/ml5/7-posenet/pose-detection/images/hat.jpg b/content/videos/ml5/7-bodypose/pose-detection/images/hat.jpg similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/images/hat.jpg rename to content/videos/ml5/7-bodypose/pose-detection/images/hat.jpg diff --git a/content/videos/ml5/7-posenet/pose-detection/images/image.jpg b/content/videos/ml5/7-bodypose/pose-detection/images/image.jpg similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/images/image.jpg rename to content/videos/ml5/7-bodypose/pose-detection/images/image.jpg diff --git a/content/videos/ml5/7-posenet/pose-detection/images/lerp.jpg b/content/videos/ml5/7-bodypose/pose-detection/images/lerp.jpg similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/images/lerp.jpg rename to content/videos/ml5/7-bodypose/pose-detection/images/lerp.jpg diff --git a/content/videos/ml5/7-posenet/pose-detection/images/nose.jpg b/content/videos/ml5/7-bodypose/pose-detection/images/nose.jpg similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/images/nose.jpg rename to content/videos/ml5/7-bodypose/pose-detection/images/nose.jpg diff --git a/content/videos/ml5/7-posenet/pose-detection/images/parts.jpg b/content/videos/ml5/7-bodypose/pose-detection/images/parts.jpg similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/images/parts.jpg rename to content/videos/ml5/7-bodypose/pose-detection/images/parts.jpg diff --git a/content/videos/ml5/7-bodypose/pose-detection/index.jpg b/content/videos/ml5/7-bodypose/pose-detection/index.jpg new file mode 100644 index 000000000..71466f4a0 Binary files /dev/null and b/content/videos/ml5/7-bodypose/pose-detection/index.jpg differ diff --git a/content/videos/ml5/7-posenet/pose-detection/index.json b/content/videos/ml5/7-bodypose/pose-detection/index.json similarity index 83% rename from content/videos/ml5/7-posenet/pose-detection/index.json rename to content/videos/ml5/7-bodypose/pose-detection/index.json index df05856ca..d3628c595 100644 --- a/content/videos/ml5/7-posenet/pose-detection/index.json +++ b/content/videos/ml5/7-bodypose/pose-detection/index.json @@ -2,19 +2,20 @@ "title": "Pose Detection", "description": "Strike a pose! In this video, I explore the BodyPose model in ml5.js with MoveNet and BlazePose, showing how to track body keypoints and visualize 'skeleton' connections using live video.", "videoId": "T99fNXTUUaQ", + "nebulaSlug": "codingtrain-pose-detection-with-ml5js", "date": "2024-10-16", "languages": ["ml5.js", "JavaScript"], "topics": ["machine learning (ML)", "webcam", "pose detection", "ml5.js", "MoveNet", "BlazePose"], "canContribute": true, "timestamps": [ { "time": "0:00", "title": "Introduction" }, - { "time": "0:45", "title": "BodyPose model" }, + { "time": "0:45", "title": "What is the BodyPose model?" }, { "time": "3:28", "title": "Coco Dataset" }, - { "time": "4:04", "title": "Projects that use pose detection" }, + { "time": "4:04", "title": "Creative Inspiration" }, { "time": "5:49", "title": "Start coding" }, - { "time": "8:58", "title": "Keypoint index values" }, - { "time": "15:39", "title": "Connections between the keypoints" }, - { "time": "17:57", "title": "Adding p5.distance()" }, + { "time": "8:58", "title": "Working with specific keypoints" }, + { "time": "15:39", "title": "Skeleton connections between the keypoints" }, + { "time": "17:57", "title": "Using dist() function" }, { "time": "19:39", "title": "BlazePose" }, { "time": "20:56", "title": "Outro" } ], @@ -68,9 +69,9 @@ }, { "icon": "🏫", - "title": "Introduction to Machine Learning for the Arts", + "title": "Introduction to ML for the Arts", "url": "https://github.com/ml5js/Intro-ML-Arts-IMA-F24", - "description": "Syllabus for ITP IMA course on Machine Learning." + "description": "Syllabus for ITP IMA course on Machine Learning for the Arts." }, { "icon": "πŸ’»", @@ -86,15 +87,15 @@ }, { "icon": "πŸ’»", - "title": "Next-Generation Pose Detection with MoveNet and TensorFlow.js", + "title": "Next-Generation Pose Detection", "url": "https://blog.tensorflow.org/2021/05/next-generation-pose-detection-with-movenet-and-tensorflowjs.html", - "description": "Blog post by Ronny Votel and Na Li introducing MoveNet." + "description": "Post about MoveNet and TensorFlow.js by Ronny Votel and Na Li." }, { "icon": "πŸ“„", - "title": "BlazePose: On-device Real-time Body Pose tracking", + "title": "BlazePose Paper", "url": "https://arxiv.org/pdf/2006.10204", - "description": "Academic paper introducing the BlazePose model." + "description": "On-device Real-time Body Pose tracking." }, { "icon": "πŸ’ƒ", @@ -115,9 +116,9 @@ "links": [ { "icon": "πŸŽ₯", - "title": "Processing / p5.js Tutorial: What is lerp? (Linear Interpolation)", + "title": "What is lerp? (Linear Interpolation)", "url": "https://www.youtube.com/watch?v=8uLVnM36XUc", - "description": "My tutorial on the lerp function." + "description": "Demonstrates lerp() in Processing and p5.js" } ] } diff --git a/content/videos/ml5/7-posenet/pose-detection/showcase/contribution1.json b/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution1.json similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/showcase/contribution1.json rename to content/videos/ml5/7-bodypose/pose-detection/showcase/contribution1.json diff --git a/content/videos/ml5/7-posenet/pose-detection/showcase/contribution2.json b/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution2.json similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/showcase/contribution2.json rename to content/videos/ml5/7-bodypose/pose-detection/showcase/contribution2.json diff --git a/content/videos/ml5/7-posenet/pose-detection/showcase/contribution3.jpg b/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution3.jpg similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/showcase/contribution3.jpg rename to content/videos/ml5/7-bodypose/pose-detection/showcase/contribution3.jpg diff --git a/content/videos/ml5/7-posenet/pose-detection/showcase/contribution3.json b/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution3.json similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/showcase/contribution3.json rename to content/videos/ml5/7-bodypose/pose-detection/showcase/contribution3.json diff --git a/content/videos/ml5/7-posenet/pose-detection/showcase/contribution4.json b/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution4.json similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/showcase/contribution4.json rename to content/videos/ml5/7-bodypose/pose-detection/showcase/contribution4.json diff --git a/content/videos/ml5/7-posenet/pose-detection/showcase/contribution5.json b/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution5.json similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/showcase/contribution5.json rename to content/videos/ml5/7-bodypose/pose-detection/showcase/contribution5.json diff --git a/content/videos/ml5/7-posenet/pose-detection/showcase/contribution6.jpg b/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution6.jpg similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/showcase/contribution6.jpg rename to content/videos/ml5/7-bodypose/pose-detection/showcase/contribution6.jpg diff --git a/content/videos/ml5/7-posenet/pose-detection/showcase/contribution6.json b/content/videos/ml5/7-bodypose/pose-detection/showcase/contribution6.json similarity index 100% rename from content/videos/ml5/7-posenet/pose-detection/showcase/contribution6.json rename to content/videos/ml5/7-bodypose/pose-detection/showcase/contribution6.json diff --git a/content/videos/ml5/8-convolutional-neural-network/1-pixels-as-input/index.json b/content/videos/ml5/8-convolutional-neural-network/1-pixels-as-input/index.json index 6063584eb..e576a57cb 100644 --- a/content/videos/ml5/8-convolutional-neural-network/1-pixels-as-input/index.json +++ b/content/videos/ml5/8-convolutional-neural-network/1-pixels-as-input/index.json @@ -113,7 +113,7 @@ { "icon": "πŸš‚", "title": "Pose Regression with PoseNet and ml5.neuralNetwork()", - "url": "/tracks/ml5js-beginners-guide/ml5/7-posenet/3-pose-regression", + "url": "/tracks/ml5js-beginners-guide/ml5/7-bodypose/3-pose-regression", "description": "This tutorial builds on the previous video combining PoseNet and ml5.neuralNetwork(). Once again, the output of the pre-trained model (the \"pose\" itself) is the input to an ml5.js neural network. However, this time the final output is a regression (3 continuous values) instead of classification." } ] diff --git a/static/_redirects b/static/_redirects index ce166fbef..b71494c66 100644 --- a/static/_redirects +++ b/static/_redirects @@ -56,7 +56,7 @@ /2d-array /tracks/p5-tips-and-tricks/more-p5/2d-arrays 302! /quadtree /challenges/98-quadtree 302! /neural-network /tracks/neural-networks 302! -/pose-classifier /tracks/ml5js-beginners-guide/ml5/7-posenet/2-pose-classifier 302! +/pose-classifier /tracks/ml5js-beginners-guide/ml5/7-bodypose/2-pose-classifier 302! /raycasting /challenges/145-ray-casting-2d 302! /p5js /tracks/code-programming-with-p5-js 302! /processing /tracks/learning-processing 302!