|
animatie met 3 getrainde regressiemodellen. terug naar de inleiding
ga voor het trainen van de modellen naar "transfer learing met regressie"
ga voor de code van het poppetje naar "Poppetje in een functie"
let x, y , n;
let featureExtractor;
let predictor;
let video;
let preds = 0;
let model ='er is nog geen model geladen';
function setup() {
createCanvas(1080, 410);
x = width/2;
y = height/2;
n = height/18;
video = createCapture(VIDEO);
video.hide();
featureExtractor = ml5.featureExtractor('MobileNet', modelGeladen);
predictor = featureExtractor.regression(video, videoReady);
model1Knop = createButton('model 1 laden');
model1Knop.mousePressed(function() {
predictor.load('model1/model.json', voorspellen);
model = 'model 1 is geladen';
console.log('model 1 is geladen')});
model2Knop = createButton('model 2 laden');
model2Knop.mousePressed(function() {
predictor.load('model2/model.json', voorspellen);
model = 'model 2 is geladen';
console.log('model 2 is geladen')});
model3Knop = createButton('model 3 laden');
model3Knop.mousePressed(function() {
predictor.load('model3/model.json', voorspellen);
model = 'model 3 is geladen';
console.log('model 3 is geladen')});
}
function modelGeladen(){
console.log('het MobileNet model is geladen');
}
function voorspellen() {
predictor.predict(toonResult);
}
function videoReady() {
console.log('De video is klaar');
console.log('ml5 version:', ml5.version);
}
function toonResult(error, result) {
if (error){
console.error(error);
} else {
predictor.predict(toonResult);
preds = result.value;
preds = preds + 1;
}
}
function draw(){
background('#E6FBFF');
image(video,0,0,540,340);
fill(0);
textSize(20);
text("gekoppelde getal + 1 = ",10, height-40);
preds = round(preds, 2);
text(preds,220, height-40);
text(model,10, height-15);
fill(255, 255, 0,100);
strokeWeight(2);
ellipse(x*preds, y-4*n, 2*n, 2*n); //hoofd
rect(x*preds-n, y-3*n, 2*n, 3*n); //lichaam
rect(x*preds-2*n, y-3*n, n, 3*n); //arm li
rect(x*preds+n, y-3*n, n, 3*n); //arm re
rect(x*preds-n, y+2*n, n/2, 2*n); //li been
rect(x*preds+n/2, y+2*n, n/2, 2*n); //Re been
if (preds > 1.5) {fill(255,0,0)}
quad(x*preds-2*n, y+2*n, x*preds-n, y, x*preds+n, y, x*preds+2*n, y+2*n); //jurk
}