지하철·지하상가 표지판 인식 실험 리포트

2026-09-24 · SAM 3 세그멘테이션 → OCR 텍스트 DB → 이미지 벡터 DB · 영상 3개 · NVIDIA GeForce RTX 2080 Ti · torch 2.11.0+cu128 · transformers 5.17.0

가능① SAM 3로 천장·벽면·바닥 표지판 텍스트 프롬프트 탐지
3,849탐지 영역 (샘플 프레임 1035개, 4 fps)
497 msSAM 3 프레임당 추론 (프롬프트 3개, fp16, RTX 2080 Ti)
30–36%② 텍스트 DB top-1 (미등록 프레임 → 등록 프레임)
0.949③ 같은 표지판 판별 AUC (DINOV2), 임계값 0.71
43%③ 시뮬레이션: 미등록 프레임 영역이 정답 표지판으로 매칭

0. 결론 요약

주의(오버피팅): 영상이 한 벌씩뿐이라 ②③ 검증은 같은 영상의 짝수 프레임을 등록, 홀수 프레임을 질의로 쓴 동일 영상 내 교차 검증이다. 조명·각도·거리가 거의 같은 인접 프레임이므로 실제 일반화 성능보다 높게 나온다. 다른 날·다른 기기로 찍은 영상이 확보되면 갤러리/질의를 영상 단위로 분리해 다시 측정해야 한다.

1. 실험 환경

항목
GPUNVIDIA GeForce RTX 2080 Ti × 3 (영상 1개당 GPU 1개 병렬)
SAM 3 가중치facebook/sam3는 gated(수동 승인)이라 현재 토큰으로 403. 동일 파일 구성의 비게이트 미러 jetjodh/sam3(HF transformers 포맷, model.safetensors)로 실행. 공식 승인 후 --model facebook/sam3로 교체 가능(코드 변경 없음).
프레임워크transformers 5.17.0 Sam3Model / Sam3Processor, fp16, 이미지 1008×1008 리사이즈
영상영상 1 · 09:04 100.33s; 영상 2 · 09:06 43.4s; 영상 3 · 09:17 114.89s · 원본 1080×2320 세로(회전 메타), 30/120/240 fps → 4 fps 샘플, UI용 720p 30 fps 재인코딩
프롬프트ceiling_sign=“hanging directional sign” · wall_sign=“wall sign” · floor_marking=“floor sign” · presence threshold 0.4, 면적 0.15%~35% 필터, 프롬프트 간 IoU 0.7 NMS
트래킹IoU 0.3 그리디 매칭, 3프레임 갭 허용(간이 트래커) — 트랙 ID는 ②③의 “같은 표지판” 유사 정답(pseudo label)
OCREasyOCR ko+en (CRAFT + korean_g2), GPU, 높이 96px 미만 crop 업스케일
텍스트 검색SQLite + rapidfuzz ratio(0.6) + paraphrase-multilingual-MiniLM-L12-v2 코사인(0.4)
이미지 벡터 DBFAISS IndexFlatIP · DINOv2-base(CLS+평균패치, 1536d) vs CLIP ViT-L/14(768d)

2. ① SAM 3 탐지 결과

영상길이(s)샘플 프레임탐지 영역트랙평균 ms/frame중앙값 ms
영상 1 · 09:04100.334011700667523511
영상 2 · 09:0643.4174492219474465
영상 3 · 09:17114.894601657726494480

오버레이 예시 (파랑=천장 안내판, 노랑=벽면 표지판, 초록=바닥 표식)

20260923_090446

20260923_090645

20260923_091747

관찰

3. ② OCR → 텍스트 DB → 유사도 검색

영상crop텍스트 있음비율텍스트 트랙트랙 내 OCR 일관성질의 수top-1top-3검색 ms
20260923_090446170056933%2160.2319735.0%50.2%0.64
20260923_09064549216634%620.425935.6%52.5%0.2
20260923_091747165765940%2460.2322730.4%48.5%0.75

OCR 평균 19 ms/crop. “같은 표지판” 판정 임계값은 F1 최대 기준 0.60 (F1 0.26).

OCR 예시 (신뢰도 상위, 중복 제거)

나가 Exit
20260923_090446 · conf 1.00
남자전용 Men
20260923_090446 · conf 1.00
12 11
20260923_091747 · conf 1.00
3 14
20260923_091747 · conf 0.99
4 5 타는 곳
20260923_091747 · conf 0.99
THE LUYI
20260923_091747 · conf 0.99
타는 곳
20260923_090446 · conf 0.98
GX A
20260923_090446 · conf 0.98
UN QL
20260923_091747 · conf 0.98
나가는 곳 E
20260923_090446 · conf 0.97
용 화장실 onlytollet
20260923_090446 · conf 0.97
UNI LO
20260923_091747 · conf 0.95

텍스트 DB에 가장 자주 들어간 정규화 문자열 (상위 20)

관찰

4. ③ 이미지 벡터 DB → 같은 표지판 판별

모델차원임베딩 ms/crop검증 AUC최적 임계값F1FPR 1% 임계값TPR@FPR1%양성/음성 평균 유사도
dinov2 ★15361.680.94900.7100.4500.66357.3%0.677 / 0.324
clip7681.670.80570.9300.2430.91328.6%0.848 / 0.734
모델영상갤러리질의트랙top-1top-5검색 ms
dinov2 ★20260923_09044685059541672.4%87.9%0.012
dinov2 ★20260923_09064524015913165.4%91.8%0.318
dinov2 ★20260923_09174784655147366.1%86.0%0.093
clip20260923_09044685059541661.2%82.2%0.006
clip20260923_09064524015913159.8%83.7%0.065
clip20260923_09174784655147354.4%75.3%0.11

실시간 시뮬레이션 결과 (미등록 프레임만, UI의 “인식 시뮬레이션” 화면과 동일 데이터)

영상추론 영역임계값 통과정답 트랙정답률오매칭률OCR 있음텍스트 매칭텍스트 매칭률
20260923_09044685072539946.9%38.4%27518366.5%
20260923_0906452521969437.3%40.5%784861.5%
20260923_09174781165033140.8%39.3%30822071.4%
합계1913157182443.1%39.0%66145168.2%

관찰

5. UI

6. 한계와 다음 단계

산출물: data/out/(detections/ocr/eval JSON, textdb.sqlite, 임베딩 npy, sign_matcher.json), app/public/data/(UI 데이터), pipeline/(01~05 스크립트).