PaddlePaddle モデルから変換¶
このページでは、OpenVINO モデル変換 API を使用してモデルを PaddlePaddle 形式から OpenVINO IR 形式に変換する一般的な手順を説明します。PaddlePaddle モデルの形式によって手順が異なります。
注
ファイルにシリアル化された PaddlePaddle モデルは、最初に OpenVINO IR を準備しなくても、OpenVINO ランタイム API による openvino.Core.read_model
メソッドまたは openvino.Core.compile_model
メソッドによってロードできます。詳細については、推論の例を参照してください。モデルの読み込みレイテンシーが推論アプリケーションにとって重要である場合は、引き続き openvino.convert_model
を使用することを推奨します。
PaddlePaddle モデルファイルから変換¶
PaddlePaddle 推論モデルには、.pdmodel
(モデル構造) と .pdiparams
(モデルの重み) が含まれています。PaddlePaddle 推論モデルをエクスポートする方法の詳細については、PaddlePaddle 推論モデルのエクスポートの中国語ガイドを参照してください。
PaddlePaddle モデルを変換するには、ovc
または openvino.convert_model
を使用して、入力モデル .pdmodel
ファイルへのパスを指定します。
import openvino as ov
ov.convert_model('your_model_file.pdmodel')
ovc your_model_file.pdmodel
例えば、次のコマンドは YOLOv3 PaddlePaddle モデルを OpenVINO IR モデルに変換します。
import openvino as ov
ov.convert_model('yolov3.pdmodel')
ovc yolov3.pdmodel
PaddlePaddle Python モデルから変換¶
モデル変換 API は、ユーザーコード内でファイルに保存することなく、PaddlePaddle モデルを Python で直接渡すことをサポートします。
次の PaddlePaddle モデル・オブジェクト・タイプがサポートされます。
paddle.hapi.model.Model
paddle.fluid.dygraph.layers.Layer
paddle.fluid.executor.Executor
一部の PaddlePaddle モデルでは、以下に示すように、変換に example_input
または output
を必要とする場合があります。
-
paddle.hapi.model.Model
形式モデルの変換例:import paddle import openvino as ov # create a paddle.hapi.model.Model format model resnet50 = paddle.vision.models.resnet50() x = paddle.static.InputSpec([1,3,224,224], 'float32', 'x') y = paddle.static.InputSpec([1,1000], 'float32', 'y') model = paddle.Model(resnet50, x, y) # convert to OpenVINO IR format ov_model = ov.convert_model(model) ov.save_model(ov_model, "resnet50.xml")
-
paddle.fluid.dygraph.layers.Layer
形式モデルの変換例:example_input
は必須ですが、output
はオプションです。example_input
は次の形式を受け入れます。list
テンソル (paddle.Tensor
) または InputSpec (paddle.static.input.InputSpec
)import paddle import openvino as ov # create a paddle.fluid.dygraph.layers.Layer format model model = paddle.vision.models.resnet50() x = paddle.rand([1,3,224,224]) # convert to OpenVINO IR format ov_model = ov.convert_model(model, example_input=[x])
-
paddle.fluid.executor.Executor
形式モデルの変換例:example_input
とoutput
は必須であり、次の形式を受け入れます。list
または変数 (paddle.static.data
) を含むtuple
import paddle import openvino as ov paddle.enable_static() # create a paddle.fluid.executor.Executor format model x = paddle.static.data(name="x", shape=[1,3,224]) y = paddle.static.data(name="y", shape=[1,3,224]) relu = paddle.nn.ReLU() sigmoid = paddle.nn.Sigmoid() y = sigmoid(relu(x)) exe = paddle.static.Executor(paddle.CPUPlace()) exe.run(paddle.static.default_startup_program()) # convert to OpenVINO IR format ov_model = ov.convert_model(exe, example_input=[x], output=[y])
関連情報¶
対話型の Python チュートリアルでその他のモデルの変換例を確認してください。