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>
@
71 lines
941 B
Plaintext
71 lines
941 B
Plaintext
# 가상환경 (용량 크므로 제외)
|
|
.venv/
|
|
.venv_client/
|
|
|
|
# 모델 파일 (용량 매우 큼)
|
|
*.pt
|
|
*.pth
|
|
*.onnx
|
|
*.gz
|
|
|
|
# 로그
|
|
X-AnyLabeling-Server/logs/
|
|
*.log
|
|
|
|
# Python
|
|
__pycache__/
|
|
*.pyc
|
|
*.pyo
|
|
|
|
# 캐시
|
|
.cache/
|
|
|
|
# IDE
|
|
.vscode/
|
|
.idea/
|
|
|
|
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# 임시 파일
|
|
create_shortcuts.ps1
|
|
|
|
# 클로드 개인 설정/메모리
|
|
.claude/
|
|
|
|
# X-AnyLabeling-Server (별도 git repo, submodule 아님)
|
|
X-AnyLabeling-Server/
|
|
|
|
# 용량 큰 데이터/결과 폴더
|
|
drone_2cm/
|
|
output/
|
|
runs/
|
|
data/
|
|
|
|
# 용량 큰 원본 영상 파일
|
|
*.tif
|
|
경부선_2-2구간_미션33-34(5cm).png
|
|
|
|
# 논문/문서 파일
|
|
*.pdf
|
|
*.txt
|
|
# 단, 프롬프트·병합 설정은 코드의 일부라 포함
|
|
!prompts/*.txt
|
|
!configs/*.txt
|
|
|
|
# 미정리 툴 (작업 중)
|
|
tools/render_polygons_rainbow.py
|
|
tools/render_yolo_labels.py
|
|
tools/sam3_sleeper_detect.py
|
|
tools/tif_hollow_detect.py
|
|
|
|
# 기타
|
|
src/
|
|
PRPs/
|
|
nul
|
|
triton-*.whl
|
|
pyproject.toml
|
|
Project_Status.md
|
|
.usage/
|