Face Detection¶
This guide includes an example script to run face detection inference with OpenVINO Model Server.
The script face_detection.py runs face detection inference requests for all the images saved in
image_input_dir
directory.The script can adjust the input image size and change the batch size in the request. It demonstrates how to use the functionality of dynamic shape in OpenVINO Model Server and how to process the output from the server.
The example relies on the model face_detection_0004.
Running the Script¶
python face_detection.py --help
usage: face_detection.py [-h] [--input_images_dir INPUT_IMAGES_DIR]
[--output_dir OUTPUT_DIR] [--batch_size BATCH_SIZE]
[--width WIDTH] [--height HEIGHT]
[--grpc_address GRPC_ADDRESS] [--grpc_port GRPC_PORT] [--model_name]
optional arguments:
-h, --help show this help message and exit
--input_images_dir INPUT_IMAGES_DIR
Directory with input images
--output_dir OUTPUT_DIR
Directory for staring images with detection results
--batch_size BATCH_SIZE
how many images should be grouped in one batch
--width WIDTH how the input image width should be resized in pixels
--height HEIGHT how the input height should be resized in pixels
--grpc_address GRPC_ADDRESS
Specify url to grpc service. default:localhost
--grpc_port GRPC_PORT
Specify port to grpc service. default: 9000
--model_name MODEL_NAME
Specify the model name
Usage example¶
Start the OVMS service locally:
curl --create-dirs https://download.01.org/opencv/2021/openvinotoolkit/2021.1/open_model_zoo/models_bin/1/face-detection-retail-0004/FP32/face-detection-retail-0004.xml https://download.01.org/opencv/2021/openvinotoolkit/2021.1/open_model_zoo/models_bin/1/face-detection-retail-0004/FP32/face-detection-retail-0004.bin -o model/1/face-detection-retail-0004.xml -o model/1/face-detection-retail-0004.bin
docker run -d -v $(pwd)/model:/models -p 9000:9000 openvino/model_server:latest --model_path /models --model_name face-detection --port 9000 --shape auto
Run the client:¶
cd example_client
virtualenv .venv
. .venv/bin/activate
pip install -r client_requirements.txt
mkdir results
python face_detection.py --batch_size 1 --width 300 --height 300
or
python face_detection.py --batch_size 4 --width 600 --height 400 --input_images_dir images/people --output_dir results
Output of the Script¶
The script will visualize the inference results on the images saved in the directory
output_dir
. Saved images have the following naming convention:
<#iteration>_<#image_in_batch>.jpeg
The Face Detection Example script can be a reference script to run various other Detection models. Run through the following steps to use Person-Vehicle OpenVINO Model with OpenVINO Model Server.
Download the model from OpenVINO Model Zoo.¶
A variety of OpenVINO Models in IR format are present in OpenVINO Model Zoo. You can also convert your model to IR format (.xml and .bin format).
Refer to Model Optimizer to convert your model.
Create a model folder and download Person-Vehicle-Detection Model:
curl --create-dirs https://download.01.org/opencv/2021/openvinotoolkit/2021.1/open_model_zoo/models_bin/1/person-vehicle-bike-detection-crossroad-0078/FP32/person-vehicle-bike-detection-crossroad-0078.bin https://download.01.org/opencv/2021/openvinotoolkit/2021.1/open_model_zoo/models_bin/1/person-vehicle-bike-detection-crossroad-0078/FP32/person-vehicle-bike-detection-crossroad-0078.xml -o model/1/person-vehicle-bike-detection-crossroad-0078.bin -o model/1/person-vehicle-bike-detection-crossroad-0078.xml
Prepare Model Repository¶
Refer to Preparation of Models to place your downloaded or converted models in a repository to mount them to the OpenVINO Model Server.
Run the OpenVINO Model Server Docker Container¶
Run the OpenVINO Model Server with the downloaded models. Adjust the shape and batch_size parameter according to the requirement of the model. Refer this guide to know more about the parameters.
Run the following command on your terminal
docker run -d -u $(id -u):$(id -g) -v $(pwd)/model:/models/person-detection -p 9000:9000 openvino/model_server:latest --model_path /models/person-detection --model_name person-detection --port 9000 --shape auto
Check if the container is running with :
docker ps
If the container is not running, check out the troubleshooting guide
Run the example script¶
Run the face detection example script - FaceDetection.py. Make changes to the input shape as required by the model you are running. Refer to the API reference Guide to obtain the input and output shape of the model - gRPC reference guide and REST API reference guide.
Run the example script in terminal :
python face_detection.py --batch_size 1 --width 600 --height 400 --input_images_dir images --output_dir results --model_name person-detection
Output of the Script¶
The image with inference is stored in the results folder. The inference bounding boxes are drawn around people and vehicles present in the image