Initial publish: SamGeo3 multi-prompt segmentation lab.
Scripts, prompt JSON tiers, usage docs, and README. Input images (data/) and segmentation outputs (output/) are gitignored.
This commit is contained in:
@@ -0,0 +1,212 @@
|
||||
# Multi-object prompts (Grok + Gemini)
|
||||
|
||||
비전 분석 결과를 합친 SAM 3.1 / SamGeo3 텍스트 프롬프트 세트입니다.
|
||||
|
||||
| 파일 | 설명 |
|
||||
|------|------|
|
||||
| `dji_20260306_0016.json` | DJI 드론 정사 철도·산업 장면 (Grok+Gemini 병합) |
|
||||
| `dji_20260306_0044.json` | **0016 확장** (`extends`) + scene_delta (철로+도로+열차) |
|
||||
|
||||
## tier
|
||||
|
||||
| tier | 내용 |
|
||||
|------|------|
|
||||
| `compact` | 1차 실험용 19개 (기본) |
|
||||
| `gap` | **누락 보강 12개** (Gemini 재검토: road, dense forest, covered truck 등) |
|
||||
| `gap2` | 합본 빈 영역 보강 (다수 프롬프트) |
|
||||
| `gap2_core` | gap2 중 실측 성공 프롬프트만 (재실행 권장) |
|
||||
| `improved` | compact + gap 병합 (~31개) |
|
||||
| `A_high` | 1차 고확률 |
|
||||
| `B_facility` | 시설·구조 |
|
||||
| `C_detail` | 야적·지면·지붕색 |
|
||||
| `D_rail_domain` | 철도 특화 (편차 큼) |
|
||||
| `E_missed` | gap 확장판 (동의어 포함) |
|
||||
| `all` | A→E 전부 (중복 제거) |
|
||||
|
||||
## 기대 난이도 (정사 드론 기준)
|
||||
|
||||
| 프롬프트 | 기대 | 튜닝 팁 |
|
||||
|----------|------|---------|
|
||||
| `building`, `solar panel`, `tree`, `car`, `truck` | 높음 | 기본 객체. 낮은 confidence에서도 비교적 잘 잡힘 |
|
||||
| `railway track`, `fence`, `parking lot`, `blue tarp` | 중~높음 | 선형·구획. context에 따라 변동 |
|
||||
| `utility pole`, `container`, `material pile` | 중 | 작거나 밀집. `--min-size`로 노이즈 제거 |
|
||||
| `rail`, `ballast`, `railroad sleeper`, `catenary` | 낮~중 | 도메인 용어·가는 객체. confidence 튜닝 필수 |
|
||||
|
||||
권장: **confidence 0.25~0.35** 로 시작.
|
||||
|
||||
## 단일 프롬프트 (`text_segment.py`)
|
||||
|
||||
```powershell
|
||||
cd D:\MYCLAUDE_PROJECT\samgeo3-lab
|
||||
.\.venv\Scripts\Activate.ps1
|
||||
|
||||
$img = "data\DJI_20260306100802_0016.JPG"
|
||||
# 또는: $img = "D:\MYCLAUDE_PROJECT\segment-geospatial\sample\DJI_20260306100802_0016.JPG"
|
||||
$out = "output\dji_0016_analysis"
|
||||
|
||||
python scripts\text_segment.py `
|
||||
--image $img `
|
||||
--prompt "solar panel" `
|
||||
--confidence 0.3 `
|
||||
--output-dir $out
|
||||
|
||||
python scripts\text_segment.py `
|
||||
--image $img `
|
||||
--prompt "building" `
|
||||
--confidence 0.3 `
|
||||
--output-dir $out
|
||||
|
||||
python scripts\text_segment.py `
|
||||
--image $img `
|
||||
--prompt "railway track" `
|
||||
--confidence 0.3 `
|
||||
--output-dir $out
|
||||
```
|
||||
|
||||
결과 예: `output\dji_0016_analysis\DJI_..._solar_panel_mask.png`
|
||||
|
||||
## 멀티 프롬프트 일괄 (`multi_prompt_segment.py`) — 이미 포함됨
|
||||
|
||||
모델·이미지를 **1회 로드** 후 프롬프트 루프. 결과는
|
||||
`output\<stem>_<tier>\{stem}_{prompt}_mask.png` 등 + `summary.json`.
|
||||
|
||||
```powershell
|
||||
cd D:\MYCLAUDE_PROJECT\samgeo3-lab
|
||||
.\.venv\Scripts\Activate.ps1
|
||||
|
||||
# 프롬프트 목록만
|
||||
python scripts\multi_prompt_segment.py --list-only --tier compact
|
||||
|
||||
# compact 19개 일괄 (권장 1차)
|
||||
python scripts\multi_prompt_segment.py `
|
||||
--image "data\DJI_20260306100802_0016.JPG" `
|
||||
--tier compact `
|
||||
--confidence 0.3 `
|
||||
--output-dir "output\dji_0016_compact"
|
||||
|
||||
# 누락 보강 (Gemini gap) — confidence 약간 낮게, 같은 폴더에 추가하면 merge에 포함
|
||||
python scripts\multi_prompt_segment.py `
|
||||
--image "data\DJI_20260306100802_0016.JPG" `
|
||||
--tier gap `
|
||||
--confidence 0.25 `
|
||||
--output-dir "output\dji_0016_compact"
|
||||
|
||||
# 1차+보강 한 번에
|
||||
python scripts\multi_prompt_segment.py --tier improved --confidence 0.28
|
||||
|
||||
# 1차 고확률만
|
||||
python scripts\multi_prompt_segment.py --tier A_high --confidence 0.3
|
||||
|
||||
# 전체 tier
|
||||
python scripts\multi_prompt_segment.py --tier all --confidence 0.25
|
||||
|
||||
# 직접 지정
|
||||
python scripts\multi_prompt_segment.py `
|
||||
--prompts "solar panel,building,railway track,tree,car,truck" `
|
||||
--confidence 0.3 `
|
||||
--output-dir "output\dji_0016_analysis"
|
||||
```
|
||||
|
||||
## DJI_0044 = 이미지 1번(0016) 확장 (별도 체계 아님)
|
||||
|
||||
```text
|
||||
0016 base (compact/gap/gap2) + scene_delta(열차·도로·야적) → 0044
|
||||
```
|
||||
|
||||
```powershell
|
||||
# 상속 확인
|
||||
python scripts\multi_prompt_segment.py --prompts-json prompts\dji_20260306_0044.json --list-only --tier compact
|
||||
python scripts\multi_prompt_segment.py --prompts-json prompts\dji_20260306_0044.json --list-only --tier delta
|
||||
|
||||
# 0016과 동일한 파이프라인
|
||||
python scripts\multi_prompt_segment.py `
|
||||
--prompts-json prompts\dji_20260306_0044.json `
|
||||
--image data\DJI_20260306100928_0044.JPG `
|
||||
--tier compact --confidence 0.3 `
|
||||
--output-dir output\dji_0044_compact
|
||||
|
||||
python scripts\multi_prompt_segment.py `
|
||||
--prompts-json prompts\dji_20260306_0044.json `
|
||||
--tier gap --confidence 0.25 `
|
||||
--output-dir output\dji_0044_compact
|
||||
|
||||
python scripts\merge_multi_results.py `
|
||||
--result-dir output\dji_0044_compact `
|
||||
--image data\DJI_20260306100928_0044.JPG
|
||||
```
|
||||
|
||||
HTML: `docs/dji_0044_prompts.html`
|
||||
|
||||
## 예시: DJI_0100 전체 파이프라인 (compact → gap → gap2_core → merge)
|
||||
|
||||
0044 프롬프트 JSON(0016 상속 + 도로/열차 delta)을 **0100 이미지**에 적용하는
|
||||
권장 end-to-end 예입니다. gap / gap2_core 단계는 선택입니다.
|
||||
|
||||
```powershell
|
||||
cd D:\MYCLAUDE_PROJECT\samgeo3-lab
|
||||
.\.venv\Scripts\Activate.ps1
|
||||
|
||||
$img = "data\DJI_20260306101434_0100.JPG"
|
||||
$out = "output\dji_0100_compact"
|
||||
$json = "prompts\dji_20260306_0044.json"
|
||||
|
||||
# (선택) 프롬프트 목록 확인
|
||||
python scripts\multi_prompt_segment.py --prompts-json $json --list-only --tier compact
|
||||
|
||||
# 1) 세그 — compact (0016 상속 + 도로/열차 delta)
|
||||
python scripts\multi_prompt_segment.py `
|
||||
--prompts-json $json `
|
||||
--image $img `
|
||||
--tier compact `
|
||||
--confidence 0.3 `
|
||||
--output-dir $out
|
||||
|
||||
# 2) (선택) gap 보강
|
||||
python scripts\multi_prompt_segment.py `
|
||||
--prompts-json $json `
|
||||
--image $img `
|
||||
--tier gap `
|
||||
--confidence 0.25 `
|
||||
--output-dir $out
|
||||
|
||||
# 3) (선택) gap2_core 보강
|
||||
python scripts\multi_prompt_segment.py `
|
||||
--prompts-json $json `
|
||||
--image $img `
|
||||
--tier gap2_core `
|
||||
--confidence 0.22 `
|
||||
--output-dir $out
|
||||
|
||||
# 4) 합치기 + interactive index.html
|
||||
python scripts\merge_multi_results.py `
|
||||
--result-dir $out `
|
||||
--image $img `
|
||||
--max-side 2048
|
||||
|
||||
# 5) 결과 열기
|
||||
start "$out\merged\index.html"
|
||||
```
|
||||
|
||||
권장 confidence: compact `0.3` → gap `0.25` → gap2_core `0.22`.
|
||||
같은 `$out` 폴더에 단계별로 마스크를 쌓은 뒤 merge하면 한 HTML에서 전부 볼 수 있습니다.
|
||||
|
||||
## 결과 합치기 (overlay + grid + HTML)
|
||||
|
||||
`multi_prompt_segment` 실행 후:
|
||||
|
||||
```powershell
|
||||
python scripts\merge_multi_results.py `
|
||||
--result-dir "output\dji_0016_compact" `
|
||||
--image "data\DJI_20260306100802_0016.JPG" `
|
||||
--max-side 2560
|
||||
```
|
||||
|
||||
출력 (`output\dji_0016_compact\merged\`):
|
||||
|
||||
| 파일 | 내용 |
|
||||
|------|------|
|
||||
| `combined_overlay.png` | 전 클래스 색상 오버레이 |
|
||||
| `combined_with_legend.png` | 오버레이 + 범례 |
|
||||
| `per_class_grid.png` | 클래스별 썸네일 격자 |
|
||||
| `index.html` | 브라우저로 한눈에 보기 |
|
||||
| `merge_summary.json` | 클래스·픽셀 통계 |
|
||||
Reference in New Issue
Block a user