xxxxxxxxxx
50
// PredictCamera (c) 2021 kouichi.matsuda@gmail.com
let clf; // 分類器
let camera; // カメラ
let label, conf; // ラベル、確信度
function setup() {
camera = createCapture(VIDEO);
createCanvas(200, 200);
camera.hide();
let options = {
task: "imageClassification", // 画像分類
};
clf = ml5.neuralNetwork(options); // NNの作成
let model = {
model: "model.json",
metadata: "model_meta.json",
weights: "model.weights.bin",
};
clf.load(model, classifyCamera); // モデルを読み込む
}
function classifyCamera() {
// camera.loadPixels();
let img = camera.get(0, 0, width, height); // 画像を取り出す
img.resize(64, 64); // 訓練に使ったサイズに
img.filter(THRESHOLD, 0.5);
clf.classify({image: img}, gotResults);
}
function gotResults(err, r) { // 結果の表示
if (err) {
print(err);
return;
}
label = r[0].label; // ラベル
conf = r[0].confidence; // 確信度
classifyCamera();
}
function draw(){
image(camera, 0, 0);
fill(0, 0, 255, 128); // 半分透明な黒
noStroke();
rect(0, 0, width, 50); // 四角形の描画
fill(255);
text("推論結果: " + label, 10, 20);
text("確信度: " + round(conf, 3), 10, 40);
}