← imai 홈
이상탐지 플랫폼 · 악조건 강건성 · RFP #1 · 화재+균열

악조건엔 검출이 무너진다 — 데이터엔진이 되살린다 (전 버티컬)

이상탐지는 실시간 CCTV(야간·악천후 다수). 낮 영상만 학습하면 화재는 야간에 −82% 붕괴(0.263→0.047), 균열은 악조건에 −39% 붕괴. 데이터엔진 악조건 합성증강이 둘 다 회복(화재 →0.244 클린의 95%·거의 공짜, 균열 →0.604 클린의 84%). 단 균열은 FP 대가(0.01→0.66) — measure-first가 잡아낸 태스크 의존적 트레이드오프. RFP 최다 수요 직격.

01왜 이게 배포의 급소인가

화재/연기 감시는 상시 실시간 CCTV다 — 그런데 화재 상당수가 야간·저조도에서 발생·확산한다. 실사고 야간 영상은 원천이 희소해 학습셋이 낮에 치우친다. 낮 영상으로만 학습한 검출기가 밤에 눈이 먼다면, 정작 필요한 순간에 못 잡는다. 이 야간 붕괴를 실데이터 없이 메우는 게 데이터엔진(합성증강)의 핵심 가치다.

02현실적 악조건 5종 (물리 근사)

held-out 실화재 테스트(089)에 물리 기반 열화 적용 — 야간(감마darken+센서노이즈+청색틱)·안개(대기산란 I·t+A(1−t))·비(빗스트릭+모션블러)·모션블러·복합.

악조건 5종 비교
같은 화재 프레임의 클린 vs 5개 악조건. 라벨(bbox)은 열화에도 그대로 — 강건성을 순수하게 측정.

03결과 — 야간 붕괴와 회복

clean 학습(낮만) vs 악조건 증강 학습. 각 조건 held-out 평가, 3-seed 평균 mAP50.

학습 \ 테스트클린야간안개모션블러복합
clean (낮만)0.2630.0470.2750.3020.2480.156
악조건 증강0.2560.2440.2890.2720.2640.262
야간 mAP50 — 붕괴 → 회복
clean 학습(낮만) → 야간
0.047
악조건 증강 학습 → 야간
0.244
참고: 클린 테스트 0.263
0.263

−82% 붕괴(0.263→0.047) 를 증강이 +418% 회복(→0.244, 클린의 93%). 복합 악조건도 0.156→0.262. 클린 성능 손실 −3%뿐 — 공짜에 가까운 강건성.

04실제 야간 검출 장면 — 놓침 vs 잡음

같은 야간 화재 프레임에 두 모델을 돌린 결과(자동 검출).

야간 검출 비교
왼쪽(clean 학습, 빨강): 명백한 야간 화재를 0~1건만 검출(놓침). 오른쪽(악조건 증강, 초록): 같은 프레임에서 2~4건 검출 — clean이 놓친 불을 잡는다. 지표(+418%)가 눈으로 확인된다.

05균열도 같은 패턴 — 그러나 정직한 FP 뉘앙스

같은 악조건 증강 레시피를 균열 dense-seg(교량)에 적용. 통제(동일 레시피 pos_frac 0.4 FP방어, --adverse만 차이).

균열 (교량, boundaryF1@2px)클린 test악조건 testFP(무균열)
clean 학습0.7220.4380.01
악조건 증강0.6940.6040.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 지표 회복은 미미(위 수치). 화재처럼 선명한 대상엔 소폭 도움.
정직한 경계 (measure-first)

각 레버는 서로 다른 것을 고친다 — 증강=검출 회복(강), VLM=FP 제거(강), 그러나 얇은 결함 + 심한 블러엔 정보손실 한계가 있어 전처리로도 recall이 안 산다(터널 acquisition-limit와 유사). 실용: 화재(선명·저조도)는 증강만으로 거의 회복, 얇은 균열은 "악조건 강건 ↔ recall/FP" 트레이드오프를 operating point로 계약 명시하고 심한 블러는 근본 한계로 인정(딥 저조도/디블러 모델은 별도 검증 대상).

07정직한 분석 & 함의

재현: 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 리포트 서버