person-detectionの実行(RaspberryPi編)

インストールガイドに環境構築後のpythonサンプルとして、顔認識(face-detection)が記載されています。それを流用して人認識(person-detection)として実行してみます。モデルを変えるだけのお手軽確認です。環境構築が終わっている場合は10分で確認出来ます。

本記事は https://docs.openvinotoolkit.org/2020.1/_docs_install_guides_installing_openvino_raspbian.html
を元に記述しています。元のページも参照してください。

以降は、RaspberryPiにOpenVINOが構築されている事が前提です。

Run Inference of Face Detection Model Using OpenCV* API

1. person-detection-retail-0013を用意します。

$ wget --no-check-certificate https://download.01.org/opencv/2020/openvinotoolkit/2020.1/open_model_zoo/models_bin/1/person-detection-retail-0013/FP16/person-detection-retail-0013.xml
(略)
 HTTP による接続要求を送信しました、応答を待っています... 200 OK
 長さ: 354107 (346K) [text/xml]
 `person-detection-retail-0013.xml' に保存中
 

 person-detection-retail-0013.xml             100%[=============================================================================================>] 345.81K   979KB/s 時間 0.4s     
 

 2020-10-11 10:01:12 (979 KB/s) - `person-detection-retail-0013.xml' へ保存完了 [354107/354107]
 

 $ wget --no-check-certificate https://download.01.org/opencv/2020/openvinotoolkit/2020.1/open_model_zoo/models_bin/1/person-detection-retail-0013/FP16/person-detection-retail-0013.bin
(略)
 HTTP による接続要求を送信しました、応答を待っています... 200 OK
 長さ: 1445736 (1.4M) [application/octet-stream]
 `person-detection-retail-0013.bin' に保存中
 

 person-detection-retail-0013.bin             100%[=============================================================================================>]   1.38M  7.02MB/s 時間 0.2s     
 

 2020-10-11 10:01:19 (7.02 MB/s) - `person-detection-retail-0013.bin' へ保存完了 [1445736/1445736]

2. openvino_pd_myriad.py というようなファイルを作成して、以下のスクリプト をコピーしてください。
スクリプト 実行前に、frame = cv.imread(‘/path/to/image’) に読み込む画像ファイルに修正してください。

import cv2 as cv 
 Load the model.
 net = cv.dnn_DetectionModel('person-detection-retail-0013.xml',
 'person-detection-retail-0013.bin')
 Specify target device.
 net.setPreferableTarget(cv.dnn.DNN_TARGET_MYRIAD)
 Read an image.
 frame = cv.imread('/path/to/image')
 if frame is None:
 raise Exception('Image not found!') 
 Perform an inference.
 _, confidences, boxes = net.detect(frame, confThreshold=0.5) 
 Draw detected faces on the frame.
 for confidence, box in zip(list(confidences), boxes):
 cv.rectangle(frame, box, color=(0, 255, 0)) 
 Save the frame to an image file.
 cv.imwrite('out.png', frame)
ありし日の歌舞伎町

3. スクリプト を実行します

python3 openvino_pd_myriad.py

結果は、out.pngというファイルが作成されるので、確認してください。

認識結果