] In Zusammenarbeit wird nur das Gesichtsbild aus dem Video extrahiert.
Es wird davon ausgegangen, dass der Dateiname "input.mp4" lautet und sich im Download-Ordner von Windows 10 befindet.
active_face_detection_demo ist eine Inferenz für alle Frames, daher ist es praktisch, die Verarbeitungszeit zu verkürzen und später mit ffmpeg zu extrahieren. Konvertieren Sie input.mp4` in 1 Bild pro Sekunde.
cd /cygdrive/c/Users/${USER}/Downloads/
ls -l input.mp4
mkdir -p output/
ffmpeg -i input.mp4 -r 1 output/input_r1.mp4 -y
Fast das gleiche wie das, was ich zuvor versucht habe, aber ich erhalte die Rohausgabe mit der 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)
~~
Wie oben erwähnt, werden in raw.txt Kandidaten für jeden Frame in der Reihenfolge der Nähe zum Gesicht ausgegeben, und gesichtsähnliche Kandidaten (Bewertungswert von 0,5 oder mehr) sind mit "WIRD RENDERED!" Markiert.
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
Da die Anzahl von "[0,1]" die Anzahl der Bilder ist, übergeben Sie sie später an die Option "-ss" (da es sich um ein Video mit 1 Bild pro Sekunde handelt, können Sie die Anzahl der Bilder an die Option "-ss" übergeben, die die Anzahl der Sekunden überschreitet). .. Nur diejenigen mit einem hohen Gesichtsbewertungswert (WIRD GELIEFERT!
Ist 0,5 oder mehr, aber da es sich um einen Affen handelt, ist der oben genannte Wert höher) aus den Koordinaten Ernte .html # crop) Holen Sie sich die Filterparameter und drucken Sie den Befehl ffmpeg (er scheint immer quadratisch zu sein).
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
Da eine Datei mit den oben genannten Befehlen erstellt wird,
sh ffmpeg.sh
Durch Ausführen in der Shell wird jedes Gesichtsbild ausgegeben.
mogrify -resize 128x128! *.jpg
Es scheint praktisch, mit ImageMagick mogrify dieselbe Größe zu haben.
Recommended Posts