使用 p5.js、TensorFlow 和 MobileNet 进行随机图像和分类

问题描述

我正在向社区寻求帮助,因为我被我的代码困住了。 对于一个项目,我需要使用 MobileNet 和 TensorFlow 在 P5.js 上创建一个图像分类程序。

我想知道如何创建一个按钮随机显示一个图像(在我下载的 3 个中),图像下方带有 MobileNet 分类和我提供的信息(如“危险”)?

Result wanted

这是我已经完成的。谢谢:)


    var model_mobilenet;
    var loaded;
    
    
    function setup() {
      createCanvas(400,300);
      mobilenet.load().then(modelLoaded);
    
      military = loadImage('military');
      rifle = loadImage('rifle');
      revolver = loadImage('revolver');
      
      createButton("Take a picture").mousepressed(btnClicked);
    }
    
    function classifyDone(res) {
      print(res);
      if (res[0].className == "rifle")
      {
      print("Danger");
      createP("Danger");
      }
      
      else if (res[0].className == "revolver,six-gun,six-shooter")
      {
      print("Danger");
      createP("Danger");
      }
      else if (res[0].className == "military uniform")
      {
        print("Not sure about this one");
        createP("Not sure about this one");
      }
      else {
        print("Evrything is okay");
        createP("Everything is okay");
      }
    }
    
    function modelLoaded(net) {
      model_mobilenet = net;
      loaded = true;
      print("Model loaded");
    }
    
    function btnClicked() {
      
    image(military,400,300);
      
    if (loaded == true)
    {
    model_mobilenet.classify(military.elt).then(classifyDone);
      }
    }

解决方法

    var model_mobilenet;
var loaded;


function setup() {
  createCanvas(400,300);
  mobilenet.load().then(modelLoaded);

  revolver = loadImage('revolver.jpg');
  baseball = loadImage('baseball.jpg');
  rifle = loadImage('rifle.jpg');

  
  createButton("DANGER OR NOT?").mousePressed(btnClicked);
}

function classifyDone(res) {
  print(res);
  
  createP("Model detected a <b>" + res[0].className + "</b> with a confidence of <b>" + res[0].probability + "</b>");
  if (res[0].className =="assault rifle,assault gun")
  
  { createP("<b>Danger,find a shelter,quickly !</b>");}
  
  else if (res[0].className == "revolver,six-gun,six-shooter")
 
  { createP("<b>Danger,quickly !</b>");}

  else {   createP("Everything is okay");  }
}

/* if ($(".revolver,six-shooter").css('font-color: red')){
$(".assault rifle,assault gun").css('font-color: green'); */

function modelLoaded(net) {
  model_mobilenet = net;
  loaded = true;
  print("Model loaded");
}

function btnClicked() {
 
let randomNumber = Math.random()
if(randomNumber<0.3)
{
  image(baseball,400,300);
model_mobilenet.classify(baseball.canvas).then(classifyDone);
  }
else if (randomNumber<0.6)
{
    image(rifle,300);
model_mobilenet.classify(rifle.canvas).then(classifyDone);
  }
  else 
{
    image(revolver,300); 
model_mobilenet.classify(revolver.canvas).then(classifyDone);
  }
}

这是我得到的结果。它不是很好,但如果多一点 CSS,它可以令人满意。请随时向我询问更多详情。这是result

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...