tenorflow.js cocossd не работает в мобильном браузере - PullRequest
1 голос
/ 10 марта 2019

Я пытаюсь обнаружить объекты, используя модель cocossd tenorflow.

В случае изображения png / jpg: Мой скрипт работает нормально как в ноутбуке, так и в мобильном браузере.

Но в случае видеокадра камеры: Мой скрипт работает нормально в браузере ноутбука, ноон не работает в мобильном браузере.

Вот пример моего кода:

 var img = new Image();
img.src = "catDog.jpg";

//I have videoframe buffer
var ubuf = new Uint8Array(videoFrame.buffer(0).buffer);
var imgData = imageCtx.createImageData(imageDiv.width, imageDiv.height)
imgData.data.set(ubuf)

cocoSsd.load().then(model => {
    // detect objects in the image.
    model.detect(imgData).then(predictions => {
      console.log('Predictions: ';
      console.log(predictions);
    });
  });

приведенный выше код работает нормально в браузере ноутбука, но не в мобильном браузере.Хотя, если я использую img вместо imgData, скрипт отлично подойдет как для ноутбука, так и для мобильного телефона.В консоли нет ошибок, а отображаются только прогнозы печати: [] (обнаруженный объект = 0)

Обновление:

Я только что обнаружил некоторую разницу в данных изображения при его создании вбраузер мобильного или ноутбука.Я обновил приведенный выше код следующим образом:

var img = new Image();
//img.src = "catDog.jpg";

//I have videoframe buffer
var ubuf = new Uint8Array(videoFrame.buffer(0).buffer);
var imgData = imageCtx.createImageData(imageDiv.width, imageDiv.height)
imgData.data.set(ubuf)
imageCtx.putImageData(imgData,0,0)  // for debuging
img.src=cvImageDiv.toDataURL()

cocoSsd.load().then(model => {
    // detect objects in the image.
    model.detect(img).then(predictions => {
      console.log(img)
      console.log('Predictions: ';
      console.log(predictions);
    });
  });

И я нашел из консоли (img), формат img отличается в разных браузерах.и результат тот же: работа в браузере ноутбука, но не в мобильном браузере, но если я поставлю статический способ img, который создается в браузере ноутбука, он работает в обоих местах.

то есть

img.src = 'data:image/png;base64,iVBORw0KGgoAAAANS...AASUVORK5CYII='

// указанное выше значение было получено на ноутбуке, а для ввода жесткого кода в виде img.src прогнозирование хорошо работает как на ноутбуке, так и на мобильном устройстве.

Но

img.src = 'data:image/png;base64,iVBORw0KGgoAAAANS...AAAAAElFTkSuQmCC'  

// указанное выше значение былопроизводится в мобильном браузере и для ввода с жестким кодом, предсказание не работает ни в одном из ноутбуков / мобильных браузеров

...