2023년 저는 반품 창고와 함께 일했습니다. 검수 라인에 손상된 골판지 상자를 잡아내는 비전 시스템을 도입하려는 프로젝트였습니다. 계산은 단순했습니다. 고객에게 손상된 상자 하나가 배송되면 클레임에 반품 운송비가 더해졌습니다. 그 비용이면 산업용 카메라 몇 대를 살 수 있었습니다. 프로젝트는 모든 심의를 순조롭게 통과했지만, 아무도 예상하지 못한 벽에 막혔습니다. 알고리즘이 아니었습니다. 카메라 스펙도 아니었습니다. 학습 데이터를 모을 수 없었던 겁니다.

수개월을 기다린 끝에 확보한 실제 손상 상자 사진은 몇십 장에 불과했습니다. 더 나쁜 건, 그 사진들이 거의 똑같았다는 겁니다. 같은 찌그러진 모서리, 같은 두 대의 컨베이어, 같은 천장 조명. 그래도 모델을 학습시켰습니다. 실제 가동 첫 주, 모델은 멀쩡한 골판지 상자를 손상품으로 잘못 판정했고, 오알람이 쌓이다가 결국 작업자들이 알람을 꺼 버렸습니다. 그 프로젝트에서 배운 규칙을 지금도 씁니다. 비전 프로젝트 첫날에는 카메라를 고르기 전에 데이터가 어디서 오는지 먼저 물으라는 겁니다.

왜 결함은 촬영을 거부하는가

불편한 진실부터 시작하겠습니다. 손상, 누액, 라벨 오부착, 들뜬 테이프. 잘 운영되는 창고에서 이들은 설계상 드문 사건입니다. 대량의 검수 라인은 하루에 수만 개의 물량을 처리하면서도 손상률을 1% 미만의 낮은 수준으로 유지합니다. "손상" 사진 수천 장을 모으려면 컨베이어 옆에서 수개월을 진을 쳐야 하고, 수집 중간에 계절이 바뀌거나 천장 조명을 교체하거나 상자 공급업체를 바꾸면 데이터 분포가 틀어집니다.

사진을 겨우 모았다 해도 라벨링은 밑 빠진 독입니다. 손상에는 정답이 없습니다. 모서리가 얼마나 찌그러져야 손상으로 치는 겁니까? 2밀리미터 들뜬 테이프는 상자를 탈락시킵니까? 세 명의 라벨러는 같은 이미지를 세 가지 방식으로 주석을 답니다. 그리고 실제 촬영의 조용한 킬러가 있습니다. 장면 커버리지입니다. 조명, 카메라 각도, 벨트 속도, 상자의 낡은 정도. 조합은 무궁무진합니다. 여러분의 사진이 말하는 것은 언제나 "지난 분기의 이 스테이션"이고, 모델은 가동되는 순간 향수병에 걸릴 겁니다.

실제 데이터셋이 마침내 충분히 커졌을 때쯤이면 프로젝트 기간은 보통 이미 끝났습니다. 이것이 창고 비전의 죽음의 루프입니다. 모델이 가장 필요한 곳이 정확히 데이터를 만들 수 없는 곳입니다.

데이터를 제조하는 세 가지 방법

실제 결함이 여러분에게 오지 않는다면 직접 만들면 됩니다. 실제로 먹히는 접근법은 세 가지이고, 각각 성격이 다릅니다.

첫 번째는 3D 시뮬레이션 렌더링입니다. 상자를 3D로 모델링하고, 찌그러짐 깊이, 찢김 위치, 얼룩 패턴을 스크립트로 제어한 뒤, 카메라 위치, 조명, 배경을 마음껏 랜덤화합니다. 렌더링된 이미지는 모두 무료 주석이 딸려 나옵니다. 렌더러가 신의 시점으로 장면을 보기 때문에 바운딩 박스, 세그멘테이션 마스크, 깊이 맵이 장면 그래프에서 바로 나오고 라벨링 비용은 제로입니다. 도구는 성숙해 있습니다. 2019년 독일항공우주센터 DLR의 Denninger와 동료들이 오픈소스로 공개한 BlenderProc(arXiv:1911.01911). 포토리얼리스틱 렌더링이 sim-to-real 간극을 줄인다는 아이디어에 기반합니다. NVIDIA의 Omniverse Replicator. 외관 검사와 로보틱스를 위한 라벨링된 합성 데이터를 대규모로 생성하는 것이 명시된 목적입니다. 그리고 Unity의 Perception 패키지. 정답 주석이 달린 합성 데이터셋을 만들기 위해 특별히 설계되었습니다.

두 번째 접근법은 도메인 랜덤화이고, 그 논리는 거꾸로 갑니다. 리얼리즘을 좇지 말고 혼돈을 좇으라는 겁니다. 2017년 Tobin과 동료들의 창시 논문(arXiv:1703.06907)은 텍스처, 조명, 카메라 위치를 너무 공격적으로 랜덤화해서 현실 세계가 그저 또 하나의 랜덤 변형처럼 보이기 시작했습니다. 그들의 모델은 실제 장면에서 물체를 1.5센티미터 정밀도로 위치를 찾았습니다. 제 현장 경험으로 보면, 배경이 고정된 컨베이어 장면이 이 트릭에 이상적입니다. 시뮬레이션이 현실처럼 보일 필요가 없고, 다양하게 보이면 되기 때문입니다.

세 번째 경로는 생성형 모델입니다. 손에 있는 실제 손상 사진 몇십 장을 GAN이나 확산 모델에 넣어 더 많은 변형을 꿈꾸게 하는 겁니다. 이 방법은 의심스럽습니다. 생성형 모델은 완전한 확신으로 환각을 일으켜 물리 법칙을 위반하는 손상 패턴을 지어냅니다. 그런 환상으로 학습한 모델은 가짜 특징을 배우고 결국 현장에서 실패합니다. 제 결론은 이렇습니다. 생성형 모델은 데이터 증강의 조수로는 괜찮습니다. 밝기 변화, 배경 교체 같은 용도로요. 하지만 무에서 새로운 결함 카테고리를 지어내라고 시키지는 마세요.

시뮬레이션은 만병통치약이 아니다

창고에서 촬영한 손상된 골판지 상자의 실제 사진과 그 3D 렌더링 합성 데이터의 비교

위의 이미지를 보십시오. 창고에서 촬영한 실제 손상 상자와 그 3D 렌더링 쌍둥이입니다. 여러분의 눈이 간극을 알아챌 수 있다면, 모델은 열 배는 더 크게 느낍니다.

sim-to-real 간극은 실재합니다. 렌더링된 조명이 아무리 설득력 있어도 시뮬레이션은 센서 노이즈, 렌즈 왜곡, 최고 속도로 달리는 벨트의 모션 블러를 일상적으로 빼먹습니다. 더 교묘한 함정은 이겁니다. 합성 결함은 너무 깨끗하고 너무 교과서적이어 보이지만, 실제 손상은 더럽고, 무작위적이고, 비합리적입니다. 깨끗한 데이터로 배운 결정 경계는 현실 세계의 진흙을 만나는 순간 무너집니다.

해결책은 한 단어입니다. 하이브리드입니다. 결함 형태를 충분히 보여주기 위해 합성 데이터로 학습해 커버리지를 확보하고, 결정 경계를 현실로 되돌리기 위해 실제 데이터로 캘리브레이션합니다. 그 다음 루프를 닫습니다. 현장의 오탐과 미탐을 학습 세트에 계속 피드백하는 겁니다. 합성 데이터는 0에서 1로, 실제 데이터는 "돌아가는"에서 "좋은"으로 이끕니다. 둘 다 서로를 대신할 수 없습니다.

합성 데이터를 건너뛰어야 할 때

합성 데이터는 강력하지만, 어떤 작업은 평범한 카메라로 더 빠릅니다.

결함을 쉽게 연출할 수 있을 때는 시뮬레이션을 건너뛰십시오. 라벨 오부착 상자가 그 예입니다. 라벨을 한 묶음 인쇄해서 붙이면, 원하는 각도와 조명으로 오후 한나절에 수백 장을 찍을 수 있습니다. 3D 아티스트가 장면을 만드는 데 쓰는 시간은 촬영 세션 세 번 분에 해당합니다.

팀에 3D 파이프라인을 다룰 줄 아는 사람이 없을 때도 건너뛰십시오. 모델링, 머티리얼, 라이팅, 렌더링 파이프라인. 하나하나가 독립된 장인의 영역입니다. 외주 모델링 견적은 촬영+라벨링 비용을 일상적으로 웃돌고, 두세 번의 수정 라운드를 거치면 프로젝트는 죽습니다.

마지막으로 비용 계산을 하십시오. 실제 촬영은 선형 비용입니다. 사진 하나 더, 주석 하나 더, 1달러 더. 시뮬레이션은 고정 비용입니다. 비싼 건 장면을 만드는 부분이고, 그 뒤 추가 이미지는 거의 공짜입니다. 판단 규칙은 명확합니다. 필요한 양이 많고 결함이 드물수록 합성 데이터가 이깁니다. 양이 적고 연출이 쉬우면 카메라를 들고 찍으십시오.

내일 아침을 위한 체크리스트

내일 창고 비전 프로젝트를 시작한다면, 다음을 순서대로, 단계를 건너뛰지 말고 하십시오.

  1. 먼저 샘플을 세십시오. 탐지해야 할 결함 클래스를 모두 나열하고, 각 클래스별로 보유한 실제 사진을 셉니다. 검증 세트를 채우지 못하는 클래스는 전부 "합성 데이터 필수" 열로 직행시킵니다.
  2. 먼저 카메라를 설치하십시오. 최종 배치 위치에 달고 일주일 돌리십시오. 실제 데이터 흐름을 지금 비축하십시오. 나중에 캘리브레이션에 쓸 자본입니다.
  3. 먼저 도구를 돌려보십시오. GPU 박스를 구해 BlenderProc 공식 예제를 처음부터 끝까지 실행하고, 자체 주석이 달린 이미지의 첫 배치를 렌더링하십시오. 이게 안 돌아가면 자체 시뮬레이션 파이프라인을 만들 준비가 안 된 겁니다.
  4. 먼저 비교 실험을 하십시오. 합성 데이터 사전 학습+실제 데이터 미세 조정으로 작은 모델 하나, 실제 데이터만으로 하나를 학습시키십시오. 오탐률과 미탐률을 비교하고 숫자가 결정하게 하십시오.
  5. 규모 이야기는 마지막에 하십시오. 비교 실험에서 합성이 이기면 풀 사이즈 시뮬레이션 장면에 투자하십시오. 지면 촬영으로 돌아가서 도구와 싸우지 마십시오.

제 결론은 직설적입니다. 합성 데이터는 만병통치약이 아니지만, 창고 비전에서 가장 과소평가된 지렛대입니다. 잘 쓰면 "데이터를 기다리는 시간"을 수개월에서 수주로 압축합니다. 잘못 쓰면 비싼 장난감입니다. 둘을 가르는 것은 기술에 대한 믿음이 아니라, 여러분 책상 위에 놓인 비교 실험입니다.

영어판 번역본입니다. 내용이 다를 경우 영어판을 우선합니다.