Как убрать задержку на камере с реактивным и тензорным потоком. js - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь получить прогнозируемые данные из tenorflow. js но когда это происходит, экран камеры задерживается, как можно устранить эту задержку? или нужно перенести тензор потока лайт? Я протестировал 3 устройства (LG v20, iphone 8, Galaxy S10). все устройства получают одинаковый результат.

'''
const TensorCamera = cameraWithTensors(Camera);

const inputTensorWidth = 224;
const inputTensorHeight = 224;
const AUTORENDER = true;

const App = () => {
  const [hasPermission, setHasPermission] = useState(false);
  const [vector_model, setVector_model] = useState(null);
  let rafId;

  const handleCameraStream = async (images, PaymentRequestUpdateEvent, gl) => {
    const loop = async () => {
      console.log(tf.memory());
      const imgTensor=tf.tidy(()=>{
        let imgTensor = images.next().value;
        imgTensor = tf.cast(imgTensor, "float32");
        imgTensor = imgTensor.expandDims(0);
        return imgTensor;
      })

      const sim =await(await vector_model).predict({ "images": imgTensor },{batchSize:5});

      tf.dispose(imgTensor);
      tf.dispose(sim);
      rafId = requestAnimationFrame(loop);  
      console.log(tf.memory());

    }
    loop();
  }

  useEffect(() => {
    const preload = async () => {
      await tf.ready();
      const model = await tf.loadGraphModel("https://tfhub.dev/google/tfjs-model/imagenet/mobilenet_v2_140_224/feature_vector/3/default/1", { fromTFHub: true });
      setVector_model(model);
      const { status } = await Camera.requestPermissionsAsync();
      setHasPermission(status);
    }

    preload();
  }, [])


  useEffect(() => {
    return cancelAnimationFrame(rafId);
  }, [rafId]);
...
...