onnx2tf です。
onnx-tensorflowじゃないです👻
PINTOさんが開発されているツールで、
ONNXファイルをTensorFlow/TensorFlow-Lite形式に変換するツールです。
どうもonnx-tensorflowで変換をかけると、
無駄に大量のTransposeが挿入される(何か機械的な変換で冗長なことしてる?)ようで、
それらの解決を目的の一つとして開発されているようです。
そして、onnx2tf はPINTOさんの最適化の知見が
盛り込まれたツールで、onnx-tensorflowで変換したモデルよりも、
20~30%近く高速なモデルが出来上がります。
※当然、モデルの構造にもよりますが🦔
以下はYOLOX-NanoをTensorFlow-Liteに変換したもので、
onnx-tensorflowを利用した場合だと推論時間383ms、
onnx2tf を利用した場合だと推論時間258ms(約67%)とかなり高速化されています。
劇的効果👻
— 高橋 かずひと@闇のパワポLT職人 (@KzhtTkhs) 2022年10月31日
左:onnx-tf で TensorFlowにしたあとTFLiteに変換
右:PINTOさんのonnx2tfでTFLiteに変換 https://t.co/0m85WlBh3N pic.twitter.com/Ef8mg4bm1c
以下は別のモデルで、変換前の動画は添付していませんが、およそ20%ほど早くなっています。
ラズパイCPU推論で人検出するやつをPINTOさんのonnx2tfで変換👻
— 高橋 かずひと@闇のパワポLT職人 (@KzhtTkhs) 2022年10月31日
20fpsまであとちょっと👀 https://t.co/P0aohYGdEj pic.twitter.com/3wzbzkb3Yj