<!DOCTYPE html>
<html>
<head>
<title>ml5.js 연습</title>
<meta charset="utf-8">
<script src="https://cdn.jsdelivr.net/npm/p5@1/lib/p5.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/p5@1/lib/addons/p5.sound.min.js"></script>
<script src="https://unpkg.com/ml5@latest/dist/ml5.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/IDMNYU/p5.js-speech@0.0.3/lib/p5.speech.js"></script>
</head>
<body>
<h1>KNN Classification</h1>
<script src="sketch.js"></script>
</body>
</html>
let features;
let video;
function setup() {
createCanvas(640, 480);
video = createCapture(VIDEO);
video.hide();
features = ml5.featureExtractor('MobileNet', modelReady);
}
function modelReady() {
console.log('Model is ready!');
}
function mousePressed() {
let logits = features.infer(video);
console.log(logits); // TensorFlow.js
// logits.print();
// console.log(logits.dataSync());
}
function draw() {
image(video, 0, 0);
}
let features;
let video;
let knn;
function setup() {
createCanvas(640, 480);
video = createCapture(VIDEO);
video.hide();
features = ml5.featureExtractor('MobileNet', modelReady);
knn = ml5.KNNClassifier();
}
function modelReady() {
console.log('Model is ready!');
}
function keyPressed() {
let logits = features.infer(video);
// build your own database for 'left' and 'right'
if (key == 'l') {
knn.addExample(logits, 'left');
} else if (key == 'r') {
knn.addExample(logits, 'right');
}
}
function draw() {
image(video, 0, 0);
}
let features;
let video;
let knn;
function setup() {
createCanvas(640, 480);
video = createCapture(VIDEO);
video.size(640, 480);
video.hide();
features = ml5.featureExtractor('MobileNet', modelReady);
knn = ml5.KNNClassifier();
}
function modelReady() {
console.log('Model is ready!');
}
function keyPressed() {
let logits = features.infer(video);
// build your own database for 'left' and 'right'
if (key == 'l') {
knn.addExample(logits, 'left');
console.log('left');
} else if (key == 'r') {
knn.addExample(logits, 'right');
console.log('right');
}
}
function mousePressed() {
if (knn.getNumLabels() > 0) {
let logits = features.infer(video);
knn.classify(logits, gotResults); // callback
}
}
function gotResults(error, results) {
if (error) {
console.error(error);
} else {
console.log(results);
}
}
function draw() {
image(video, 0, 0);
}
let features;
let video;
let knn;
let labelP;
let ready = false;
function setup() {
createCanvas(640, 480);
video = createCapture(VIDEO);
video.hide();
features = ml5.featureExtractor('MobileNet', modelReady);
knn = ml5.KNNClassifier();
labelP = createP('We need training data');
labelP.style('font-size', '32pt');
}
function modelReady() {
console.log('Model is ready!');
}
function keyPressed() {
let logits = features.infer(video);
if (key == 'l') {
knn.addExample(logits, 'left');
console.log('left');
} else if (key == 'r') {
knn.addExample(logits, 'right');
console.log('right');
} else if (key == 'u') {
knn.addExample(logits, 'up');
console.log('up');
} else if (key == 'd') {
knn.addExample(logits, 'down');
console.log('down');
}
}
function goClassify() {
let logits = features.infer(video);
// anonymous function in JavaScript
knn.classify(logits, function (error, results) {
if (error) {
console.error(error);
} else {
labelP.html(results.label);
goClassify();
}
});
}
function draw() {
image(video, 0, 0);
if (!ready && knn.getNumLabels() > 0) {
ready = true;
goClassify();
}
}
let features;
let video;
let knn;
let labelP;
let ready = false;
function setup() {
createCanvas(640, 480);
video = createCapture(VIDEO);
video.hide();
features = ml5.featureExtractor('MobileNet', modelReady);
knn = ml5.KNNClassifier();
labelP = createP('We need training data');
labelP.style('font-size', '32pt');
}
function modelReady() {
console.log('Model is ready!');
}
function keyPressed() {
let logits = features.infer(video);
if (key == 'l') {
knn.addExample(logits, 'left');
console.log('left');
} else if (key == 'r') {
knn.addExample(logits, 'right');
console.log('right');
} else if (key == 'u') {
knn.addExample(logits, 'up');
console.log('up');
} else if (key == 'd') {
knn.addExample(logits, 'down');
console.log('down');
} else if (key == 's') {
knn.save('model.json'); // see Download folder
}
}
function goClassify() {
let logits = features.infer(video);
knn.classify(logits, function (error, results) {
if (error) {
console.error(error);
} else {
labelP.html(results.label);
goClassify();
}
});
}
function draw() {
image(video, 0, 0);
if (!ready && knn.getNumLabels() > 0) {
ready = true;
goClassify();
}
}
let features;
let video;
let knn;
let labelP;
let ready = false;
let label = 'nothing';
function setup() {
createCanvas(640, 480);
video = createCapture(VIDEO);
video.hide();
features = ml5.featureExtractor('MobileNet', modelReady);
labelP = createP('We need training data');
labelP.style('font-size', '32pt');
}
function modelReady() {
console.log('Model is ready!');
knn = ml5.KNNClassifier();
knn.load('model.json', function() {
console.log('model.json is loaded');
goClassify();
});
}
function keyPressed() {
let logits = features.infer(video);
if (key == 'l') {
knn.addExample(logits, 'left');
console.log('left');
} else if (key == 'r') {
knn.addExample(logits, 'right');
console.log('right');
} else if (key == 'u') {
knn.addExample(logits, 'up');
console.log('up');
} else if (key == 'd') {
knn.addExample(logits, 'down');
console.log('down');
} else if (key == 's') {
knn.save('model.json');
}
}
function goClassify() {
let logits = features.infer(video);
knn.classify(logits, function (error, results) {
if (error) {
console.error(error);
} else {
if (results.label == '0') {
label = 'left';
} else if (results.label == '1') {
label = 'right';
} else if (results.label == '2') {
label = 'up';
} else if (results.label == '3') {
label = 'down';
}
labelP.html(label);
goClassify();
}
});
}
function draw() {
image(video, 0, 0);
}
let features;
let video;
let knn;
let labelP;
let ready = false;
let label = '';
let x;
let y;
function setup() {
createCanvas(640, 480);
video = createCapture(VIDEO);
video.style('transform', 'scale(-1,1)'); // mirror
// video.hide();
features = ml5.featureExtractor('MobileNet', modelReady);
labelP = createP('We need training data');
labelP.style('font-size', '32pt');
x = width / 2;
y = height / 2;
}
function modelReady() {
console.log('Model is ready!');
knn = ml5.KNNClassifier();
knn.load('model.json', function() {
console.log('model.json is loaded');
goClassify();
});
}
function keyPressed() {
let logits = features.infer(video);
if (key == 'l') {
knn.addExample(logits, 'left');
console.log('left');
} else if (key == 'r') {
knn.addExample(logits, 'right');
console.log('right');
} else if (key == 'u') {
knn.addExample(logits, 'up');
console.log('up');
} else if (key == 'd') {
knn.addExample(logits, 'down');
console.log('down');
} else if (key == ' ') { // Space
knn.addExample(logits, 'stay'); // we can add 'stay' data in real-time
console.log('stay');
} else if (key == 's') {
knn.save('model.json');
}
}
function goClassify() {
let logits = features.infer(video);
knn.classify(logits, function (error, results) {
if (error) {
console.error(error);
} else {
if (results.label == '0') {
label = 'left';
} else if (results.label == '1') {
label = 'right';
} else if (results.label == '2') {
label = 'up';
} else if (results.label == '3') {
label = 'down';
}
labelP.html(label);
goClassify();
}
});
}
function draw() {
background(0);
fill(255);
circle(x, y, 36);
if (label == 'left') {
x--;
} else if (label == 'right') {
x++;
} else if (label == 'up') {
y--;
} else if (label == 'down') {
y++;
}
x = constrain(x, 0, width);
y = constrain(y, 0, height);
}