OpenVINO 2021.1に含まれている、object_detection_demo_faceboxesを実行してみましょう。
環境
Dell Inspiron 3593(Intel Core i5-1035G1 CPU、メモリ 8GB)
Windows 10 Pro / OpenVINO 2021.1 / Python 3.7.8
OpenVINO 2020.3 LTSが入っている環境でしたので、一旦アンインストールを行いました。
デモの場所
今回試してみるobject_detection_demo_faceboxesは以下の場所にあります。(OpenVINO2021.1からインストール先がIntelSWToolsからIntel配下に変わっています)
C:\Program Files (x86)\Intel\openvino_2021\inference_engine\demos\python_demos\object_detection_demo_faceboxes
モデルをダウンロード
まずはmodels.lstを確認します。
# This file can be used with the --list option of the model downloader.
faceboxes-pytorch
model_downloaderでモデルをダウンロードします。
cd C:\Program Files (x86)\Intel\openvino_2021\deployment_tools\tools\model_downloader
python downloader.py --list "C:\Program Files (x86)\Intel\openvino_2021\inference_engine\demos\python_demos\object_detection_demo_faceboxes\models.lst" --output_dir <格納先フォルダ>
################|| Downloading faceboxes-pytorch ||################
========== Downloading C:\Users\takto\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch\faceboxes.py
... 100%, 4 KB, 325 KB/s, 0 seconds passed
========== Downloading C:\Users\takto\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch\FaceBoxesProd.pth
... 100%, 3977 KB, 14153 KB/s, 0 seconds passed
モデルをIR形式にコンバート
ダウンロードしたモデルをIR形式にコンバートします。
python converter.py –name faceboxes-pytorch -d <格納先フォルダ>
========== Converting faceboxes-pytorch to ONNX
Conversion to ONNX command:<ユーザ>\AppData\Local\Programs\Python\Python37\python.exe "C:\Program Files (x86)\Intel\openvino_2021\deployment_tools\tools\model_downloader\pytorch_to_onnx.py" --model-path=<ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch --model-name=FaceBoxes --import-module=faceboxes --model-param=phase='test' --model-param=size=None --model-param=num_classes=2 --weights=<ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch/FaceBoxesProd.pth --input-shape=1,3,1024,1024 --input-names=input.1 --output-names=342,353 --output-file=<ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch/faceboxes-pytorch.onnx
ONNX check passed successfully.
========== Converting faceboxes-pytorch to IR (FP16)
Conversion command: <ユーザ>\AppData\Local\Programs\Python\Python37\python.exe -- "C:\Program Files (x86)\Intel\openvino_2021\deployment_tools\model_optimizer\mo.py" --framework=onnx --data_type=FP16 --output_dir=<ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch\FP16 --model_name=faceboxes-pytorch --input_shape=[1,3,1024,1024] --input=input.1 --input_model=<ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch/faceboxes-pytorch.onnx --mean_values=input.1[104.0,117.0,123.0] --output=342,353
Model Optimizer arguments:
Common parameters:
- Path to the Input Model: <ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch/faceboxes-pytorch.onnx
- Path for generated IR: <ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch\FP16
- IR output name: faceboxes-pytorch
- Log level: ERROR
- Batch: Not specified, inherited from the model
- Input layers: input.1
- Output layers: 342,353
- Input shapes: [1,3,1024,1024]
- Mean values: input.1[104.0,117.0,123.0]
- Scale values: Not specified
- Scale factor: Not specified
- Precision of IR: FP16
- Enable fusing: True
- Enable grouped convolutions fusing: True
- Move mean values to preprocess section: None
- Reverse input channels: False
ONNX specific parameters:
Model Optimizer version: 2021.1.0-1237-bece22ac675-releases/2021/1
[ SUCCESS ] Generated IR version 10 model.
[ SUCCESS ] XML file:<ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch\FP16\faceboxes-pytorch.xml
[ SUCCESS ] BIN file:<ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch\FP16\faceboxes-pytorch.bin
[ SUCCESS ] Total execution time: 89.51 seconds.
========== Converting faceboxes-pytorch to IR (FP32)
Conversion command:<ユーザ>\AppData\Local\Programs\Python\Python37\python.exe -- "C:\Program Files (x86)\Intel\openvino_2021\deployment_tools\model_optimizer\mo.py" --framework=onnx --data_type=FP32 --output_dir=<ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch\FP32 --model_name=faceboxes-pytorch --input_shape=[1,3,1024,1024] --input=input.1 --input_model=<ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch/faceboxes-pytorch.onnx --mean_values=input.1[104.0,117.0,123.0] --output=342,353
Model Optimizer arguments:
Common parameters:
- Path to the Input Model: <ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch/faceboxes-pytorch.onnx
- Path for generated IR: <ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch\FP32
- IR output name: faceboxes-pytorch
- Log level: ERROR
- Batch: Not specified, inherited from the model
- Input layers: input.1
- Output layers: 342,353
- Input shapes: [1,3,1024,1024]
- Mean values: input.1[104.0,117.0,123.0]
- Scale values: Not specified
- Scale factor: Not specified
- Precision of IR: FP32
- Enable fusing: True
- Enable grouped convolutions fusing: True
- Move mean values to preprocess section: None
- Reverse input channels: False
ONNX specific parameters:
Model Optimizer version: 2021.1.0-1237-bece22ac675-releases/2021/1
[ SUCCESS ] Generated IR version 10 model.
[ SUCCESS ] XML file:<ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch\FP32\faceboxes-pytorch.xml
[ SUCCESS ] BIN file:<ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch\FP32\faceboxes-pytorch.bin
[ SUCCESS ] Total execution time: 11.30 seconds.
実行する
実行前に引数を確認しましょう。
C:\Program Files (x86)\Intel\openvino_2021\inference_engine\demos\python_demos\object_detection_demo_faceboxes>python object_detection_demo_faceboxes.py -h
usage: object_detection_demo_faceboxes.py [-h] -m MODEL [-i INPUT [INPUT ...]]
[-d DEVICE] [-pt PROB_THRESHOLD]
[--no_show]
[-u UTILIZATION_MONITORS]
Options:
-h, --help Show this help message and exit.
-m MODEL, --model MODEL
Required. Path to an .xml file with a trained model.
-i INPUT [INPUT ...], --input INPUT [INPUT ...]
path to video or image/images
-d DEVICE, --device DEVICE
Optional. Specify the target device to infer on; CPU,
GPU, FPGA, HDDL or MYRIAD is acceptable. The demo will
look for a suitable plugin for device specified.
Default value is CPU
-pt PROB_THRESHOLD, --prob_threshold PROB_THRESHOLD
Optional. Probability threshold for detections
filtering
--no_show Optional. Don't show output
-u UTILIZATION_MONITORS, --utilization_monitors UTILIZATION_MONITORS
Optional. List of monitors to show initially.
利用した動画は以下から借用しました。
https://github.com/intel-iot-devkit/sample-videos
実行してみましょう。
C:\Program Files (x86)\Intel\openvino_2021\inference_engine\demos\python_demos\object_detection_demo_faceboxes>python object_detection_demo_faceboxes.py -m <ユーザ>\Documents\Intel\OpenVINO\openvino_models\public\faceboxes-pytorch\FP16\faceboxes-pytorch.xml -i <ユーザ>\Downloads\face-demographics-walking-and-pause.mp4
なお、-iに静止画像を指定して実行すると、すぐに終了してしまいます。
その場合は、
cv2.imshow(‘FaceBoxes Detection Demo’, frame)
key = cv2.waitKey(delay)
の箇所を
cv2.imshow(‘FaceBoxes Detection Demo’, frame)
key = cv2.waitKey(0)
にすると、入力があるまで待つようになります。
以上、object_detection_demo_faceboxesの実行でした。
フリーのITエンジニア(何でも屋さん)。趣味は渓流釣り、サッカー観戦、インラインホッケー、アイスホッケー、RaspberryPiを使った工作など。AI活用に興味があり試行錯誤中です。