Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

121
Vistas
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
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda