본문 바로가기
- Unity/trying to get my head around some issue

[Unity] Barracuda Tensorflow 모델을 onnx 로 변환

by david_동근 2025. 6. 2.

캡스톤 디자인 때, 이것 때문에 1주일을 고전하며 힘들었던 기억이납니다.

번뜩 떠올라 과거의 제가 Notion에다 정리한 내용을 갖고왔습니다.


 

TF2ONNX

TensorFlow 모델을 ONNX 모델로 변환하기 위해선, tf2onnx (TensorFlow to ONNX에용) 라이브러리가 필요합니다.

가장 먼저 Teachable Machine 에서 제가 모은 데이터로 학습시킨 모델을 다운 받고, 모델을 tf2onnx 에서 컨버트 시킨다. 그 다음 유니티에 넣고 ‘유니티-바라쿠다’로 조지고, 내게 필요한대로 코딩하면 끝
-과거의 동근-

 

1) 데이터 Crawling 및 학습

  1. 필요한 데이터를 크롤링 하여 모아둡니다. (ML_feeds)
  2. 구글의 teachable machine 로 학습시킨 후, 잘 되는지 확인해봅니다.
  3. 학습된 모델은 Tensorflow, 코드 스니펫은 Keras 형태로 저장합니다.

 

2) 텐서플로모델을 onnx로 변환

Open Neural Network Exchange : 모델 공유 표준
Barracuda : 유니티 라이브러리. 게임에서 AI 쓸라면 필요, onnx포맷 모델 지원함.
  1. 변환하기 위해서 Anaconda 와 python(버전에 맞게)을 설치 및 설정해줍니다.
  2. 컨버터가 필요하기 때문에 tf2onnx를 설치합니다.

https://github.com/onnx/tensorflow-onnx

 

GitHub - onnx/tensorflow-onnx: Convert TensorFlow, Keras, Tensorflow.js and Tflite models to ONNX

Convert TensorFlow, Keras, Tensorflow.js and Tflite models to ONNX - onnx/tensorflow-onnx

github.com

 

CMD 창에서 아래처럼 입력해줍니다. (Anacond Prompt 창에서 해주셔용)

pip install -U tf2onnx

 

설치 후 디렉토리 (예시 : python -m tf2onnx.convert --saved-model (어쩌구)\model.savedmodel --output (어쩌구)\handsome_model.onnx --opset 13) 명령어를 실행해야 합니다.

 

※주의

ex. 위 과정 중 저는 ModuleNotFoundError: No module named 'tensorflow’ 처럼 텐서플로가 없었기 때문에,

아래와 같이 해결해줬습니다.

 

1. 아나콘다 프롬프트 를 열어 텐서플로를 설치합니다.

 

2. 아나콘다에서 텐서플로 지원하게 만들어야 하므로 아래와 같이 진행합니다.

 

3. 진행할까요? Y/N 으로 이것 저것 물어보는데, 그냥 다 "y" (Yes) 입력해주고 기다립니다.

 

4. 다 되면 텐서플로를 액티브 합니다.

 

5. 아나콘다 열고, tf (tensorflow)로 채널이 잘 맞춰지는지 확인합니다.

 

드디어 변환완료 했습니다. (이 부분에서 과거의 제가 욕을 잔뜩 박아놨더라구요 ㅋㅋㅋㅋ)

 

위처럼 .onnx 파일을 얻었으면, 이제 다음 단계로 넘어가줍니다.

 

3) Unity에 embedded 하기

  1. 유니티 바라쿠다 가 필요하기 때문에 깃에서 받아줍니다.
  2. https://github.com/Unity-Technologies/barracuda-release
  3. 유니티 패키지 매니저에서 add git url 합니다.
 

GitHub - Unity-Technologies/barracuda-release

Contribute to Unity-Technologies/barracuda-release development by creating an account on GitHub.

github.com

 

※ 저는 git url로 해결이 안됐기 때문에 직접 add from disk 하기위해 파일을 받았습니다.

 

4. 유니티에 아까 변환해준 모델이랑 레이블s까지 import 해 줍니다.

 

TADA~

 


 

뭔가 이상한 점이 있거나, 더 좋은 방법이 있거나, 궁금한 점이 있으시다면 댓글 달아주세용.

그럼 좋은 하루 보내시고, 화이팅~! ദ്ദി ˃ ᴗ ˂ )