[Unity] Perception 패키지로 Synthetic data 만들기 - 1

2026. 2. 10. 15:26·Unity
반응형

모델을 학습할 때 가끔 특정 데이터가 부족한 경우가 있다. 예를 들어, 산업 현장에서 흠집이나, 파손 등 불량품에 해당하는 데이터가 부족한 경우가 해당된다.

 

예전에는 데이터 불균형을 잡기 위해 상대적으로 적은 데이터를 늘리기 위한 augmentation을 쓰곤 했다. 하지만, 이 방법을 통해 "그럴싸한 데이터들을 확보할 수 있는가?" 라고 생각해본다면 쉽게 답을 못 내릴 것이다.

 

다들 잘 알다시피, 모델 성능에 있어서 "학습 데이터셋의 퀄리티"는 매우 중요하게 작용한다. 데이터셋 내부의 class가 균형잡혀있을 수록, 각 class가 가진 feature가 두드러지게 구분되는 데이터일 수록 모델이 더 잘 학습할 가능성이 올라간다.

 

Coarse Dropout augmentation을 적용한 경우

 

위의 사진처럼, 기존의 augmentation 방식으로 데이터셋을 늘릴 수는 있겠으나 저런 이미지는 실제 경우에서는 발생하지 않는 경우이므로 실제 현장 데이터를 기반으로한 고품질의 데이터를 확보했다고 생각하기는 어렵다.

 

요즘은 다양한 Simulation 프로그램들이 개발되면서, 현실에 가까운 그래픽으로 구현할 수 있게 되면서 더 그럴싸한 데이터를 만들어내는게 가능해졌다. 때문에, 이 프로그램들을 잘 사용해서 고품질의 데이터를 보다 빠르게 확보할 수 있게 되었다.

 

Unity의 Perception 패키지는 이러한 Synthetic data를 만들어 볼 수 있는 다양한 기능을 제공한다. 이 기능을 잘 사용해서 한 번 간단한 합성 데이터 프로젝트를 수행해보자.

 

Unity 버전에 따라 UI가 다를 수 있으니 주의하자. 이 글은 Unity 6.3 LTS를 기준으로 작성됐다.


1. Perception package installation

Unity Hub를 실행시킨 후, [Project] 탭에서 새로운 Project를 만들어주자. High Definition 3D Templates로  만들어줘야한다.

 

 

프로젝트가 만들어지면, 아래처럼 화면이 나올 것이다. 제일 위쪽 탭의 [Window] > [Package Mangement] > [Package Manger]를 눌러주자.

 

Package Manager 창이 뜨고, 여기서 "+" 버튼을 눌러주고 [install package from git URL...]을 눌러주자.

그러면 URL 입력창이 나오고 거기에 "com.unity.perception"을 입력해주면 패키지가 설치된다.

 

2. Perception Camera Settings

이제, Perception Camera를 설정해보자. Unity 화면 왼쪽에 Hierachy를 보면 Main Camera가 있다. 이걸 클릭해주면 우측에 Inspector에 main camera의 설정값들이 뜬다.

 

 

여기서 Add Component를 누른 뒤 뜬 창에 "perception camera"를 검색한 뒤 추가해주자.

 

그러면, 이렇게 새로운 설정값이 생기면서 아래쪽에 기분나쁜 에러와 경고창이 뜨는걸 볼 수 있다.

저 괘씸한 놈들을 혼내주고 싶다는 생각이 들지 않는가? 먼저 에러부터 해결하자.

 

Unity 하단에 저런 화면을 볼 수 있다. 여기서 Settings라는 폴더를 클릭해보면 "HDRP Balanced", "HDRP Hight Fidelity", "HDRP Performant"가 보인다. 우리가 수정할 파일은 이 3개랑 HDRPDefaultResources 폴더 안에 "HDRenderPipelineAsset"이다.

 

바꾸는 방법은 동일하므로 하나만 예시로 보자면,

 

바꿀 파일을 클릭해주면 마찬가지로 inspector에 설정값이 나온다. 여기서 Rendering을 클릭해주면 Lit Shader Mode 값이 Deferred Only로 설정되있다. 이걸 클릭하면 다른 옵션들이 나오는데 여기서 Both로 바꿔주면 된다.

 

이제 경고의 경우, 친절하게 해결 방법이 문구에 나와있다.

 

제일 상단의 탭 중 [Edit] > [Project Settings]를 클릭해주자. 그리고 Asynchronus를 검색해주고 아래로 좀 내려보면 나온다.

 

 

체크 박스를 해제해주면 된다.

 

3. Object Generation

이제, 물건들을 만들어보자. 튜토리얼 느낌으로 만드는 것이므로 복잡한 asset말고 그냥 기본 도형으로 만들자.

 

먼저, 바닥부터 만들어보자. Hierachy에 우클릭 > [3D object] > [Plane]을 누르면 된다.

 

Inspector에서 이름을 Conveyor Belt로 바꿔주자. 그리고 회색은 밋밋하니까 그럴싸한 색으로 바꿔주자.

아래의 Project 창에서 우클릭 > [Create] > [Materials]를 눌러주면, New Materials 라는게 생긴다.

 

 

Inspector 부분에서 [Base Map], [Metallic], [Smoothness]를 적절히 조절해줘서 원하는 느낌의 색깔과 질감을 만들자.

그 후, Conveyot Belt를 클릭해주고 [Mesh render] 탭에서 New Materials를 선택해주면 된다.

 

같은 방법으로 Cube를 2개 만들어서 하나는 철판(Metal Plane) 하나는 흠집(Scratch)로 만들어주자. 흠집은 위치를 잘 조절해서 철판 위에 붙어있는 것처럼 해주면 좋다.

 

 

나는 위와 같이 만들어줬다. 각 물체의 위치값은 아래와 같이 설정했다.

이제 Main Camera의 위치를 조절해주자. 우리는 위에서 아래로 내려다 보는 뷰로 만들 것이므로 Main camera의 Transform을 이렇게 바꿔주자.

4. Segmentation configuration

이제 Segmentation labeling configuration을 만들어줘야한다. 아래의 Project 창에서 우클릭 >  [Perception] > [Semantic Segmentation Labeling Config]를 눌러주면, 새로운 파일 하나 생긴다.  

 

이걸 눌러주면, Inspector 창이 아래 사진처럼 변하고, 여기에서 [Add New Label]을 눌러서 Label을 추가해줄 수도 있다. 하지만 우리는 다른 방식으로 추가해줄  것이다.

 

Labeling을 만들어줄 object를 클릭해주고, [Add component]를 누른 뒤 labelling을 검색해주자.

 

그러면, 아래와 같은 속성이 추가된다.

 

여기서 Add New Label을 클릭해주자.

 

이렇게 New Label 이란 이름이 생기고 Add to Label Config 버튼이 있다. 이걸 눌러줘서 우리가 아까 만든 config에 add label 해주면 된다. 자신이 등록하고 싶은 이름으로 바꾸고 등록해주자.

 

 

그리고 다시 config 파일을 열어보면, labeling한 object들이 잘 등록되어있다.

여기서 masking 색깔을 바꿔줄 수도 있다. 나는 background는 검정색, metal plane은 하얀색, scratch는 빨간색으로 바꿔줬다.

 

마지막으로 Main Camera를 눌러주고 Inspector에 camera labeler 부분에 + 버튼을 눌러주자. 옵션 중 "Semantic Segmentation Labeler"를 선택해주면 된다.

 

그리고 Label Config에 아까 만든 config 파일을 드래그 & 드롭해주면 된다.

 

Semantic segmentation이 잘 되었는지 확인해보자. 화면 상단에 Play 버튼을 눌러주자.

그러면 Hierachy에 overlay_canvas 라는 것이 생긴다. 이것의 옆에 있는 화살표를 눌러주면 segmentationtexture가 뜬다.

 

 

이걸 클릭해주면, inspector에서 아래와 같이 mask 이미지를 확인할 수 있다.

 

 

사전에 설정한 색깔로 잘 나온다. (scratch가 워낙 얇아서 검은색을 보일텐데, 너비를 수정해주면 빨간색으로 나온다.)

 

 

이렇게 간단한 환경 구성, labeling까지 진행해보았고, 다음 포스팅부터 Radomization을 해보자.

 

 

반응형

'Unity' 카테고리의 다른 글

Ubuntu 22.04에 Unity 설치  (0) 2026.02.01
'Unity' 카테고리의 다른 글
  • Ubuntu 22.04에 Unity 설치
DurianKim
DurianKim
dkimdevblog 님의 블로그 입니다.
    반응형
  • DurianKim
    DurianKim`s Blog
    DurianKim
  • 전체
    오늘
    어제
    • 분류 전체보기 (67)
      • 코딩 테스트 (53)
        • 백준 (11)
        • 코드트리 (3)
        • etc (31)
        • sw 아카데미 (1)
        • 프로그래머스 (7)
      • 컴퓨터 비전 (8)
        • Datasets (2)
        • 개념 (2)
        • 논문 (4)
      • Unity (2)
      • ETC (4)
        • Ubuntu setting (0)
        • Docker (2)
        • 컴퓨터, 노트북 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
    • 글쓰기
  • 공지사항

  • 인기 글

  • 태그

    삼성 코테
    코테
    컴퓨터 비전
    백준
    백준 코테
    Unity segmentation
    2025 삼성 코테 오전 1번
    논문 리뷰
    Unity
    코테 구현
    코딩 테스트
    Docker 공부
    Image Classification 논문 리뷰
    2025 삼성 코테
    Ubuntu에 Unity 설치
    삼성 코테 기출
    Grounding DINO 논문 리뷰
    삼성 pycharm
    Ubuntu 포맷
    iou
    Grounding DINO
    Ubuntu 재설치
    그리드
    pycharm 코테 셋팅
    삼성 코테 2025 상반기
    코드트리 민트초코우유
    Unity synthetic data
    코테 어항 정리
    Computer vision 논문 리뷰
    MobileViT 논문 리뷰
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
DurianKim
[Unity] Perception 패키지로 Synthetic data 만들기 - 1
상단으로

티스토리툴바