Ejecuto un modelo de detección de Keypoints usando tfjs y luego lo postproceso (todavía usando tfjs). Luego uso dataSync() en el tensor final para procesarlo usando JS. El dataSync() toma aproximadamente 4 veces más que la inferencia + el tiempo de procesamiento posterior. Supongo que sucede porque dataSync() extrae los datos de la GPU. ¿Hay alguna manera de hacer este proceso más rápido? Aquí está el código que estoy usando:
let output = model.execute(input_image_tensor); let kpts = postProcess(output); renderKpts(kpts.dataSync());Gracias.
dataSync() extrae datos de un tensor específico, por lo que depende del tamaño del tensor: ¿cuál es el valor de kpts.shape ?
no hay posibilidad si son solo algunos puntos clave que toman más de un milisegundo.
** actualizar **
acabo de intentar usar el backend webgl , es alrededor de ~ 5 microsegundos
const tensor = tf.randomNormal([1, 4, 3]); const time0 = performance.now(); const data = tensor.dataSync(); const time1 = performance.now(); console.log({ size: tensor.size, time: time1 - time0 }); { "size": 12, "time": 0.004999995231628418 }