Идентификация объектов YOLO более быстрая и последовательная

Используя YOLO и p5.js, я пытаюсь идентифицировать объекты с помощью своей веб-камеры. Несмотря на то, что я дал разрешение на доступ к веб-камере, следующие проблемы. Есть ли способ улучшить идентификацию объектов быстрее и стабильнее?

  1. Однажды идентифицированный зеленый прямоугольник не остается постоянно. Мне нужно немного подвигаться для идентификации объекта.
  2. У меня есть test.mp4 видео, сохраненное локально, как мы можем сделать идентификацию объекта на сохраненном видео.

Ниже приведен мой код:

let video; //Variable for video stream
let yolo;  //Initializing model method with YOLO.
let status; //Status check to determine whether the model has been loaded
let objects = []; //List of objects returned from YOLO

function setup() {
    createCanvas(800, 600); 
    video = createCapture(VIDEO); //Capturing live video from webcam
    video.size(400, 500);

    // Creating a YOLO method using ml5
    yolo = ml5.YOLO(video, startDetecting);

    // Hide the original video
    video.hide();
    status = select('#status');
}

function draw() {
    image(video, 0, 0, width, height); // Displaying image on a canvas
    for (let i = 0; i < objects.length; i++)  //Iterating through all objects
    {
        noStroke();
        fill(0, 255, 0); //Color of text
        text(objects[i].label, objects[i].x * width, objects[i].y * height - 5); //Displaying the label
        noFill();
        strokeWeight(4); 
        stroke(0, 255, 0); // Define rectangular outline here
        rect(objects[i].x * width, objects[i].y * height, objects[i].w * width, objects[i].h * height);
    }
}

function startDetecting() {
    status.html('Model loaded!'); //When the model is loaded
    detect(); //Calling detect method
}

function detect() {
    yolo.detect(function(err, results) {
        objects = results; //Storing results in object
        detect(); //Continuous detection
    });
}

person soccerway    schedule 08.09.2019    source источник


Ответы (1)


  1. Возможное решение — не использовать p5.js, а вместо этого использовать метод getUserMedia() для доступа к камере. Таким образом, вы можете отразить видеопоток на элемент изображения и обнаружить элемент изображения.

  2. Для сохраненного видеофайла вы можете использовать HTML Media Capture, чтобы принять видеофайл и поместить его в HTML: https://www.html5rocks.com/en/tutorials/getusermedia/intro/

После того, как вы это сделаете, вы можете сделать функцию, которая позволяет обнаруживать, когда вы нажимаете кнопку воспроизведения. Что-то вроде этого.

var video = document.getElementById('video');

video.addEventListener('play', function() { // block of code }, 16);
person xenofon pournaras    schedule 20.05.2020