Unity/Barracuda & Sentis

[Unity Sentis] Object Detection 모델 (Yolo v7 tiny) 실행하기

pnltoen 2024. 4. 9.
반응형

Yolov7

Unity Technologies


서론

이미 Hugging Face에 Sentis와 Yolov7을 구현한 프로젝트가 있으니 해당 프로젝트 부터 뜯어보겠습니다.

 

unity/sentis-yolotinyv7 at main

 

huggingface.co

 

전반적인 사용과 관련해서, readme의 How to Use를 확인해보면 사용 방법을 확인할 수 있습니다. 하지만 개인적으로 유니티를 처음 사용하는 입장에서 사용이 어렵다고 생각하기 때문에 해당 부분부터 진행해보도록 하겠습니다.

 

초기 설정

 

블로깅을 하기전 2023.2.16f1에서 진행하였지만, Reflection Probe의 AABB 문제가 발생하여서 2023.2.17f1에서 진행하도록 하겠습니다.

 

Sentis는 2023.2 이 후의 버전을 지원합니다. 본래의 Hugging face 모델의 경우 1.3.0 버전을 사용하였지만 요구되 에디터 버전은 Sentis 1.3 그리고 1.4가 모두 동일합니다.

 

Install Sentis | Sentis | 1.4.0-pre.3

Install Sentis The Sentis package is available from the Unity Package Manager. Unity Editor version compatibility Sentis 1.4.0 is compatible with Unity 2023.2 (or later). Install the Sentis Package in Unity To add the Sentis package to a Unity project: Cre

docs.unity3d.com

 

Sentis 설치의 경우 기존에 작성한 Sentis 소개와 설치 포스팅을 참고해주시길 바랍니다.

 

[Unity Sentis 튜토리얼] Unity Sentis 소개 및 설치 + AdaIN 샘플 소개

Barrcuda → Sentis Unity Technologies 서론 기존에 2가지 포스팅을 진행하면서, Barracuda 패키지의 설치 방법을 알아보았습니다. [Unity Barracuda] 유니티 바라쿠다 튜토리얼 (StyleTransfer-AdaIN) Barracuda Unity Technol

pnltoen.tistory.com

 

이 후 아래의 Git clone을 통해, HuggingFace repo를 다운로드 받았습니다.

 

git clone https://huggingface.co/unity/sentis-yolotinyv7

 

다운로드 받은 Sentis-yolotinyv7 폴더를 Project의 Assets 폴더로 옮겨주었습니다.

 

Hiearchy에 있는 Main Camera에 Sentis-yolotinyv7/Run Yolo.cs를 추가합니다.

 

 

Hierachy에서 Canvas 및 RawImage를 추가합니다.

 

 

이 후 RawImage의 Inspector 창에서 Width를 1920 그리고 Height를 1080 즉, Full HD로 설정합니다.

sentis-yolotinyv7/classes 파일을 확인해보면, 검출 가능한 80개의 classes를 확인할 수 있습니다.

 

관련해서 하나의 동영상을 준비해주길 바랍니다. 저는 유니티 Japan 팀의 공식 Warehouse 에서 영상을 촬영 후 사용하였습니다.

 

Unity Warehouse | 3D 공장 | Unity Asset Store

Elevate your workflow with the Unity Warehouse asset from Unity Technologies Japan. Find this & other 공장 options on the Unity Asset Store.

assetstore.unity.com

 

 

위와 같이 Assets/StreamingAssets 폴더에 warehouse, yolo7-tiny.onnx.sentis 파일을 옮겨줍니다.

 

이 후 Main Camera에 부착된 Run Yolo를 다음과 같이 업데이트합니다.

Box Texture의 경우 기본적으로 에디터에 있는 UI Mask를 사용하였습니다. 박스를 사용해도 좋으나, 이 경우 Alpha (Transprency) 없이 박스가 그려지기 때문에 실제 오브젝트가 검출된 값과 맞는지 확인하기 어렵습니다. 따라서 UIMask를 사용하는 것을 추천드립니다.

 

 

폰트의 경우, 저작권이 없는 배달의민족 폰트에서 ttf 파일을 다운로드 받은 후 할당하였습니다.

 

 

이 후 실행 버튼을 누르면 위의 영상과 같이오브젝트를 Label에 맞게 검출합니다.

 

결론

 

개인적으로 HugginFace에 있는 사용 방법이 유니티 초심자 분들이 사용하기 어렵다는 생각이 들어 Yolotiny v7 모델을 유니티에서 실행해보는 튜토리얼을 제작하였습니다.

 

다음 포스팅에서는 Run Yolo 코드를 분석해보도록 하겠습니다.

반응형

댓글