유니티 Barracuda(바라쿠다) Unity에서 딥러닝 모델을 실행하기

 

유니티에서 Barracuda(바라쿠다)는 Unity에서 딥러닝 모델을 실행할 수 있는 라이브러리입니다. 주로 ONNX(Open Neural Network Exchange) 포맷의 모델을 Unity 프로젝트에 통합하여 실행하는 데 사용됩니다. 이를 통해 게임, AR/VR 애플리케이션 등 다양한 Unity 프로젝트에서 AI 모델을 활용할 수 있습니다.

유니티 Barraucda 셋팅

Barracuda 설정

Unity 프로젝트에 Barracuda 패키지 추가:

  1. Unity Editor에서 Window > Package Manager로 이동합니다.
  2. 상단에서 + 버튼을 클릭하고 Add Package by Name을 선택합니다.
  3. com.unity.barracuda를 입력하고 Enter를 누릅니다.
https://github.com/Unity-Technologies/barracuda-release.git

https://github.com/Unity-Technologies/barracuda-release/blob/release/3.0.0/Documentation~/GettingStarted.md

 

barracuda-release/Documentation~/GettingStarted.md at release/3.0.0 · Unity-Technologies/barracuda-release

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

github.com

 

 

스크립트 생성하기

BarracudaExample.sc 파일을 생성해주고 Barracuda 를 사용하기위해서 선언 해줍니다

using Unity.Barracuda;

 

Unity Editor 에서 모델을 연결 하기 위해서 NNModel 클래스를 선언해준다

Model m_RuntimeModel; 런타임 모델(유형)로 로드하고 컴파일합니다

public NNModel modelAsset;
private Model m_RuntimeModel;

void Start()
{	
    //신경망의 객체 지향 표현(일명: '모델')을 'NNModel' 유형의 이진 표현에서 반환
    m_RuntimeModel = ModelLoader.Load(modelAsset);
}

 

Barracuda로 모델 실행

Barracuda를 사용하여 모델을 실행하려면 Worker를 사용합니다.

   private void Start()
   {
      //모델 준비
      var model = ModelLoader.Load(modelAsset);
      _worker = WorkerFactory.CreateWorker(WorkerFactory.Type.CSharp, model);
   }

 

 

using UnityEngine;
using Unity.Barracuda;

public class BarracudaExample : MonoBehaviour
{
    public NNModel modelAsset;  // Unity Editor에서 모델을 연결
    private IWorker worker;

    void Start()
    {
        // 모델 준비
        var model = ModelLoader.Load(modelAsset);
        worker = WorkerFactory.CreateWorker(WorkerFactory.Type.ComputePrecompiled, model);

        // 입력 데이터 생성 (예: 224x224 이미지)
        Tensor input = new Tensor(1, 224, 224, 3); // 1xHeightxWidthxChannels

        // 결과 추론
        worker.Execute(input);
        Tensor output = worker.PeekOutput();

        // 결과 처리
        Debug.Log($"Output: {output[0]}");

        // 리소스 해제
        input.Dispose();
        output.Dispose();
    }

    void OnDestroy()
    {
        worker?.Dispose();
    }
}

 

처리 결과 확인하기

 

 

https://github.com/Third-Aurora/Barracuda-Image-Classification/tree/main

 

GitHub - Third-Aurora/Barracuda-Image-Classification

Contribute to Third-Aurora/Barracuda-Image-Classification development by creating an account on GitHub.

github.com