Onnx에서 TFlite로

필자는 pytorch로 학습하는 것을 선호하고, 최근 많은 모델이 pytorch로 연구되고 있다. 하지만 경령화나 최적화를 위해서는 tensorflowtflite가 많이 사용된다. 이때 pytorchonnxtensorflowtflite를 걸쳐 변환한다.

본 글은 onnxtflite로 바꾸는 과정에서 했던 삽집을 기록한다.

우선, onnx-tf는 사용하지 마라. Pythontensorflowkerasonnx 간에 버전 충돌이 있다. 삽질 결과 현재(25.07.23)는 사용이 불가능하다는 결론을 얻었다. 따라서 onnx2tf를 이용해 변환에 성공했다.


Environment

개발 환경과 패키지 버전은 다음과 같다.

  • Linux (Ubuntu 24.02 LTS)
  • Python 3.10
[project]
requires-python = ">=3.10"
dependencies = [
    "ai-edge-litert>=1.4.0",
    "onnx==1.17.0",
    "onnx-graphsurgeon>=0.5.8",
    "onnx2tf==1.28.2",
    "onnxruntime==1.17.0",
    "onnxsim==0.4.33",
    "protobuf==3.20.3",
    "psutil>=7.0.0",
    "simple-onnx-processing-tools>=1.1.32",
    "sne4onnx>=1.0.13",
    "sng4onnx>=1.0.4",
    "tensorflow==2.19.0",
    "tf-keras>=2.19.0",
]
더보기

@ requirements.txt

absl-py==2.3.1
ai-edge-litert==1.4.0
astunparse==1.6.3
backports-strenum==1.3.1
certifi==2025.7.14
charset-normalizer==3.4.2
coloredlogs==15.0.1
flatbuffers==25.2.10
gast==0.6.0
google-pasta==0.2.0
grpcio==1.73.1
h5py==3.14.0
humanfriendly==10.0
idna==3.10
json2onnx==2.0.3
keras==3.10.0
libclang==18.1.1
markdown==3.8.2
markdown-it-py==3.0.0
markupsafe==3.0.2
mdurl==0.1.2
ml-dtypes==0.5.1
mpmath==1.3.0
namex==0.1.0
numpy==2.1.3
onnx==1.17.0
onnx-graphsurgeon==0.5.8
onnx2json==2.0.4
onnx2tf==1.28.2
onnxruntime==1.17.0
onnxsim==0.4.33
opt-einsum==3.4.0
optree==0.16.0
packaging==25.0
protobuf==3.20.3
psutil==7.0.0
pygments==2.19.2
requests==2.32.4
rich==14.0.0
sam4onnx==1.0.16
sbi4onnx==1.0.7
scc4onnx==1.0.7
scs4onnx==1.0.18
sde4onnx==1.0.0
sed4onnx==1.0.5
setuptools==80.9.0
simple-onnx-processing-tools==1.1.32
sio4onnx==1.0.3
sit4onnx==1.0.8
six==1.17.0
sna4onnx==1.0.6
snc4onnx==1.0.13
snd4onnx==1.1.6
sne4onnx==1.0.13
sng4onnx==1.0.4
soa4onnx==1.0.4
soc4onnx==1.0.2
sod4onnx==1.0.0
sog4onnx==1.0.17
sor4onnx==1.0.7
spo4onnx==1.0.5
ssc4onnx==1.0.8
ssi4onnx==1.0.4
svs4onnx==1.0.0
sympy==1.14.0
tensorboard==2.19.0
tensorboard-data-server==0.7.2
tensorflow==2.19.0
tensorflow-io-gcs-filesystem==0.37.1
termcolor==3.1.0
tf-keras==2.19.0
tqdm==4.67.1
typing-extensions==4.14.1
urllib3==2.5.0
werkzeug==3.1.3
wheel==0.45.1
wrapt==1.17.2

 

실행

$ onnx2tf \
  -i weights/my_model.onnx \
  -o model_tf \
  --copy_onnx_input_output_names_to_tflite

 

 


ChatGPT나 Gemini도 계속 헛소리만 해서 삽질 결과를 공유합니다.