Search Unity

합성 데이터를 이용하면 머신러닝 모델을 훈련하기 위한 레이블링된 데이터를 보다 쉽게 얻을 수 있습니다. 이번 포스팅은 합성 데이터에 대한 두 번째 파트이며 오브젝트 감지에 대한 구체적인 사례와 함께 합성 데이터 세트 생성과 분석에 사용할 수 있는 툴을 소개합니다.

합성 데이터에 대한 첫 번째 블로그 포스팅에서는 컴퓨터 비전 작업을 수행하는 머신러닝 모델을 훈련하기 위해 다량의 레이블링된 이미지를 수집할 때의 어려움에 대해 살펴보았습니다. 또한 오브젝트 감지 등의 작업에 합성 데이터의 효용성을 보여주는 Google Cloud AI와 OpenAI와 같은 기관의 최신 연구도 살펴보았습니다.

하지만 합성 데이터를 도입하여 ML 모델을 훈련할 수 있는 데이터 세트를 제작하기 위해서는 여러 중간 단계를 거쳐야 합니다. 이 과정에서 개발자들은 공통적인 문제에 직면하게 되고, 대체로 머신러닝 모델을 훈련하기 위해 품질이 떨어지는 일회성 커스텀 솔루션을 작성하게 됩니다. 이번 포스팅에서는 여러 불필요한 단계를 거치지 않고도 고품질 합성 데이터 세트를 손쉽게 생성하고 분석할 수 있는 Unity Perception 패키지와 Dataset Insights에 대해 소개합니다.

Unity Perception 툴로 합성 데이터 빠르게 생성하기

Unity Perception 패키지

Unity Perception 패키지로 캡처한 RGB, 2D 바운딩 박스, 메트릭스

Unity Perception 패키지를 이용하면 합성 데이터 세트를 생성하는 새로운 워크플로를 Unity에 구현할 수 있으며 유니버설 렌더 파이프라인 및 고해상도 렌더 파이프라인도 활용할 수 있습니다. Unity Perception의 첫 번째 릴리스에서는 데이터 세트를 캡처하는 툴과 오브젝트 레이블링, 레이블러, 이미지 캡처, 커스텀 메트릭스라는 4가지 주요 기능을 제공합니다. 또한 간편한 인터페이스를 통해 오브젝트 레이블 연관성을 입력하면 자동으로 정보를 불러와 레이블러에 전달됩니다. 레이블러는 이 오브젝트 정보를 이용하여 2D 바운딩 박스나 시멘틱 세그멘테이션 마스크와 같은 실측 데이터를 생성합니다. 생성된 실측 데이터는 관련 메트릭스와 함께 JSON 파일로 캡처됩니다.

향후 릴리스에서는 다른 일반적인 컴퓨터 비전 작업을 지원하기 위해 인스턴스 세그멘테이션과 같은 추가 레이블러, 씬 생성 툴, 도메인 무작위화(domain randomization)에 사용할 대량의 파라미터 세트 구성 및 관리 기능, 클라우드를 통한 확장 기능을 추가할 계획입니다.

Dataset Insights

머신러닝 전문가의 주요 업무는 레이블링된 데이터를 연구하고 분석하는 것입니다. 하지만 합성 데이터로 작업할 경우, 클라우드 기반의 시뮬레이션 실행을 통해 수만 개의 이미지가 생성되어 데이터 세트 규모가 순식간에 커질 수 있습니다. 유니티에서는 Python 패키지인 Dataset Insights를 제공하여 간편하고 효율적으로 통계를 계산하고, 대규모 합성 데이터 세트에서 필요한 정보를 추출할 수 있도록 지원합니다. 로컬 또는 유니티의 관리형 클라우드 서비스에 프레임별로 익스포트된 메트릭스를 사용하여 전체 데이터 세트를 대상으로 집계한 통계를 시각화할 수 있습니다.

다음 섹션에서는 식료품을 감지하고 레이블링하는 오브젝트 감지 모델을 훈련하기 위해 Unity Perception 패키지와 Dataset Insights를 사용하여 합성 데이터 세트를 생성한 방법을 살펴보겠습니다. 두 개 툴 모두 범용성을 갖추어 다른 환경 또는 컴퓨터 비전 작업으로 확장 가능하도록 설계되었으며, 장기적으로는 더 많은 머신러닝 전문가들이 합성 데이터를 도입하여 다양한 문제를 해결할 수 있도록 지원하는 것을 목표로 합니다.

3D 에셋 생성

최근 Google Cloud AI가 진행한 연구에서는 시리얼 상자, 종이 타월 등 상점에서 쉽게 찾아볼 수 있는 식료품 64가지를 이용하여 합성 데이터로만 훈련한 오브젝트 감지 모델의 효과를 입증했습니다. 유니티는 이 연구로부터 아이디어를 얻어 크기, 모양, 텍스처 다양성 면에서 동일하거나 유사한 제품을 동일한 수량으로 준비했습니다.

그런 다음 DCC(디지털 콘텐츠 제작) 툴, 스캔된 레이블, 사진 측량법을 활용하여 해당 식료품들의 3D 에셋 라이브러리를 제작했습니다. 또한 큐브, 스피어, 실린더 등 간단한 프리미티브에 매핑된 실제 세계 이미지를 활용하여 배경과 오클루전 에셋도 제작했습니다. 모든 식료품에는 Unity 에디터에서 유니버설 렌더링 파이프라인의 셰이더 그래프(Shadergraph)를 통해 생성한 커스텀 셰이더가 활용되었습니다.

제작

복잡도를 추가하기 위해 크기와 텍스처가 다양한 배경 에셋과 기타 요소가 있을 때 3D 에셋이 어떻게 배치될지 정의했습니다. 다양한 배경이 포함된 데이터 세트에 머신러닝 모델을 훈련시키면 실제 세계에서의 여러 변수에 보다 효과적으로 대응할 수 있습니다.

다양한 에셋의 배치를 보여주는 Unity 에디터의 씬 뷰. 왼쪽부터 오클루전 오브젝트, 식료품 3D 에셋, 배경 에셋

각 렌더 루프에서는 조명, 오브젝트 색깔, 블러, 노이즈가 무작위로 조합되고, 전경, 배경, 오클루전 오브젝트 또한 무작위로 배치됩니다. Perception 패키지는 아래와 같이 데이터 세트의 각 이미지에 대해 RGB 이미지, 오브젝트 바운딩 박스, 기타 무작위화 파라미터를 캡처합니다.

Unity Perception 패키지에서 생성한 샘플 주석 출력

 

합성 데이터 세트에서 샘플링한 레이블링된 이미지

탐색적 데이터 분석을 위한 Dataset Insights

대규모 합성 데이터 세트의 경우, 이미지를 일일이 검사하여 ML 모델의 성능을 저하시킬 수 있는 편향, 누락된 오브젝트 또는 아티팩트, 의도되지 않은 배치 패턴, 자세 등과 같은 예외 사항을 감지하는 것이 불가능합니다.

이러한 문제를 해결하기 위해 이전에 생성된 오브젝트의 데이터 세트를 Dataset Insights Python 패키지에 입력하여 통계를 계산하고 ML 모델을 훈련한 결과, 유니티의 이미지 데이터가 오브젝트 감지 모델을 훈련하기에 매우 효과적인 것으로 입증되었습니다. 데이터 세트에 대해 생성된 요약 통계 정보 중 일부는 아래와 같습니다.

데이터 세트에 균일하게 분포된 오브젝트를 보여주는 Dataset Insights 차트. 이는 모델이 특정 제품을 더 선호하거나 무시하지 않는다는 사실을 보여줍니다.

이번 테스트가 진행되는 동안, 한 프레임에 몇몇 오브젝트가 여러 번 나타나는 이례적인 상황이 발생했습니다. 이 문제는 이미지 프레임 전반의 오브젝트 수를 시각화한 차트를 통해 확인되었습니다. 문제를 발견 후 신속하게 해결하여 관심 대상인 오브젝트가 데이터 세트에서 균일하게 분포되도록 함으로써 감지 확률을 동일하게 할 수 있었습니다.

데이터 세트 내 예시별 오브젝트 수의 분포

물론 데이터 세트 전반에서 오브젝트가 균일하게 분포되면 좋겠지만, ML 모델이 이미지에 존재하는 관심 대상 오브젝트 수의 적고 많음에 관계없이 여러 오브젝트를 감지할 수 있을 거라고 생각합니다. 위 차트는 생성된 데이터 세트의 각 프레임에 있는 레이블링된 오브젝트의 수가 프레임당 7개의 오브젝트를 중심으로 하는 정규 분포의 형태를 나타내고 있음을 보여줍니다.

 

이 그림은 다양한 광원 포지션을 시각화한 것입니다. 각 점은 관심 대상 오브젝트를 기준으로 한 광원의 상대적 위치를 나타냅니다. 실제 세계의 조명 상태를 나타내기 위해 씬 광원의 방향과 색상도 다양하게 했습니다. 위 그림에서 볼 수 있듯이, 데이터 세트 전반에서 캡처된 이미지의 조명 상태와 그림자를 다양하게 하기 위해 광원을 여러 위치에 배치했습니다.

Unity Simulation으로 합성 데이터 세트 확장

다수의 가능한 순열로 시뮬레이션을 실행하기 위해, Unity 프로젝트를 실행하고 현대적인 컴퓨터 비전 모델을 훈련하는 데 필요한 완전한 데이터 세트를 생성할 수 있는 관리형 클라우드 서비스인 Unity Simulation이 사용되었습니다.

이 블로그 시리즈의 마지막 편에서는 Unity Simulation을 이용하여 대규모 데이터 세트를 생성하고, 합성 데이터를 이용하여 머신러닝 모델을 훈련하고 실제 데이터와 비교하여 평가하는 방법뿐 아니라, 합성 데이터의 경제성과 연구를 통해 알게 된 핵심 내용에 대해 자세히 알아보겠습니다.

다음 단계

Perception 툴을 무료로 사용하려면  Github의 유니티 툴 및 오브젝트 감지 예시 페이지를 방문하세요.

합성 데이터 세트를 확장하고 싶다면 유니티의 새로운 서비스인 Unity Simulation(베타)을 사용해 보세요.

질문이 있거나 의견을 공유하고 싶다면 아래에 댓글을 남기거나 perception@unity3d.com으로 문의해 주시기 바랍니다.

모든 상표는 소유주의 자산입니다.

4 replies on “Unity Perception: ML 모델 훈련용 합성 데이터 대규모로 생성 및 분석하기”

Everything is becoming more and more à la carte and behind a paywall these days with Unity.
I think I’m going to stop my subscription for a while and see where it takes us.
Apart from any production, all these long-awaited new features and developments (e.g., M.A.R.S.) should at least be included in the subscription, especially for smaller studios like ours which are suffering a major setback following the COVID crisis.

Don’t forget that during the containment, when it was possible, some of your faithful users tried Unreal Engine or Unigine. And for my part, I found the business model very interesting and more flexible.
I think it would be nice from your part to get the same inspiration. The more we succeed the more you succeed.

Thanks for the feedback. The Unity perception tools we released here are free. You can use them with your standard Unity setup and easily generate as many images as you want with no limits. However, to execute simulations at scale with faster turnaround, we offer the Unity Simulation service which may incur cloud costs.

That’s just silly, how would they provide you such an expensive training service in the cloud without charging you for your usage..

Comments are closed.