Tensorflow дождитесь полной загрузки cocossd

Я использую модель cocorSsd от tenorflow. Однако я хочу иметь возможность просматривать несколько изображений и динамически распечатывать результаты на странице, поэтому я решил использовать PHP и просто повторить весь сценарий. Это работает безупречно, за исключением одной вещи. команда cocoSsd.load(), кажется, не завершается до тех пор, пока для каждого цикла (проходящего по всем изображениям) не будет получено последнее изображение. это приводит к тому, что все результаты будут неверными. мой код следующий

<?php
         echo "<script src='https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest/dist/tf.min.js'></script>";
          echo "<script src='https://cdn.jsdelivr.net/npm/@tensorflow-models/coco-ssd@latest'></script>";    
 echo "<script> cocoSsd.load(); </script>";
 sleep(5);
$a = 0;
$files = scandir('/var/www/html/pics');
echo "'$files[2]'";
    foreach($files as $file) {
        if($file !== "." && $file !== "..") {
 echo "<img id='$a' src=/pics/$file>";
 echo "<script> cocoSsd.load(); </script>";
          echo  "<script>";
        echo "console.log('$a');";
        echo "var imag = document.getElementById('$a');";
         echo "cocoSsd.load().then(model => {";
        sleep(6);        
                             echo "model.detect(imag).then(predictions => {";
           echo "predictions.forEach(function (prediction){";
        echo "document.write(prediction.class+'<br>');";
           echo "console.log(prediction.class);";
        echo "console.log('$file');";
          echo "});";
       echo "});";
 echo "});";
echo "</script>";

  $a++;
  }  
      }
?>

это производит только в консоли

person
'one of the three images'.jpeg

только последнее изображение состоит из людей, поэтому я полагаю, что модель не загружена, пока не обработано последнее изображение, что приводит к тому, что единственными результатами в списке являются люди.

0 ответов

Другие вопросы по тегам