Unity 검색

합성 데이터용 3D 콘텐츠 제작

2021년 9월 8일 산업 분야 | 8 분 소요
Image of the different applications of computer vision
Image of the different applications of computer vision
공유

Is this article helpful for you?

Thank you for your feedback!

합성 데이터를 사용하려면 3D 에셋 라이브러리가 필요합니다. 이번 포스팅에서 일반적인 컴퓨터 비전 문제에 필요한 3D 콘텐츠를 확보하는 방법과 기술에 대해 다룹니다.

실제 데이터가 아닌 합성 데이터를 사용하여 컴퓨터 비전 시스템을 빌드하는 것은 혁신적인 전환입니다. 실제 데이터는 수집하고 주석을 다는 등 번거로운 작업을 해야 확보할 수 있는 반면, 합성 데이터 세트는 머신러닝 엔지니어가 홀로 몇 분 이내에 구성할 수 있으며, 더 빠르고 데이터에 집중한 개발 주기를 가능하게 해줍니다. 속도가 빠르므로 동시에 많은 데이터 세트 배리에이션으로 실험하면서 모델을 향상하는 데이터를 찾을 수 있습니다.

하지만 여전히 데이터 수집은 어려운 과제입니다. 수천 개의 이미지와 주석 대신, 수십 또는 수백 개의 3D 에셋(예: 메시, 텍스처, 애니메이션)을 확보해야 합니다. 합성 데이터를 사용하면 콘텐츠의 요구 사항이 줄지만, 3D 에셋을 확보하려면 창의적인 수집 방법이 필요합니다.

영화 및 비디오 게임 산업에서는 40년 넘도록 이와 같은 콘텐츠 확보 문제가 있었습니다. 따라서 해당 업계에서는 콘텐츠 제작을 위한 신기술과 방대한 콘텐츠 저장소를 개발했으며, 합성 데이터 생성에 활용할 수 있는 부분이 상당히 많습니다.

이번 포스팅에서는 각종 컴퓨터 비전 애플리케이션에 사용되는 3D 콘텐츠를 수집하는 최고의 방법을 소개합니다.

온라인 3D 에셋

3D 콘텐츠를 확보하는 가장 빠르고 저렴한 방법은 온라인에 배포된 기존 콘텐츠를 활용하는 것입니다. Unity 에셋스토어와 같은 온라인 마켓플레이스는 3D 아티스트가 게임, 영화 및 기타 3D 애플리케이션용으로 제작한 콘텐츠를 무료 또는 유료로 제공합니다.

Different examples of asset store assets
Unity 에셋스토어에서 'Chair'를 검색한 결과

에셋은 다양한 3D 모델과 텍스처 배리에이션, 머티리얼, 애니메이션을 포함하는 '팩'의 형태로 제공되는 경우가 많습니다. 이러한 요소는 데이터 세트 생성 시 무작위화하여 각 오브젝트를 대상으로 무한대에 가까운 배리에이션을 만들 수 있습니다. 다양한 아티스트의 콘텐츠를 사용하면 데이터의 폭을 훨씬 넓힐 수 있고 모델의 편향성과 과적합(overfitting)을 줄일 수 있습니다.

온라인 에셋 소스는 '의자', '고양이'와 같이 광범위한 클래스의 오브젝트를 감지해야 하는 작업에서 다양한 콘텐츠가 필요할 때 아주 유용합니다. 모델을 일반화하기 위한 다양성을 확보하려면 모양과 머티리얼, 컬러, 포즈 등에 베리에이션을 주어야 합니다. 

만화와 같은 질감을 가진 에셋 또는 특이한 텍스처와 컬러를 가진 비현실적인 에셋도 모델을 일반화하는 데 도움이 될 수 있습니다. 최근 한 프로젝트에서 매우 사실적인 에셋으로 구성된 소규모 데이터 세트 대신에 Unity 에셋스토어에서 확보한 다양한 3D 모델과 텍스처를 사용하자 모델의 성능이 크게 개선되었으며, 다른 어떤 방법보다 성능이 크게 향상되었습니다.

스캐닝

특정 오브젝트나 제작한 아이템을 감지하기 위한 합성 데이터 세트에는 실제 오브젝트의 정확한 3D 모델이 필요하지만 이를 온라인에서 찾기란 거의 불가능합니다. 3D 스캐닝을 사용하면 이러한 에셋을 직접 만들 수 있습니다.

different grocery store products all available in the asset store
평판 스캐너와 3D 모델링을 사용하여 제작한 SynthDet의 에셋 .

평판 스캐너와 3D 모델링을 사용하여 제작한 SynthDet의 에셋입니다. 여기에서 튜토리얼을 볼 수 있습니다.

3D 스캐닝 기술은 매우 다양하며 오브젝트의 유형과 품질, 예산에 따라 적합한 기술이 따로 있습니다. 다음은 주목할 만한 몇 가지 기술입니다

  • 사진 측량: Agisoft Metashape 또는 유니티의 AR Companion 앱과 같은 사진 측량 툴은 다양한 각도에서 찍은 사진을 사용하여 3D 오브젝트를 합성합니다. 유니티의 사진 측량 페이지에서 이 기술에 대한 자세한 내용을 볼 수 있습니다.

장점: 다양한 크기와 모양의 오브젝트에 적합, 텍스처와 미세한 디테일을 캡처

단점: 조명 조건과 오브젝트 색상에 민감, 다소 번거로움

 

  • 평판 스캐너와 3D 모델링: 평판 스캐너를 사용하여 상자 모양 오브젝트의 각 면을 스캔한 다음 텍스처로 결합하고 표준 3D 저작 툴을 사용하여 직접 3D 메시에 매핑할 수 있습니다. 이 방법은 최근 유니티의 식료품 오브젝트 감지 프로젝트에서 사용되었으며 자세한 내용은 동영상 튜토리얼을 참조하세요.

장점: 경제적이고 매우 정확한 텍스처 확보

단점: 평평하게 만들 수 있는 오브젝트에만 적합, 수작업 필요

 

  • 산업용 3D 스캐너: 레이저 또는 구조광(structured light)을 사용하는 3D 스캔용 특수 기기가 정확도 높은 지오메트리를 제공합니다. 기계 부품과 복잡한 전자 기기를 감지하는 데 이상적인 방법입니다.

장점: 대부분의 오브젝트에서 매우 정확한 지오메트리 확보, 빠른 속도

단점: 높은 비용, 오브젝트 크기 제한

절차적 콘텐츠

스캔된 오브젝트와 온라인 3D 에셋은 일반적으로 실제 오브젝트(예: 특정한 고양이, 의자, 나무결)의 모양을 그대로 반영하지만, 절차적 에셋이라고 하는 또 다른 형태의 콘텐츠는 규칙 기반 알고리즘을 사용하여 무한한 배리에이션을 생성합니다. 절차적 에셋은 스스로의 모양과 형태를 커스터마이징할 수 있는 파라미터를 제공합니다. 이는 합성 데이터에 매우 적합한 특성이며, 다양성을 높이기 위해 각 파라미터를 무작위화할 수 있습니다. 그런 다음 설정을 여러 번 조정하여 모델 성능을 향상시킬 수 있습니다.

절차적 에셋은, 실제 에셋이 형태는 다양하지만 대체적으로 공통된 패턴을 따를 때 유용합니다. 도로, 사람의 얼굴, 천이나 콘크리트 같은 머티리얼이 모두 좋은 예입니다. 마모의 정도, 연령대, 형태, 색상 등의 관련 인자가 무작위화 알고리즘에 파라미터로 빌트인될 수 있습니다. Unity 셰이더 그래프, Adobe Substance 3D, Houdini 등을 이용하면 절차적 에셋을 다양하게 구축할 수 있으며, Unity 에셋스토어에서는 특정한 유형의 콘텐츠에 적합한 몇 가지 절차적 툴을 제공합니다.

Easy roads 3d app that builds procedural roads in Unity
EasyRoads3D를 사용하여 Unity에서 절차적 도로를 빌드할 수 있습니다.

절차적 기술은 합성 데이터용 환경도 생성합니다. 환경 제너레이터는 비구조적이고 고도로 무작위적인 시스템부터 복잡하고 계층적인 시스템까지 다양하며, 시나리오에 맞는 씬을 생성합니다. Unity의 API는 절차적 씬 제너레이터를 작성할 수 있도록 설계되었으며, 일반적으로 Houdini는 보다 구조적인 씬에 사용됩니다.

더 많은 예제를 살펴보고 절차적 콘텐츠를 제작하려면 Unity Learn에서 Houdini & Unity 시작하기셰이더 그래프 소개를 확인하세요.

합성 데이터 사용해 보기

게임 및 영화 산업에서 제공하는 풍부한 동적 3D 콘텐츠를 사용하면 합성 데이터 프로젝트를 신속하게 활용하고 데이터에 대한 반복 작업을 수행할 수 있습니다. Unity Perception 패키지를 사용하면 에셋을 임포트하고 무작위 설정한 후 매우 다양한 데이터 세트를 아주 빠르게 생성할 수 있습니다.

Unity Computer Vision 팀은 합성 데이터를 구축할 때 위에서 언급한 콘텐츠 전략을 모두 사용합니다. 사용자의 구체적인 요구 사항에 부합하는 합성 데이터 세트를 제작하는 방법, 또는 합성 데이터를 활용하는 방법을 더 자세히 알고 싶다면 유니티에 문의하세요.

2021년 9월 8일 산업 분야 | 8 분 소요

Is this article helpful for you?

Thank you for your feedback!