xxxxxxxxxx
84
let NNmodel
let targetLabel='1'
let state='collection'
function setup() {
createCanvas(400, 400);
let options ={
inputs: ["x","y"],
outputs: ['label'],
task: 'classification',
// debug: 'true'
}
NNmodel=ml5.neuralNetwork(options)
background(245)
}
function keyPressed(){
targetLabel=key.toUpperCase()
if(key=='t'){
state='training'
console.log("Starting Training...")
NNmodel.normalizeData()
let options={
epochs: 1000
}
NNmodel.train(options, whileTraining, finishedTraining)
}
}
function mousePressed(){
let inputs={
x:mouseX,
y:mouseY
}
if (state=='collection'){
let target={
label:targetLabel
}
NNmodel.addData(inputs,target)
stroke(255,0,0)
fill(255,0,0,100)
ellipse(mouseX,mouseY,20)
fill(0)
noStroke()
textAlign(CENTER,CENTER)
text(targetLabel,mouseX,mouseY)
}else if(state=='prediction'){
NNmodel.classify(inputs,gotResults)
}
}
function whileTraining(epoch, loss){
console.log("Training..","Epoch:",epoch,"Loss:",loss)
background(245)
textSize(20)
text(round((epoch+1)/10),180,200)
text("/100",220,200)
}
function finishedTraining(){
background(245)
state='prediction'
console.log('Finished Training')
}
function gotResults(error,results){
if (error){
console.error(error)
return;
}
console.log(results)
stroke(0,200,255)
fill(0,200,255,100)
ellipse(mouseX,mouseY,20)
fill(0)
noStroke()
textAlign(CENTER,CENTER)
text(results[0].label,mouseX,mouseY)
}