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,251 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>DJI_0044 = 0016 확장 — 철로+도로</title>
|
||||
<style>
|
||||
:root {
|
||||
--panel: #1a2332; --panel2: #243044; --text: #e7ecf3; --muted: #9aa8bc;
|
||||
--accent: #3d9cf0; --accent2: #5eead4; --ok: #34d399; --warn: #fbbf24;
|
||||
--border: #2d3a4f; --code-bg: #0b1220;
|
||||
--font: "Segoe UI", "Malgun Gothic", "Apple SD Gothic Neo", sans-serif;
|
||||
--mono: "Cascadia Code", Consolas, monospace;
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
margin: 0; font-family: var(--font); color: var(--text); line-height: 1.65;
|
||||
background: linear-gradient(160deg, #0b1020, #121a28 40%, #0f1419);
|
||||
}
|
||||
.wrap { max-width: 960px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
header.hero {
|
||||
background: linear-gradient(135deg, #1e3a5f, #0f766e);
|
||||
border-radius: 16px; padding: 2rem 1.75rem; margin-bottom: 1.5rem;
|
||||
box-shadow: 0 8px 28px rgba(0,0,0,.35);
|
||||
}
|
||||
header.hero h1 { margin: 0 0 .4rem; font-size: 1.65rem; }
|
||||
header.hero p { margin: 0; color: rgba(255,255,255,.92); }
|
||||
.badges { display: flex; flex-wrap: wrap; gap: .45rem; margin-top: 1rem; }
|
||||
.badge {
|
||||
font-size: .72rem; font-weight: 600; padding: .22rem .55rem; border-radius: 999px;
|
||||
background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.2);
|
||||
}
|
||||
section, nav.toc {
|
||||
background: var(--panel); border: 1px solid var(--border); border-radius: 10px;
|
||||
padding: 1.2rem 1.35rem; margin-bottom: 1.15rem;
|
||||
}
|
||||
section h2 {
|
||||
margin: 0 0 .7rem; font-size: 1.15rem; color: #fff;
|
||||
border-bottom: 1px solid var(--border); padding-bottom: .45rem;
|
||||
}
|
||||
nav.toc h2 { margin: 0 0 .5rem; font-size: .88rem; color: var(--accent2); text-transform: uppercase; }
|
||||
nav.toc ol { margin: 0; padding-left: 1.2rem; }
|
||||
nav.toc a { color: var(--text); text-decoration: none; }
|
||||
nav.toc a:hover { color: var(--accent); }
|
||||
h3 { margin: 1rem 0 .4rem; color: var(--accent2); font-size: 1rem; }
|
||||
table { width: 100%; border-collapse: collapse; font-size: .9rem; margin: .6rem 0 1rem; }
|
||||
th, td { border: 1px solid var(--border); padding: .48rem .6rem; text-align: left; vertical-align: top; }
|
||||
th { background: var(--panel2); color: var(--accent2); }
|
||||
code { font-family: var(--mono); font-size: .84em; background: var(--code-bg);
|
||||
padding: .1em .35em; border-radius: 4px; border: 1px solid var(--border); }
|
||||
pre {
|
||||
background: var(--code-bg); border: 1px solid var(--border); border-radius: 8px;
|
||||
padding: .95rem 1rem; overflow-x: auto; font-family: var(--mono); font-size: .8rem;
|
||||
color: #d1e0f5; line-height: 1.55;
|
||||
}
|
||||
.cmd { color: #7dd3fc; } .c { color: #6b8a9e; }
|
||||
.callout {
|
||||
border-left: 4px solid var(--ok); background: rgba(52,211,153,.1);
|
||||
padding: .8rem 1rem; border-radius: 8px; margin: .8rem 0;
|
||||
}
|
||||
.callout.warn { border-left-color: var(--warn); background: rgba(251,191,36,.1); }
|
||||
.path { color: var(--accent2); font-family: var(--mono); font-size: .88em; }
|
||||
.flow {
|
||||
display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin: .8rem 0;
|
||||
}
|
||||
.flow span {
|
||||
background: var(--panel2); border: 1px solid var(--border); padding: .4rem .7rem;
|
||||
border-radius: 8px; font-size: .88rem;
|
||||
}
|
||||
.flow .arr { background: transparent; border: 0; color: var(--accent2); font-weight: 700; }
|
||||
footer { text-align: center; color: var(--muted); font-size: .84rem; margin-top: 1.5rem; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<header class="hero">
|
||||
<h1>DJI_0044 = 이미지 1번(0016) 확장</h1>
|
||||
<p>
|
||||
별도 체계가 아닙니다. <strong>0016 프롬프트·tier·gap/gap2 워크플로를 상속</strong>하고,
|
||||
이 장면(철로+도로+열차+야적)에만 필요한 객체를 <code>scene_delta</code> 로 덧붙입니다.
|
||||
</p>
|
||||
<div class="badges">
|
||||
<span class="badge">extends 0016</span>
|
||||
<span class="badge">same pipeline</span>
|
||||
<span class="badge">scene_delta only</span>
|
||||
<span class="badge">SAM 3.1 meta</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<nav class="toc">
|
||||
<h2>목차</h2>
|
||||
<ol>
|
||||
<li><a href="#model">확장 모델</a></li>
|
||||
<li><a href="#delta">scene_delta (이 장면 추가분)</a></li>
|
||||
<li><a href="#workflow">실행 순서 (0016과 동일)</a></li>
|
||||
<li><a href="#run">커맨드</a></li>
|
||||
<li><a href="#files">파일</a></li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<section id="model">
|
||||
<h2>1. 확장 모델</h2>
|
||||
<div class="flow">
|
||||
<span>① DJI_0016 base<br/><small>compact / gap / gap2</small></span>
|
||||
<span class="arr">→</span>
|
||||
<span>② scene_delta<br/><small>열차·도로·야적</small></span>
|
||||
<span class="arr">→</span>
|
||||
<span>③ DJI_0044 compact<br/><small>base + delta</small></span>
|
||||
<span class="arr">→</span>
|
||||
<span>④ merge</span>
|
||||
</div>
|
||||
<table>
|
||||
<tr><th>개념</th><th>설명</th></tr>
|
||||
<tr>
|
||||
<td>베이스</td>
|
||||
<td><code>prompts/dji_20260306_0016.json</code> — 철로·산업 orthophoto에서 검증한 전체 세트</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>확장 파일</td>
|
||||
<td><code>prompts/dji_20260306_0044.json</code> — <code>"extends": "…0016.json"</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>상속</td>
|
||||
<td>A~E tier, compact, gap, improved, gap2, gap2_core 전부 사용 가능</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>추가</td>
|
||||
<td><code>scene_delta.prompts</code> + 필요 시 tier별 덧붙임</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>스크립트</td>
|
||||
<td><code>multi_prompt_segment.py</code> 가 extends를 자동 병합</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="callout">
|
||||
<strong>원칙</strong>
|
||||
새 이미지가 들어와도 “새 체계”를 만들지 않고,
|
||||
<strong>1번에서 쌓은 프롬프트 자산 + 장면 delta</strong> 로만 확장합니다.
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="delta">
|
||||
<h2>2. scene_delta (0044에서 추가되는 객체)</h2>
|
||||
<p class="muted">Gemini 분석 + 비전 확인. 0016에 없거나 이 장면에서 핵심인 항목.</p>
|
||||
<table>
|
||||
<thead><tr><th>그룹</th><th>프롬프트</th></tr></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>열차</td>
|
||||
<td><code>train</code>, <code>freight car</code>, <code>container car</code>, locomotive, passenger train…</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>도로</td>
|
||||
<td><code>highway</code>, <code>pedestrian crossing</code>, crosswalk, road marking</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>야적</td>
|
||||
<td><code>pipe pile</code>, pipes, bag pile, wooden pile, wood stack, tarp, gravel…</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>기타</td>
|
||||
<td>chain-link fence, sleeper, trackbed, catenary, red roof…</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>
|
||||
베이스에 이미 있는 것(<code>railway track</code>, <code>building</code>, <code>road</code>,
|
||||
<code>car</code>, <code>blue tarp</code>, <code>material pile</code> 등)은
|
||||
<strong>다시 정의하지 않고 상속</strong>합니다.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section id="workflow">
|
||||
<h2>3. 실행 순서 (0016과 동일 파이프라인)</h2>
|
||||
<ol>
|
||||
<li><code>--tier compact</code> — 0016 compact + scene_delta</li>
|
||||
<li><code>--tier gap</code> — 0016 누락 보강 세트 (상속)</li>
|
||||
<li><code>--tier gap2</code> 또는 <code>gap2_core</code> — 합본 빈 영역 보강 (상속)</li>
|
||||
<li><code>--tier delta</code> — 0044 추가분만 (빠른 재실험)</li>
|
||||
<li><code>merge_multi_results.py</code></li>
|
||||
</ol>
|
||||
<div class="callout warn">
|
||||
<strong>tier 의미</strong>
|
||||
<code>gap</code> / <code>gap2</code> 는 0044 전용이 아니라
|
||||
<strong>0016에서 만든 보강 세트 그대로</strong>입니다. 같은 철로 orthophoto 계열에 재사용.
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="run">
|
||||
<h2>4. 커맨드</h2>
|
||||
<pre><span class="cmd">cd D:\MYCLAUDE_PROJECT\samgeo3-lab</span>
|
||||
<span class="cmd">.\.venv\Scripts\Activate.ps1</span>
|
||||
|
||||
<span class="c"># 상속 결과 확인 (compact = 0016 + delta)</span>
|
||||
<span class="cmd">python scripts\multi_prompt_segment.py `
|
||||
--prompts-json prompts\dji_20260306_0044.json `
|
||||
--list-only --tier compact</span>
|
||||
|
||||
<span class="c"># 이 장면 추가분만</span>
|
||||
<span class="cmd">python scripts\multi_prompt_segment.py `
|
||||
--prompts-json prompts\dji_20260306_0044.json `
|
||||
--list-only --tier delta</span>
|
||||
|
||||
<span class="c"># 본 실행 (1번과 동일 패턴)</span>
|
||||
<span class="cmd">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</span>
|
||||
|
||||
<span class="cmd">python scripts\multi_prompt_segment.py `
|
||||
--prompts-json prompts\dji_20260306_0044.json `
|
||||
--tier gap --confidence 0.25 `
|
||||
--output-dir output\dji_0044_compact</span>
|
||||
|
||||
<span class="cmd">python scripts\merge_multi_results.py `
|
||||
--result-dir output\dji_0044_compact `
|
||||
--image data\DJI_20260306100928_0044.JPG</span></pre>
|
||||
</section>
|
||||
|
||||
<section id="files">
|
||||
<h2>5. 파일</h2>
|
||||
<table>
|
||||
<tr><th>경로</th><th>역할</th></tr>
|
||||
<tr>
|
||||
<td><span class="path">prompts/dji_20260306_0016.json</span></td>
|
||||
<td><strong>베이스 (이미지 1)</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="path">prompts/dji_20260306_0044.json</span></td>
|
||||
<td>extends 0016 + scene_delta</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="path">docs/dji_gap_fill.html</span></td>
|
||||
<td>0016 gap 리포트</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="path">output/dji_0044_compact/merged/</span></td>
|
||||
<td>0044 합본</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p><a href="dji_gap_fill.html">← 0016 갭 필 리포트</a> · <a href="usage.html">일반 사용법</a></p>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
samgeo3-lab · 0044 extends 0016 · 별도 체계 아님<br />
|
||||
<span class="path">docs/dji_0044_prompts.html</span>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user