Tensorflow дождитесь полной загрузки cocossd - PullRequest
0 голосов
/ 23 февраля 2019

Я использую модель 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

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

...