はじめに
OpenVINO をラズパイなどの低スペックPCにて使用する際に、処理速度がネックになることが多いかと思います。
その対策として、MYRIAD を複数本使用する方法があります。
C++ で MYRIAD を複数本使用する方法はまとまっているのを見つけたことがありますが、
python で MYRIAD を複数本使用する方法がなかったので、この記事にてまとめたいと思います。
利用可能プロセッサ確認方法
以下のコードで、利用可能なプロセッサの確認ができます。
from openvino.inference_engine import IECore
ie = IECore()
available_processor = ie.available_devices
print(available_processor)
# ['CPU', 'MYRIAD.1.1-ma2480', 'MYRIAD.1.2-ma2480', 'MYRIAD.1.3-ma2480', 'MYRIAD.1.4-ma2480']
共有部分
基本は以下のコードで、device_name
を変えていくことで複数本の MYRIAD を使用することができます。
from openvino.inference_engine import IECore
ie = IECore()
# パスは各自のものに変更をお願いします。
model_path = '~/intel/face-detection-retail-0004/FP16/face-detection-retail-0004.xml'
weights_path = '~/intel/face-detection-retail-0004/FP16/face-detection-retail-0004.bin'
net = iecore.read_network(model=model_path, weights=weights_path)
# device_name を変えることによって、MYRIAD の使用本数などを変更できる
exec_net = iecore.load_network(network=net, device_name=device_name)
1本使用
device_name = 'MYRIAD'
# プロセッサによっては以下のような形で指定する必要があります。
# device_name = 'MYRIAD.1.1-ma2480'
# 1本使用
exec_net = iecore.load_network(network=net, device_name=device_name)
4本一括使用
device_name = 'MULTI:MYRIAD.1.1-ma2480, MYRIAD.1.2-ma2480, MYRIAD.1.3-ma2480, MYRIAD.1.4-ma2480'
# 4本一括使用
exec_net = iecore.load_network(network=net, device_name=device_name)
まとめ
これだけで段違いに高速化することは難しいのですが、多少は改善することができますので、参考にしてみてください。
非同期処理・マルチスレッドを導入することによって高速化することができるので、それはまた別の機会に書きたいと思います。