← imai 홈
이상탐지 플랫폼 · 화재 버티컬 · 3D 합성

화재 3D 합성 — 2D가 못한 걸 Isaac relighting이 해내다

"불꽃은 발광 현상이라 평면 크롭 붙이기(cut-paste)로는 부족"이라는 가설을 Isaac Sim으로 검증. 실화재를 3D 씬에 발광 배치하자 2D가 모두 실패한 곳에서 실데이터를 넘었다 — 절차룸 in-domain +9%, 그리고 실 환경(창고) 배경은 미지 도메인 일반화 +19%. 씬 사실성은 정확도가 아니라 일반화를 산다.

01합성 사다리 — 왜 3D였나

089 화재 held-out, YOLOv8n, 3-seed 평균 mAP50. 실데이터 200장 + 각 합성.

real_200 (실데이터만)
0.263
+ cut-paste v1 (2D 크롭 붙이기)
0.227
❌ real 미달
+ 물리 v2 (2D additive 발광)
0.270
marginal
+ Isaac 3D-relit (3D 씬·발광·relight)
0.287
✅ 최고
결론: 평면 cut-paste는 실데이터에 미달(0.227) — 크롭이 씬을 relight 못하는 '스티커'. 손수 2D 발광(v2)은 marginal(0.270). Isaac 3D-relit 합성이 처음으로 실데이터를 확실히 넘었다 — 0.287 (+9%). 불꽃이 발광 현상이라는 물리를 3D 렌더가 반영하면 합성이 검출기를 실제로 개선한다.

02무엇을 렌더했나 — 실화재를 3D 씬에 발광 배치

Isaac Sim 6.0.1 + Replicator. 실화재 RGBA 데칼 → 카메라 향해 빌보드 emissive 카드 + 점광원 → 자동 bbox 라벨.

Isaac 3D relit 화재 합성 샘플
Isaac 3D-relit 합성 샘플(주황 bbox=불꽃, 흰 bbox=연기, 자동 생성). 실화재 텍스처가 3D 룸에서 벽·바닥을 실제로 물들이고 원근·가림·그림자·바닥반사를 가진다 — 평면 cut-paste가 못하는 물리. Replicator bounding_box_2d_tight가 라벨을 자동 생성.
파이프라인(크랙 SDG 뼈대 재사용): sdg_fire.py — 절차적 실내 룸(실 PBR 텍스처) + 데칼 재질 풀(사전생성) + 카메라 빌보드 카드 + treatAsPoint 점광원(씬 relight). 600프레임(불 821·연기 650). imsim-isaac.sh(node52 RTX PRO 6000 Blackwell).

03결과 — in-domain 이득, 그리고 정직한 한계

데이터엔진 arms를 두 held-out(089·058)에서 평가. per-class 포함.

arm089 test불꽃연기058 test
real_2000.2630.2270.2990.094
+ Isaac naive (800)0.2460.2050.2870.108
+ Isaac curated (500)0.2870.2540.3210.070

089 in-domain: CLIP-큐레이션한 Isaac 합성이 불꽃 +12%(0.227→0.254)·연기 +7%(0.299→0.321), 전체 0.287 (+9%). 불·연기 둘 다 개선.

정직한 한계(measure-first):
  • 이득은 in-domain(089) 전용. 058 교차 테스트엔 curated 0.070(↓) — 큐레이션이 089-유사로 좁히며 다양성을 잃어 다른 도메인엔 손해. naive(전량)는 058 0.109(↑)·089 0.246(↓).
  • 씬 배경 도메인 갭이 크다. CLIP 게이트 gap=0.277 (cut-paste 0.169보다 큼). 불꽃 relighting은 맞지만 어두운 절차적 룸 ≠ 089 옥외 현장 — 씬 컨텍스트가 off-domain. 이번 PoC는 절차적 룸을 썼다(058 실스캔 공간 미사용).
다음 스텝(씬 갭 직격): 058이 제공하는 실건물 LiDAR·FBX 3D 스캔 공간(제주호텔·선한병원·이마트…)을 배경으로 교체(sdg_fire.py --scene_usd) → 씬 도메인 갭을 낮춰 in-domain 이득을 더 키우고 교차 전이도 개선 기대. 파이프라인은 씬-agnostic하게 설계됨.

04옵션2 — 렌더-레디 실 환경에서 사실적 화재 합성 (일반화 +19%)

058 raw 스캔이 막혀, 렌더 검증된 정제 USD(NVIDIA 창고)를 배경으로 교체. 파이프라인(--scene_usd)은 그대로.

창고 배경 화재 합성
USD Simple_Warehouse/full_warehouse.usd(36×75×9m) — 실 텍스처 창고(벽·바닥·선반·박스·지게차)에 실화재를 3D 배치+발광 relighting. 실 창고 화재 CCTV에 근접. bbox 자동생성.
arm089 test058 test
real_2000.2630.094
+ 창고 naive (800)0.2690.094
+ 창고 curated (500)0.2710.113
발견 — 씬 사실성은 "일반화"를 산다: 창고 배경 합성은 089 in-domain은 소폭(+3%)이지만, 본 적 없는 실 도메인(058)으로 일반화가 크게 개선(0.113 (+19%) vs real 0.094). 058 불꽃 AP는 naive에서 0.035→0.085(+143%). 실 환경에 grounding된 화재로 학습하면 bare box보다 전이 가능한 특징을 배운다.

절차룸 vs 창고 — 상호보완:

3D 합성 방식089 (in-domain)058 (교차)
절차룸 cur0.287 (+9%)0.070
창고(실 환경) cur0.2710.113 (+19%)

절차룸=in-domain(089) 특화 · 창고=교차도메인(058) 일반화. 실전 배포엔 둘을 섞는 게 최적일 가능성. CLIP 게이트(089 기준)는 창고 gap 0.279≈절차룸 0.277 — 089가 옥외라 실내 씬 사실성이 게이트엔 안 잡히나, 실제 교차 일반화 이득은 arm이 포착(게이트의 089-중심 한계).

제품 함의: 파이프라인이 어떤 렌더-레디 3D 환경(창고·사무실·아파트·병원)에서든 사실적 화재 학습데이터를 자동 생성하고, 그 사실성이 미지 도메인 일반화를 개선. 시나리오별(산업/주거/의료) 화재 데이터를 주문형으로 찍어낼 수 있음.

05058 raw 실스캔 — 왜 막혔나 (정직한 blocked)

씬 갭(절차룸 0.277)을 낮추려 058의 실건물 3D 스캔(광주시청)을 배경으로 교체 시도. measure-first 결과.

058 실스캔 건물 배경 렌더
광주시청 FBX(174×50×24m, 정확 로드)를 배경으로 화재 배치. 그러나 photogrammetry FBX가 텍스처 미바인딩(회색)+거친 LOD(평면)로 렌더 — 실내로 안 읽힘.

파이프라인은 완성했다: FBX 7z 추출 → USD 변환(omni.kit.asset_converter, mpu=1·Z-up·정확 치수) → --scene_usd 실구현(레퍼런스 로드 + BBoxCache 바닥/중심 정렬 + 실내 AABB 배치). 하지만 두 blocker:

  • 텍스처 미바인딩: photogrammetry FBX는 메시 병합 시 지오메트리는 정확하나 재질이 붕괴(텍스처 참조 0개→회색), 병합 안 하면 지오메트리 폭발(63km). 강제 재질 바인딩도 참조 메시엔 미적용.
  • 거친 LOD: LOD_02는 바닥·천장 큰 평면 위주의 shell — 가구·벽 디테일이 없어 실내 공간감이 안 남.

결과: 250프레임 렌더 후 CLIP 도메인 갭 0.289 — 절차룸 0.277보다 오히려 소폭 악화. 전수진단(inspect/tex/mat/uv_check.py): 자산은 온전(1883 subset 바인딩·78 텍스처 존재·UV 정상)인데도 렌더가 회색 → merge USD의 faceVarying UV↔subset 정합/headless RTX 샘플링 심층이슈. 3시도(raw·override·GeomSubset 재바인딩) 동일 벽.

→ 옵션 2가 이 문제를 우회해 성공(§04). raw photogrammetry FBX 자체를 쓰려면 DCC 재저작(블렌더 UV 재언랩+PBR)이 필요 — 스펙 BLENDER_058_HANDOFF.md로 정리해 블렌더 개발자에게 핸드오프(058 한국 실건물 브랜드 버전용).

06맥락 & 재현

NeMo AI 학습 솔루션 · 이상탐지 플랫폼 · 화재 버티컬 · 2026-07-06 · brain 리포트 서버