docs: 집합 조정(M2) 보류 기록 + 반입 목록 실측
M2 는 교통시설물을 가르는 안까지 만들고 보류했다. 16장 실측으로
structure 1,079 -> utility pole 608 / streetlight pole 372 /
road sign 358 / culvert 9, fence 702 -> guardrail 668 / fence 46 /
roadside barrier 17 로 갈라지는 것을 확인했다 (라벨 14 -> 19종).
사용자 지시로 v4 로 되돌렸고 v5 는 보류 표시와 함께 남긴다.
culvert 9개, roadside barrier 17개는 16장 기준 표본이 부족하다.
정정: "집합 없는 검출은 버려진다"는 앞선 판단은 틀렸다.
merge_labels.py 의 merge_by_group 은 집합에 없는 라벨을 passthrough 로
그대로 통과시킨다. 16장 병합 결과에 orange traffic cone 114 개와
yellow safety cone 6 개가 독립 클래스로 살아 있다. [cone] 으로 묶으면
오히려 나란히 선 콘이 gap 2px 에서 한 덩어리가 되어 개수를 잃는다.
envsetting.md 에 반입 목록을 실측 크기로 정리했다:
git 으로 오는 것 (복사 금지)
손으로 복사할 것 체크포인트 3.3GB / BPE 1.4MB / JPEG 69장 1.2GB
복사하면 안 되는 것 venv(절대경로), output/, theater 뷰어 JPEG 55MB
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@
docs: 확정 설정 16장 검증 + 4090 이관 지시서
16장 실측 무라벨(conf 0.10): 0.5% ~ 6.4%, 평균 3.44%.
15/16 장이 목표 5% 이하. 같은 16장 기준선 평균은 19.9%.
소요 466~907초/장 (평균 585초).
예상이 틀린 곳: 물 많은 사진이 위험할 것으로 봤으나 0423 이 0.5% 로
16장 중 최저였다. water surface / reservoir 프롬프트가 검출 0 이어도
다른 프롬프트가 그 면적을 덮는다.
유일한 5% 초과인 0581(6.4%)은 큰 구멍이 없다. 구멍 1,554개 중 최대가
0.83%, 상위 6개 합이 2.15% 뿐이고 나머지 4.25%가 작은 조각 1,548개로
흩어져 있다. 자재 야적장·건물 밀집 구역이라 폴리곤이 1,079개 나왔는데도
객체 사이 얇은 틈이 누적된 것이다. 0654 유형(큰 필지 통째 누락)과 다르고
프롬프트로는 못 줄인다.
docs/envsetting.md: RTX 4090 PC 로 옮기는 작업 지시 프롬프트.
git 이 안 실어 나르는 3가지(체크포인트, 원본 JPEG, venv)와
브랜치 체크아웃 누락 시 증상을 명시했다.
docs/pilot/theater_v4/ (뷰어 JPEG 55MB)는 커밋하지 않았다.
tools/make_viewer.py 로 다시 구울 수 있다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@
feat: SAM 3.1 검출 커버리지 튜닝 — 무라벨 16% → 3.6%
2D 검출 단계에서 미검출을 없애는 작업. 지표는 "무라벨 화면%" —
마스크 합집합으로 재서 겹침을 뺀 값이다. 다각형 넓이 단순 합(105%)은
겹침 때문에 미검출을 못 잡아낸다.
원인은 프롬프트가 아니라 통짜 패스였다. wide_v1.txt 의 21개 프롬프트는
8192x5460 을 1x1 로 넣어 대상 하나에 인스턴스가 하나만 살아남았다.
도로는 한쪽 차로만, 논은 한 필지만 잡혔다.
BlockYYX 실측 (사진 8장):
기준선 무라벨 평균 21.6% (69장 전체로는 16.1%, 최악 52.1%)
튜닝후 무라벨 평균 3.6% (최대 5.0%)
기여도 (0654 기준):
통짜 -> 타일 패스 -36.7pp
conf 0.25 -> 0.10 -5.4pp
타일 4x3 -> 6x4 -4.6pp
프롬프트 추가 9개 -0.5pp <- 거의 기여 없음
비용은 140 -> 548초/장 (3.9배).
sam3_multi_prompt.py: --wide-in-tiles 플래그 추가. 통짜 프롬프트를
타일 패스에서도 돌린다. 겹치는 결과는 NMS 가 지운다.
신규 도구:
coverage_stats.py 마스크 합집합으로 무라벨% 측정
prompt_stats.py 카테고리-프롬프트별 검출 집계
make_merge_monitor.py 모니터 HTML 생성 (수치는 집계 JSON 에서만)
vote_labels.py 에 --rescue-pred 추가 (투표에 졌지만 표가 있고 모델도
동의하는 면을 되돌린다). 3D 작업이 다른 담당으로 넘어가 중단된 상태.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@
feat: SAM3.1 다중 프롬프트 배치 검출 및 라벨 병합 후처리
sam3_multi_prompt.py: 프롬프트 N개를 forward 1회에 배치 처리한다.
서버(프롬프트당 forward 1회) 대비 forward 횟수가 1/N로 줄고, 이미지
임베딩과 텍스트 인코딩을 타일 전체에서 재사용한다. RTX 3060 12GB
기준 배치 16이 최적(32 이상은 VRAM 압박으로 4배 이상 느려짐).
타일보다 큰 대상(숲, 도로, 주차장)은 타일 경계에서 잘려 사각형
마스크가 되므로 --wide-prompts 로 지정해 이미지 전체를 한 장으로
처리한다.
merge_labels.py: 검출 결과 후처리. 같은 병합 그룹에 속한 라벨끼리
외곽선이 gap px 이내로 인접하면 하나로 합치고 대표 라벨을 붙인다
(building + building rooftop + blue roof -> building). 병합 전
claim 규칙으로 소유권을 재배정해, 차량 위에 잡힌 *roof 폴리곤이
건물이 아니라 차량에 합쳐지도록 한다.
make_viewer.py: 라벨별 on/off 가능한 단독 HTML 뷰어 생성.
프롬프트 파일의 그룹 주석 기준으로 라벨을 묶어 나열하고, 줌/팬과
선택 상태 저장을 지원한다.
cut_tiles.py: R{행}C{열} 격자 오버레이 + 원본 배율 타일 저장.
전역 규칙 반영:
- CUDA 사용 불가 시 CPU로 폴백하지 않고 즉시 에러
- set_per_process_memory_fraction 으로 드라이버의 시스템 메모리
폴백(10배 이상 느려짐) 전에 OOM 발생
- 체크포인트/BPE 경로 하드코딩 제거. CLI 인자 -> 환경변수 ->
sam31server 설정파일 순으로 해결
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@