Unity 검색

합성 데이터로 컴퓨터 비전 성능 향상하기

Anime-style image. Several people in shot. A samurai, a business man, a  man with a golden gun, a girl with a bandana wrapped around her head.
Anime-style image. Several people in shot. A samurai, a business man, a  man with a golden gun, a girl with a bandana wrapped around her head.
다루는 주제
공유

Is this article helpful for you?

Thank you for your feedback!

컴퓨터 비전 모델이 주변 환경을 효과적으로 해석하도록 훈련하려면 많은 양의 데이터가 필요하며 리소스 조달에 부담을 줄 수 있습니다. 이 게스트 포스팅을 통해 AI 솔루션 제공업체인 Neural Pocket이 어떻게 합성 데이터를 사용하여 컴퓨터 비전 모델을 구현했는지 알아보세요.

Neural Pocket은 일본 대기업들과 여러 지역 정부에 통합 AI 스마트 시티 솔루션을 제공합니다. 도쿄에 본사를 두고 빠르게 성장하고 있는 스타트업인 Neural Pocket은 항상 기술의 최첨단에 서는 것을 목표로 삼고 있습니다. 

최근 성과를 극대화하기 위해 Neural Pocket은 합성 데이터를 사용하기 시작했으며, 합성 데이터 생성을 위해 Unity Computer Vision을 사용합니다. 개발자는 Unity Computer Vision에 포함된 Perception 패키지를 통해 컴퓨터 비전 모델 훈련용으로 완벽하게 레이블링된 무작위 에셋을 사용하여 다양한 데이터 세트를 빠르고 손쉽게 생성할 수 있습니다. 

Neural Pocket의 시뮬레이션 부문장 로맹 앙제뉴와 시니어 엑스퍼트 겸 테크놀로지 인큐베이션 팀 부문장 알렉스 다니엘스가 작성한 이번 게스트 포스팅에서 자세한 내용을 알아보세요.

컴퓨터 비전 작업에 합성 데이터를 사용해야 하는 이유는 무엇인가요?

컴퓨터 비전 작업에서는 이미지나 동영상의 데이터를 해석하여 무엇이 포함되어 있는지 파악합니다. 전체 이미지를 분류하는 단순한 작업일 수도 있고, 이미지에서 특정 오브젝트의 위치를 감지(예: 사람의 포즈를 감지)하는 등의 보다 복잡한 작업일 수도 있습니다. 작업을 완료하도록 컴퓨터 비전 모델을 훈련하려면 많은 양의 데이터를 수집하고 주석을 달아야 하며, 그 과정에서 시간과 비용이 많이 소요됩니다.

Neural Pocket은 주로 사진 및 동영상 촬영을 통해 실제 세계에서 데이터를 수집하지만 이 방법에는 몇 가지 단점이 있습니다.

  • 사진 촬영: 적절한 순간을 포착하기가 매우 어려울 수 있습니다. 예를 들어, 계절에 따라 서로 다른 기상 조건을 반영하도록 이미지를 구성하는 작업은 취지는 좋으나 촬영하기가 까다롭고 많은 시간이 소요될 수 있습니다. 
  • 동영상 촬영: 실제 세계에서 동영상을 촬영하는 것은 개인정보 문제로 이어질 수 있습니다. 예를 들어, 일본의 도시 내 대부분 지역은 드론을 사용하여 영상을 녹화하는 것이 금지되어 있습니다. 특정 장소에서 배우와 장비를 이용하여 촬영하는 경우 상당한 양의 운송 및 조달 과정을 계획해야 하며 비용도 많이 소모됩니다.

데이터를 수집한 후에도 컴퓨터 비전 모델이 이미지를 정확히 식별하도록 학습하려면 며칠을 들여 각 이미지에 수작업으로 레이블을 지정해야 합니다. 이 과정으로 인해 귀중한 내부 리소스가 낭비되며, 아웃소싱하는 경우에는 추가 비용을 들여야 합니다.

하지만 합성 데이터를 사용하면 짧은 시간 내에 완벽하게 주석이 달린 이미지를 대량으로 생성할 수 있기 때문에 이 문제를 해결할 수 있습니다. 파라미터를 간단하고 신속하게 변경하여 새롭게 개선된 데이터 세트(예: 조명, 오브젝트, 머티리얼, 환경)를 생성할 수 있는데다 위에서 언급한 외부 요인의 영향을 받지 않으므로 데이터 세트 생성 과정이 크게 간소화됩니다.

자체 솔루션의 한계

Neural Pocket은 2020년 8월부터 자체 Unity 프로젝트를 통해 합성 데이터를 만들기 시작했으며, 안전을 위해 움직이는 차량과 사람을 인식하고 추적할 수 있도록 컴퓨터 비전 모델을 훈련하는 것을 목표로 했습니다. 시뮬레이션을 처음부터 제작하는 과정은 자유도가 있긴 하지만, 동시에 상당히 어려우며 생산적이지 않은 작업에 시간이 낭비되기도 합니다.

Neural Pocket은 3주만에 필요한 합성 데이터를 생성할 수 있는 기본 토대를 구현할 수 있었습니다. 여기에는 씬에 오브젝트를 배치하고, 배경과 조명을 비롯한 환경적 요소를 무작위화하고, 데이터를 기록하고 주석을 추가하는 방법이 포함되었습니다. 짧은 시간 내에 괜찮은 성과를 낼 수 있었지만, 컴퓨터 비전 성능을 더욱 개선하는 데 필요한 데이터를 생성하려면 훨씬 더 복잡하고 시간이 많이 소모되는 추가 작업이 필요했습니다.

오브젝트에서 눈으로 확인할 수 있는 부분만을 포함하는 픽셀 퍼펙트 바운딩 박스나, 수없이 많은 포지션의 오브젝트를 기준으로 균형 잡힌 데이터세트를 생성하는 오브젝트 배치 알고리즘과 같은 기능을 구현하는 것은 처음 생각했던 것보다 더욱 까다로웠습니다. 소규모 팀으로 촉박한 일정에 맞춰 작업해야 했기에, Neural Pocket은 프로젝트의 주요 사항에만 집중할 수 있도록 해당 기능을 이미 갖추고 있는 믿을 만한 툴이 필요했습니다.

Unity Computer Vision의 도입

이후 얼마 지나지 않아 Neural Pocket은 Unity Computer VisionPerception 패키지를 사용해보았습니다. 가장 먼저 오브젝트 감지 AI에 사용해 보았으며 곧바로 훌륭한 결과를 얻게 되어 매우 놀랐습니다.

컴퓨터 비전 모델은 도메인의 영향을 많이 받습니다. 즉, 배경, 조명, 기타 환경적 요소의 변화에 민감하게 반응합니다. 이러한 환경적 요소를 기반으로 하여 합성 이미지를 큰 폭으로 무작위화하는 도메인 무작위화라는 기법을 이용하면 강력한 데이터 세트를 생성할 수 있습니다. Perception 패키지를 활용하면 간단한 UI를 통해 시나리오, 무작위화 도구, 태그, 레이블, 스마트 카메라와 같이 커스터마이징 가능한 구성 요소들을 제어하여 도메인 무작위화를 통해 컴퓨터 비전 성능을 개선할 수 있습니다. 이렇게 하면 흐름과 구조를 체계화할 수 있으며 모든 인식 프로젝트에서 상당 부분 재사용이 가능합니다.

Perception 패키지에는 시작에 필요한 모든 기본 툴이 포함되어 있기 때문에 대부분의 경우 커스텀 무작위화를 설계할 필요가 없습니다. 그 결과 Neural Pocket은 Unity 에셋 스토어와 기타 마켓플레이스에서 3D 모델을 확보하고 간단한 드래그 앤 드롭으로 해당 모델을 UI에 통합하는 것에 보다 집중할 수 있게 되었습니다.

Dangerous objects + colourful objects all mixed together in one image
그림 1: 위험한 오브젝트 감지 시뮬레이션 데이터 세트 샘플

이를 잘 보여주는 사례로, 그림 2는 AI가 합성 데이터를 사용한 경우의 성능과 그렇지 않은 경우의 성능을 모두 보여줍니다. 3D 모델을 추가한 것을 제외하고 아무것도 변경하지 않은 Perception 패키지의 기본 구성을 사용한 결과, 목표로 하는 오브젝트에 따라 감지율이 20%에서 60%까지 증가했습니다.

A graph showing the 'object projection rate' vs 'training datasets'
그림 2: 합성 데이터를 추가하기 전과 후의 위험한 오브젝트 감지율

Perception 패키지 고급 사용 사례

Perception 패키지 기본 구성만으로도 컴퓨터 비전 성능을 충분히 개선할 수 있지만, 기존 툴을 기반으로 하여 더 많은 기능을 추가하면 최대한 큰 규모의 도메인을 다룰 수 있습니다. Perception 패키지는 오픈 소스이기 때문에 내부 로직을 변경하는 것도 가능합니다. 

커스텀 무작위화의 좋은 예시 중 하나는 Neural Pocket이 신용 카드 번호와 같은 기밀 정보를 보호하기 위해 스마트폰으로 사진을 찍는 사람들을 감지하도록 컴퓨터 비전을 훈련한 것입니다. 스마트폰을 인식하도록 하는 것은 다음과 같은 이유로 인해 굉장히 힘든 작업입니다.

  • 다양한 핸드폰 기종
  • 수없이 많은 휴대전화 케이스 디자인
  • 여러 방식으로 손가락에 의해 부분적으로 가려짐
  • 많은 오브젝트가 스마트폰으로 오인될 수 있음

이러한 기술적 난관을 해결하기 위해 다양한 기본 구성요소를 결합하여 시장을 대표하는 사실적인 휴대전화를 생성하는 논리적인 방법을 설계했습니다. 로고나 카메라와 같이 눈에 보이는 휴대전화의 구성 요소를 기본 요소와 분리하여 휴대전화의 3D 모델을 제작했습니다. 그리고 앵커 시스템을 사용하여 이러한 요소를 여러 휴대전화 간에 맞바꾸어 새로운 조합을 만들었습니다.

휴대전화 케이스를 고려하기 위해 Google Images API의 모든 이미지를 휴대전화 케이스에 매핑될 수 있도록 하고 렌즈나 브랜드 로고를 가리지 않고 케이스에 딱 들어맞도록 텍스처 매핑을 수행했습니다.

사진을 찍으려면 휴대전화를 들고 있어야 합니다. 그래서 크기에 관계없이 어떤 휴대전화든 여러 가지 포즈로 들 수 있는 모듈형 손을 제작했으며 마무리로 스킨 배리에이션을 더했습니다.

마지막으로, 컴퓨터 비전 모델의 관점에서는 많은 오브젝트가 스마트폰처럼 보일 수 있기 때문에 주석을 달지 않은 트랩 오브젝트, 즉 스마트폰과 비슷한 형태와 스타일을 갖추고 있지만 감지되지 않아야 하는 오브젝트도 만들었습니다. 이를 통해 “손에 들고 있는 직사각형 오브젝트라고 해서 모두 휴대전화는 아니다”라는 인식을 모델에 심어 주었습니다. 이러한 오브젝트를 도입하자 AI가 예측한 1종 오류의 수가 크게 줄어들었습니다.

최신 반복 작업에서는 합성 데이터를 추가한 후 정확도가 4% 변화했습니다(그림 3 참조). 휴대전화 감지 프로그램은 일련의 동영상 프레임을 거쳐 실행되기 때문에, 정적 이미지에서 정확도가 4% 증가한 것은 전체 휴대전화 감지율을 크게 높일 수 있습니다.

Figure 3: Smartphone detection rate before and after adding synthetic data (left) and image ratios (right)
그림 3: 합성 데이터를 추가하기 전과 후의 스마트폰 감지율(왼쪽)과 이미지 비율(오른쪽)
Trap objects: coffee cups, TV Remotes, ID Cards, Water Bottles, Drink Bottles
그림 4: 트랩 오브젝트의 예시
Figure 5: Synthetic data generation for smartphone detection
그림 5: 스마트폰 감지를 위한 합성 데이터 생성
Figure 6: Our smartphone randomization system

Unity Computer Vision이 비즈니스에 미친 영향

일반적으로 실제 세계 데이터를 기반으로 모델을 훈련할 경우 수많은 반복 작업이 필요하며, 보통 30번의 훈련 주기를 거칩니다. 각 주기에는 데이터 수집, 주석 추가, 훈련 및 평가가 필요하며, 주기당 평균적으로 1주의 시간과 프로젝트에 따라 2,000달러에서 5,000달러의 비용이 소모됩니다. 그러므로 주기를 30번 반복하면 정식으로 제작에 사용할 수 있는 모델을 만드는 데 4~6개월의 시간과 60,000~150,000달러에 이르는 비용이 발생하게 됩니다.

반면 Perception 패키지를 통해 제작한 합성 데이터를 사용하고 단 한 번의 실제 세계 훈련 주기(5,000달러)를 거치면 1,750달러의 추가 비용으로 1주만에 더 나은 모델을 만들 수 있었으며, 시간과 비용이 모두 95%나 절약되었습니다. 

A description of time and money saved from synthetic data
그림 7: Unity Computer Vision을 사용하여 개발 시간과 비용을 약 95% 절약

Perception 패키지가 제공하는 데이터의 배리에이션이 증가함에 따라 실제 세계에서 데이터를 수집할 필요성은 줄어듭니다. 컴퓨터 비전 모델의 성능 또한 향상되어 더 높은 품질의 제품을 제작할 수 있게 되었습니다. 이는 조직 내부뿐만 아니라 파트너사에도 큰 유익이 됩니다.

시뮬레이션을 사용하여 비용을 크게 절약한 덕분에 이제 시뮬레이션의 이점을 고려하여 어떤 프로젝트나 제품을 상업적으로 추진할지 결정할 수 있습니다. 이는 본질적으로 Neural Pocket이 동시에 수행할 수 있는 프로젝트의 양을 늘려 비용 절감과 판매량 증가를 동시에 달성할 수 있게 되었습니다.

향후 계획

Neural Pocket의 Unity Computer Vision Perception 패키지 사용 이후, 주기적인 업데이트를 통해 더 많은 무작위화와 직관적인 UI를 지원하고 데이터 기록의 자유도를 높이는 새로운 기능이 추가되었습니다. 최근 버전 업데이트를 통해 Perception 패키지는 바운딩 박스, 사람 포즈 추정 데이터, 기타 커스텀 3D 포인트 데이터를 저장할 수 있게 되었습니다.

이를 가장 잘 활용하고 있는 Neural Pocket의 프로젝트 중 하나로 스마트 팩토리에서 골판지 상자를 분석할 수 있도록 하기 위해 개발 중인 컴퓨터 비전 모델을 꼽을 수 있습니다. 시뮬레이션을 할 때 흠집이 나 있거나 손상되어 있는 등 골판지 상자에 발생할 수 있는 모든 상태를 고려해야 하며 표면에 있는 레이블과 로고 또한 인식해야 합니다. 

이 프로젝트의 경우 Neural Pocket은 패키지와 통합하는 과정에 신경 쓸 필요 없이 시간적인 여유를 갖고 복잡한 셰이더를 개발하고 오브젝트의 모든 요소를 무작위화할 수 있습니다.

Screenshot of the Unity editor where shader-based cardboard boxes are being edited
그림 8: 스마트 팩토리에 사용되는 셰이더 기반 골판지 무작위화 도구

Unity Computer Vision Perception 패키지는 사용자에게 필요한 기능을 중심으로 활발하게 개발되고 있으므로, 해당 패키지가 계속해서 발전하여 인식 작업의 레퍼런스 역할뿐 아니라 Neural Pocket에서 진행하는 인식 프로젝트의 시작점이 될 것으로 기대합니다.

***

이번 게스트 포스팅에 참여해 주신 Neural Pocket의 로맹과 알렉스에게 감사의 말씀을 전합니다. 더 자세한 정보는 아래에서 확인하시기 바랍니다.

Is this article helpful for you?

Thank you for your feedback!

다루는 주제
관련 게시물