Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

126
Views
El modelo simple tensorflow.js mata el rendimiento del navegador

Creé una aplicación para ejecutar un modelo tfjs simple en una cámara en vivo en el navegador. El problema es que mata por completo el rendimiento de la página web. La frecuencia de actualización es de alrededor de 1-2 fps y todo el navegador está retrasado (otras pestañas, películas de YouTube, incluso la interfaz gráfica de usuario del sistema). Lo que es extraño, después de la ejecución lenta del primer modelo (el modelo se compila para que sea comprensible), el tiempo de ejecución del modelo está en el rango de 1.5-4ms (medido como en el script a continuación). Así que no debería ser un problema para el navegador.

 if (navigator.mediaDevices.getUserMedia) { navigator.mediaDevices.getUserMedia({ video: true }) .then(function (stream) { video!.srcObject = stream; }) .catch(function (_) { console.log("Something went wrong!"); }); } let model = await tf.loadGraphModel('model/model.json') let video = document.querySelector("#videoElement") as HTMLVideoElement; async function do_inference() { let startTime = performance.now(); const image = tf.expandDims(tf.browser.fromPixels(video)); const image_fl32 = tf.cast(image, 'float32'); let final_pred = tf.tidy(() => { return model.predict(image_fl32) as tf.Tensor4D; }); image.dispose(); image_fl32.dispose(); final_pred.dispose(); let total = performance.now() - startTime; console.log(total); if (running) { requestAnimationFrame(do_inference); } }

Notas adicionales:

  • modelo es un modelo de convolución completa muy simple. Básicamente pocas capas de circunvoluciones de 3x3 y 5x5. También hice una prueba con un modelo aún más pequeño (2 capas) y tiene los mismos problemas.
  • el tfjs se ejecuta con el backend webgl , cambiarlo a wasm da como resultado un tiempo de ejecución mucho mayor (alrededor de 150-200 ms), pero el video es fluido. En la producción me gustaría usar un modelo aún más grande, por lo que no puedo aceptar tal tiempo de ejecución.
  • Probé en RTX 3060, Ryzen de 32 subprocesos, 128 GB de RAM. Así que la PC no debería ser un problema
  • Parece que no hay pérdidas de memoria en el lado de tfjs
  • el modelo se convierte del modelo tensorflow.keras.Model usando el método Model.save y luego usando tensorflowjs_converter@3.9 con --output_format=tfjs_graph_model

¿Estoy haciendo algo mal? ¿Hay alguna manera de hacer que el video sea fluido?

about 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!