Essayez avant OpenVINO's interactive_face_detection_demo En coopération, seule l'image du visage est extraite de la vidéo.
Il est supposé que le nom du fichier est ʻinput.mp4` et il se trouve dans le dossier de téléchargement de Windows 10.
interactive_face_detection_demo est une inférence pour toutes les images, il est donc pratique pour raccourcir le temps de traitement et lors de l'extraction avec ffmpeg décrit plus tard. Convertissez input.mp4` en 1 image par seconde.
cd /cygdrive/c/Users/${USER}/Downloads/
ls -l input.mp4
mkdir -p output/
ffmpeg -i input.mp4 -r 1 output/input_r1.mp4 -y
Presque le même que celui que j'ai essayé avant, mais j'obtiens la sortie brute avec l'option -r
.
echo 'source ${INTEL_OPENVINO_DIR}/bin/setupvars.sh
cd ${INTEL_CVSDK_DIR}/inference_engine/demos/
sed -i "s/*)/interactive_face_detection_demo)/g" CMakeLists.txt
./build_demos.sh
${INTEL_CVSDK_DIR}/deployment_tools/tools/model_downloader/downloader.py \
--name face-detection-adas-0001 \
--output_dir /content/model/ \
--precisions FP32
echo `date`: start detection
/root/omz_demos_build/intel64/Release/interactive_face_detection_demo \
-i /Downloads/output/input_r1.mp4 \
-m /content/model/intel/face-detection-adas-0001/FP32/face-detection-adas-0001.xml \
-no_show \
-no_wait \
-async \
-r > /Downloads/output/raw.txt
echo `date`: end detection' | docker run -v /c/Users/${USER}/Downloads:/Downloads -u root -i --rm openvino/ubuntu18_dev:2020.4
raw.txt
~~
[116,1] element, prob = 0.0198675 (-4,209)-(48,48)
[117,1] element, prob = 0.0198515 (444,146)-(68,68)
[0,1] element, prob = 0.999333 (222,115)-(205,205) WILL BE RENDERED!
[1,1] element, prob = 0.0601832 (405,393)-(94,94)
~~
Comme mentionné ci-dessus, dans raw.txt, les candidats sont affichés par ordre de proximité du visage pour chaque image, et les candidats de type visage (valeur d'évaluation de 0,5 ou plus) sont marqués avec SERA RENDU!
.
THRESHOLD=0.9
perl -ne '$i++ if m{^\[0,1\]}; printf "ffmpeg -loglevel error -ss ".($i-1)." -i input_r1.mp4 -vframes 1 -vf crop=$4:$5:$2:$3 %05d.jpg -y\n", ++$j if m{([0-9.]+)\s+\((\d+),(\d+)\)-\((\d+),(\d+)\)} and $1 > '${THRESHOLD} raw.txt > ffmpeg.sh
Puisque le nombre de [0,1]
est le nombre d'images, passez-le à l'option -ss
plus tard (puisqu'il s'agit d'une vidéo d'une image par seconde, vous pouvez passer le nombre d'images à l'option -ss
qui passe le nombre de secondes) .. Seuls ceux avec une valeur d'évaluation faciale élevée (SERA RENDU!
Est égal ou supérieur à 0,5, mais comme il s'agit d'un singe, ce qui précède est plus élevé), à partir des coordonnées crop .html # crop) Récupère les paramètres de filtre et affiche la commande ffmpeg (elle semble toujours carrée).
ffmpeg.sh
ffmpeg -loglevel error -ss 32 -i input_r1.mp4 -vframes 1 -vf crop=36:36:109:178 00001.jpg -y
ffmpeg -loglevel error -ss 36 -i input_r1.mp4 -vframes 1 -vf crop=34:34:107:177 00002.jpg -y
ffmpeg -loglevel error -ss 37 -i input_r1.mp4 -vframes 1 -vf crop=32:32:108:178 00003.jpg -y
ffmpeg -loglevel error -ss 39 -i input_r1.mp4 -vframes 1 -vf crop=32:32:109:179 00004.jpg -y
ffmpeg -loglevel error -ss 40 -i input_r1.mp4 -vframes 1 -vf crop=37:37:97:178 00005.jpg -y
ffmpeg -loglevel error -ss 41 -i input_r1.mp4 -vframes 1 -vf crop=34:34:46:176 00006.jpg -y
ffmpeg -loglevel error -ss 44 -i input_r1.mp4 -vframes 1 -vf crop=64:64:552:236 00007.jpg -y
Puisqu'un fichier contenant les commandes ci-dessus est créé,
sh ffmpeg.sh
En l'exécutant dans le shell, chaque image de visage est sortie.
mogrify -resize 128x128! *.jpg
Il semble pratique d'avoir la même taille avec ImageMagick mogrify.
Recommended Posts