01왜 이게 배포의 급소인가
화재/연기 감시는 상시 실시간 CCTV다 — 그런데 화재 상당수가 야간·저조도에서 발생·확산한다. 실사고 야간 영상은 원천이 희소해 학습셋이 낮에 치우친다. 낮 영상으로만 학습한 검출기가 밤에 눈이 먼다면, 정작 필요한 순간에 못 잡는다. 이 야간 붕괴를 실데이터 없이 메우는 게 데이터엔진(합성증강)의 핵심 가치다.
02현실적 악조건 5종 (물리 근사)
held-out 실화재 테스트(089)에 물리 기반 열화 적용 — 야간(감마darken+센서노이즈+청색틱)·안개(대기산란 I·t+A(1−t))·비(빗스트릭+모션블러)·모션블러·복합.
03결과 — 야간 붕괴와 회복
clean 학습(낮만) vs 악조건 증강 학습. 각 조건 held-out 평가, 3-seed 평균 mAP50.
| 학습 \ 테스트 | 클린 | 야간 | 안개 | 비 | 모션블러 | 복합 |
|---|---|---|---|---|---|---|
| clean (낮만) | 0.263 | 0.047 | 0.275 | 0.302 | 0.248 | 0.156 |
| 악조건 증강 | 0.256 | 0.244 | 0.289 | 0.272 | 0.264 | 0.262 |
−82% 붕괴(0.263→0.047) 를 증강이 +418% 회복(→0.244, 클린의 93%). 복합 악조건도 0.156→0.262. 클린 성능 손실 −3%뿐 — 공짜에 가까운 강건성.
04실제 야간 검출 장면 — 놓침 vs 잡음
같은 야간 화재 프레임에 두 모델을 돌린 결과(자동 검출).
05균열도 같은 패턴 — 그러나 정직한 FP 뉘앙스
같은 악조건 증강 레시피를 균열 dense-seg(교량)에 적용. 통제(동일 레시피 pos_frac 0.4 FP방어, --adverse만 차이).
| 균열 (교량, boundaryF1@2px) | 클린 test | 악조건 test | FP(무균열) |
|---|---|---|---|
| clean 학습 | 0.722 | 0.438 | 0.01 |
| 악조건 증강 | 0.694 | 0.604 | 0.66 |
공통점: 균열도 악조건에 −39% 붕괴(boundaryF1 0.722→0.438), 악조건 증강이 +38% 회복(→0.604, 클린의 84%). 레시피가 두 버티컬에 일반화.
차이(정직): 화재는 야간 회복이 거의 공짜였으나, 균열은 악조건 증강이 FP를 0.01→0.66으로 올린다(pos_frac 방어를 켜도). 얇은 균열은 악조건 노이즈·블러가 균열처럼 보여 오탐을 유발 — 트레이드오프가 태스크 의존적이다. 즉 "회복은 공짜가 아니고, 균열엔 FP 관리(operating point·강한 hard-neg)가 별도로 필요"하다는 게 measure-first가 잡아낸 진실.
06발견→해결: VLM 2차 게이트로 균열 FP를 걷어내다 (부분 성공, 정직)
§05가 남긴 문제(악조건 증강 → 균열 FP 0.66)를 우리 최강 moat(VLM 오탐게이트, 클린서 −84%)로 해결 시도.
| 악조건증강 균열모델 + VLM 2차 게이트 | 값 |
|---|---|
| FP(무균열) — VLM 후 | 47% → 5% (−89%) |
| FP 크롭 VLM 기각율 | 95% (107/113) |
| 크랙 recall(이미지) — 클린 | 77% |
| 크랙 recall(이미지) — 악조건 | 55% |
부분 성공: VLM 게이트가 악조건 노이즈로 생긴 FP를 −89% 제거(47→5%, 오탐크롭 95% 기각) — FP 문제는 해결. 우리 오탐게이트가 조인트/그림자뿐 아니라 악조건 노이즈 오탐도 걷어낸다.
그러나 공짜 아님(정직): 크랙 recall이 클린 77% → 악조건 55%로 떨어진다. 같은 악조건 열화가 검출기뿐 아니라 VLM의 크랙 인식까지 무너뜨리기 때문 — 노이즈·블러·저조도 크롭은 VLM도 크랙 확신을 못 한다. 즉 악조건은 파이프라인 전체(검출+VLM)를 약화시킨다.
전처리로 recall을 되살릴까? — 실측으로 반증(정직): 상류 저조도 개선(CLAHE+적응감마+엣지denoise)을 넣어봤으나 VLM 악조건 recall 55% → 56%(무변), 화재 야간 검출도 0.047→0.077 소폭뿐. 이유: 악조건에 섞인 모션블러가 얇은 균열의 정보 자체를 파괴 — 밝기/대비 보정은 잃은 신호를 복원하지 못한다.
각 레버는 서로 다른 것을 고친다 — 증강=검출 회복(강), VLM=FP 제거(강), 그러나 얇은 결함 + 심한 블러엔 정보손실 한계가 있어 전처리로도 recall이 안 산다(터널 acquisition-limit와 유사). 실용: 화재(선명·저조도)는 증강만으로 거의 회복, 얇은 균열은 "악조건 강건 ↔ recall/FP" 트레이드오프를 operating point로 계약 명시하고 심한 블러는 근본 한계로 인정(딥 저조도/디블러 모델은 별도 검증 대상).
07정직한 분석 & 함의
- 야간이 유일한 killer(화재). 안개(0.275)·비(0.302)·블러(0.248)는 클린과 큰 차이 없음. 진짜 위험은 저조도(야간)이고, 증강이 정확히 그걸 메운다.
- 레시피는 전 버티컬 일반화, 트레이드오프는 태스크 의존. 악조건 증강이 화재·균열 둘 다 악조건 품질을 회복. 단 화재는 거의 공짜(FP 무영향), 균열은 FP 대가(0.01→0.66) — 얇은 결함일수록 악조건 노이즈와 혼동. 배포 시 균열은 FP 관리 병행 필수.
- 데이터엔진의 본령. 실사고 야간/악천후 영상이 없어도 물리 열화로 합성 악조건셋을 무한 생성해 강건성을 산다 — RFP #1 "악조건 강건" 직격.
- VLM 게이트로 FP 루프는 닫힌다(부분). 균열 악조건증강 FP를 VLM이 −89% 제거(47→5%). 단 악조건에선 VLM recall도 77→55% 저하. 전처리로 recall 회복을 시도했으나 반증(55→56%) — 모션블러가 얇은 결함 신호를 파괴해 밝기보정으론 복원 불가. 얇은 결함+심한 악조건엔 정보손실 한계(measure-first가 그은 정직한 경계).
- 영업 함의: "악조건(야간) 강건 SLA"를 FP저감 옆 측정가능 셀링포인트로. 단 얇은 결함류는 "악조건 강건 ↔ FP/recall" 트레이드오프를 operating point로 계약 명시.
재현: adverse_degrade.py · run_fire_adverse.sh · viz_adverse_detect.py(화재) · run_bridge_adverse.sh · pipeline_seg_vlm.py · vlm_classify.py(균열+VLM). 산출 fire_adverse_results.json · bridge_v3adv_eval.json · adv_fp/tp_verdicts.json. 맥락: 3D 합성 · 도메인 격차 · 균열 dense-seg.
NeMo AI 학습 솔루션 · 이상탐지 플랫폼 · 악조건 강건성 · 2026-07-07 · brain 리포트 서버