Open long-long-float opened 3 years ago
https://github.com/protocolbuffers/protobuf/blob/master/src/README.md
今回はC++で作成するので protobuf-cpp-3.13.0.tar.gz
をダウンロード
# /onnxディレクトリで実行
$ protoc --cpp_out $HOME/git/mini-cnn-runtime/ onnx.proto3
Tiny YOLOv3は確認するには大きい気がしたので小さいモデルを作成する
MNISTモデルの作成 https://www.tensorflow.org/tutorials/images/cnn?hl=ja
学習済みモデルをファイルに保存 https://www.tensorflow.org/tutorials/keras/save_and_load?hl=ja#savedmodel_%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%A8%E3%81%97%E3%81%A6
以下、mnist_model
で保存したとする
保存したモデルをonnx形式に変換 https://github.com/onnx/tensorflow-onnx
python3 -m tf2onnx.convert --saved-model mnist_model --output mnist.onnx
$ clang++ main.cpp -I/usr/local/include -L/usr/local/lib -lprotobuf onnx.proto3.pb.cc
Input
Output
onnxは仕様が公開されている(https://github.com/onnx/onnx/blob/master/docs/IR.md )。また、protoファイルも公開されている(https://github.com/onnx/onnx/blob/master/onnx/onnx.proto )ので、これを使えば入力のモデルファイルを解釈することができる(はず)。
とりあえずの目標は、Tiny YOLOv3(https://github.com/onnx/models/tree/master/vision/object_detection_segmentation/tiny-yolov3 )で物体検出をする。