Face Detection
gst-ai-face-detection performs face detection on each frame of a video stream, marking face locations and facial landmarks (eyes, nose, mouth, etc.).
Prerequisites
- Completed QIM SDK Installation and Model Download
Steps
1. Install ffmpeg and Transcode Video
The default video format has compatibility issues with Q900's GStreamer rendering pipeline. Transcode to baseline H.264:
radxa@airbox$
sudo apt install -y ffmpeg
sudo ffmpeg -y -i /etc/media/video.mp4 \
-c:v libx264 \
-profile:v baseline \
-level 3.1 \
-pix_fmt yuv420p \
-vf scale=640:480 \
-r 30 \
-g 30 \
-keyint_min 30 \
-bf 0 \
-an \
-movflags +faststart \
/etc/media/video_safe.mp4
2. Create Config File
radxa@airbox$
python3 -c "
import json
with open('/etc/configs/config_face_detection.json') as f:
c = json.load(f)
c['file-path'] = '/etc/media/video_safe.mp4'
json.dump(c, open('/tmp/cfg_face_detection.json', 'w'), indent=2)
"
3. Run
radxa@airbox$
gst-ai-face-detection --config-file=/tmp/cfg_face_detection.json
Press Ctrl + C to stop.
Expected Output
Running app with model: /etc/models/face_det_lite_quantized.tflite and labels: /etc/labels/face_detection.json
VERBOSE: Replacing 90 out of 90 node(s) with delegate (TfLiteQnnDelegate) node
Pipeline state changed from PAUSED to PLAYING
The display shows the video with face bounding boxes and facial landmarks.
Validation
- 90 ops all delegated to DSP
- Pipeline reaches
PLAYINGstate - Display correctly shows face bounding boxes and landmarks