323 lines
34 KiB
XML
323 lines
34 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1920 1080" width="100%" height="100%">
|
|
<defs>
|
|
<!-- Background Gradient -->
|
|
<linearGradient id="bg-grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" stop-color="#080c14" />
|
|
<stop offset="50%" stop-color="#0e1726" />
|
|
<stop offset="100%" stop-color="#080c14" />
|
|
</linearGradient>
|
|
|
|
<!-- Header Gradient -->
|
|
<linearGradient id="header-grad" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
<stop offset="0%" stop-color="#0284c7" />
|
|
<stop offset="50%" stop-color="#6366f1" />
|
|
<stop offset="100%" stop-color="#a855f7" />
|
|
</linearGradient>
|
|
|
|
<!-- Card Background Gradient -->
|
|
<linearGradient id="card-grad" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
<stop offset="0%" stop-color="#131c2e" />
|
|
<stop offset="100%" stop-color="#0c121f" />
|
|
</linearGradient>
|
|
|
|
<!-- Stage Header Gradients -->
|
|
<linearGradient id="grad-s1" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#0891b2" /><stop offset="100%" stop-color="#06b6d4" /></linearGradient>
|
|
<linearGradient id="grad-s2" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#2563eb" /><stop offset="100%" stop-color="#3b82f6" /></linearGradient>
|
|
<linearGradient id="grad-s3" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#7c3aed" /><stop offset="100%" stop-color="#8b5cf6" /></linearGradient>
|
|
<linearGradient id="grad-s4" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#d97706" /><stop offset="100%" stop-color="#f59e0b" /></linearGradient>
|
|
<linearGradient id="grad-s5" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#e11d48" /><stop offset="100%" stop-color="#f43f5e" /></linearGradient>
|
|
<linearGradient id="grad-s6" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#059669" /><stop offset="100%" stop-color="#10b981" /></linearGradient>
|
|
<linearGradient id="grad-s7" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#9333ea" /><stop offset="100%" stop-color="#c084fc" /></linearGradient>
|
|
<linearGradient id="grad-s8" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#16a34a" /><stop offset="100%" stop-color="#22c55e" /></linearGradient>
|
|
|
|
<!-- Grid Pattern -->
|
|
<pattern id="grid-dots" x="0" y="0" width="32" height="32" patternUnits="userSpaceOnUse">
|
|
<circle cx="16" cy="16" r="1.2" fill="#334155" fill-opacity="0.35" />
|
|
</pattern>
|
|
|
|
<!-- Card Shadow -->
|
|
<filter id="shadow-card" x="-10%" y="-10%" width="120%" height="125%">
|
|
<feDropShadow dx="0" dy="10" stdDeviation="14" flood-color="#000000" flood-opacity="0.6" />
|
|
</filter>
|
|
|
|
<!-- Arrow Markers -->
|
|
<marker id="arrow-cyan" viewBox="0 0 10 10" refX="6" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 1.5 L 9 5 L 0 8.5 z" fill="#06b6d4" /></marker>
|
|
<marker id="arrow-blue" viewBox="0 0 10 10" refX="6" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 1.5 L 9 5 L 0 8.5 z" fill="#3b82f6" /></marker>
|
|
<marker id="arrow-purple" viewBox="0 0 10 10" refX="6" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 1.5 L 9 5 L 0 8.5 z" fill="#8b5cf6" /></marker>
|
|
<marker id="arrow-amber" viewBox="0 0 10 10" refX="6" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 1.5 L 9 5 L 0 8.5 z" fill="#f59e0b" /></marker>
|
|
<marker id="arrow-rose" viewBox="0 0 10 10" refX="6" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 1.5 L 9 5 L 0 8.5 z" fill="#f43f5e" /></marker>
|
|
<marker id="arrow-emerald" viewBox="0 0 10 10" refX="6" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 1.5 L 9 5 L 0 8.5 z" fill="#10b981" /></marker>
|
|
<marker id="arrow-violet" viewBox="0 0 10 10" refX="6" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 1.5 L 9 5 L 0 8.5 z" fill="#c084fc" /></marker>
|
|
<marker id="arrow-green" viewBox="0 0 10 10" refX="6" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 1.5 L 9 5 L 0 8.5 z" fill="#22c55e" /></marker>
|
|
</defs>
|
|
|
|
<!-- Background Base -->
|
|
<rect width="1920" height="1080" fill="url(#bg-grad)" />
|
|
<rect width="1920" height="1080" fill="url(#grid-dots)" />
|
|
<rect x="20" y="20" width="1880" height="1040" rx="18" fill="none" stroke="#1e293b" stroke-width="1.5" stroke-opacity="0.8" />
|
|
|
|
<!-- HEADER SECTION -->
|
|
<g id="header-section">
|
|
<rect x="40" y="35" width="1840" height="92" rx="14" fill="#0f172a" fill-opacity="0.85" stroke="#334155" stroke-width="1" filter="url(#shadow-card)" />
|
|
<rect x="40" y="35" width="6" height="92" rx="3" fill="url(#header-grad)" />
|
|
<text x="65" y="70" fill="#f8fafc" font-family="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif" font-size="22" font-weight="800" letter-spacing="0.5">SISTEM RETRAINING & LIVE COUNTING FEEDMILL</text>
|
|
<text x="65" y="100" fill="#94a3b8" font-family="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif" font-size="13" font-weight="500">Arsitektur Pipeline 8-Tahap: Video Ingest, Frame Slicing, SAM3 Grounding, Review, Triage, Freezing, YOLO Retraining & Edge Inference</text>
|
|
<g transform="translate(1120, 50)">
|
|
<rect x="0" y="0" width="170" height="30" rx="6" fill="#1e293b" stroke="#38bdf8" stroke-width="1" />
|
|
<circle cx="14" cy="15" r="4.5" fill="#38bdf8" />
|
|
<text x="26" y="20" fill="#e2e8f0" font-family="monospace" font-size="11" font-weight="700">YOLO11 + SAM3</text>
|
|
<rect x="180" y="0" width="185" height="30" rx="6" fill="#1e293b" stroke="#818cf8" stroke-width="1" />
|
|
<circle cx="194" cy="15" r="4.5" fill="#818cf8" />
|
|
<text x="206" y="20" fill="#e2e8f0" font-family="monospace" font-size="11" font-weight="700">CUDA Singleton GPU</text>
|
|
<rect x="375" y="0" width="170" height="30" rx="6" fill="#1e293b" stroke="#34d399" stroke-width="1" />
|
|
<circle cx="389" cy="15" r="4.5" fill="#34d399" />
|
|
<text x="401" y="20" fill="#e2e8f0" font-family="monospace" font-size="11" font-weight="700">SHA1 Stable Val</text>
|
|
<rect x="555" y="0" width="185" height="30" rx="6" fill="#1e293b" stroke="#f43f5e" stroke-width="1" />
|
|
<circle cx="569" cy="15" r="4.5" fill="#f43f5e" />
|
|
<text x="581" y="20" fill="#e2e8f0" font-family="monospace" font-size="11" font-weight="700">ByteTrack + LineCross</text>
|
|
</g>
|
|
</g>
|
|
|
|
<!-- CONNECTORS -->
|
|
<g id="flow-connectors">
|
|
<path d="M 460 275 L 500 275" stroke="#06b6d4" stroke-width="3" fill="none" marker-end="url(#arrow-cyan)" />
|
|
<path d="M 920 275 L 960 275" stroke="#3b82f6" stroke-width="3" fill="none" marker-end="url(#arrow-blue)" />
|
|
<path d="M 1380 275 L 1420 275" stroke="#8b5cf6" stroke-width="3" fill="none" marker-end="url(#arrow-purple)" />
|
|
<path d="M 1630 405 C 1630 460, 1630 475, 1630 535" stroke="#f59e0b" stroke-width="3" fill="none" marker-end="url(#arrow-amber)" />
|
|
<path d="M 1420 665 L 1380 665" stroke="#f43f5e" stroke-width="3" fill="none" marker-end="url(#arrow-rose)" />
|
|
<path d="M 960 665 L 920 665" stroke="#10b981" stroke-width="3" fill="none" marker-end="url(#arrow-emerald)" />
|
|
<path d="M 500 665 L 460 665" stroke="#c084fc" stroke-width="3" fill="none" marker-end="url(#arrow-violet)" />
|
|
<path d="M 250 540 C 250 485, 250 470, 250 415" stroke="#22c55e" stroke-width="2.5" stroke-dasharray="6,4" fill="none" marker-end="url(#arrow-green)" />
|
|
<rect x="170" y="464" width="160" height="24" rx="5" fill="#0f172a" stroke="#22c55e" stroke-width="1.2" />
|
|
<text x="250" y="480" fill="#4ade80" font-family="system-ui, sans-serif" font-size="10.5" font-weight="700" text-anchor="middle">best.pt Deploy / Loop</text>
|
|
</g>
|
|
|
|
<!-- STAGE 1 -->
|
|
<g id="stage-1" transform="translate(40, 150)">
|
|
<rect width="420" height="255" rx="14" fill="url(#card-grad)" stroke="#06b6d4" stroke-width="1.5" stroke-opacity="0.75" filter="url(#shadow-card)" />
|
|
<rect x="0" y="0" width="420" height="42" rx="14" fill="#083344" /><rect x="0" y="28" width="420" height="14" fill="#083344" />
|
|
<rect x="14" y="8" width="80" height="26" rx="6" fill="url(#grad-s1)" />
|
|
<text x="54" y="25" fill="#ffffff" font-family="monospace" font-size="12" font-weight="800" text-anchor="middle">TAHAP 01</text>
|
|
<text x="106" y="26" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="14" font-weight="700">Video Archive & CCTV</text>
|
|
<g transform="translate(382, 12)" fill="#06b6d4"><path d="M 2 4 C 0.9 4 0 4.9 0 6 L 0 14 C 0 15.1 0.9 16 2 16 L 14 16 C 15.1 16 16 15.1 16 14 L 16 6 C 16 4.9 15.1 4 14 4 Z M 18 6 L 18 14 L 24 18 L 24 2 Z" transform="scale(0.8)" /></g>
|
|
<text x="16" y="68" fill="#38bdf8" font-family="system-ui, sans-serif" font-size="13" font-weight="700">Ingest & Shift Management</text>
|
|
<g transform="translate(16, 90)">
|
|
<circle cx="4" cy="4" r="3" fill="#06b6d4" /><text x="14" y="8" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Siklus Kerja 24 Jam (Cutoff 06:00 - 06:00)</text>
|
|
<circle cx="4" cy="28" r="3" fill="#06b6d4" /><text x="14" y="32" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Perekaman Kontinu / Batch MP4 CCTV</text>
|
|
<circle cx="4" cy="52" r="3" fill="#06b6d4" /><text x="14" y="56" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Ekstraksi OCR Watermark Timestamp</text>
|
|
<circle cx="4" cy="76" r="3" fill="#06b6d4" /><text x="14" y="80" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Katalog Metadata Video ke SQLite app.db</text>
|
|
</g>
|
|
<g transform="translate(16, 215)">
|
|
<rect x="0" y="0" width="82" height="22" rx="4" fill="#083344" stroke="#06b6d4" stroke-width="1" /><text x="41" y="15" fill="#38bdf8" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">RTSP :8554</text>
|
|
<rect x="90" y="0" width="85" height="22" rx="4" fill="#083344" stroke="#06b6d4" stroke-width="1" /><text x="132" y="15" fill="#38bdf8" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">06:00 Shift</text>
|
|
<rect x="183" y="0" width="105" height="22" rx="4" fill="#083344" stroke="#06b6d4" stroke-width="1" /><text x="235" y="15" fill="#38bdf8" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">OCR Metadata</text>
|
|
</g>
|
|
</g>
|
|
|
|
<!-- STAGE 2 -->
|
|
<g id="stage-2" transform="translate(500, 150)">
|
|
<rect width="420" height="255" rx="14" fill="url(#card-grad)" stroke="#3b82f6" stroke-width="1.5" stroke-opacity="0.75" filter="url(#shadow-card)" />
|
|
<rect x="0" y="0" width="420" height="42" rx="14" fill="#172554" /><rect x="0" y="28" width="420" height="14" fill="#172554" />
|
|
<rect x="14" y="8" width="80" height="26" rx="6" fill="url(#grad-s2)" />
|
|
<text x="54" y="25" fill="#ffffff" font-family="monospace" font-size="12" font-weight="800" text-anchor="middle">TAHAP 02</text>
|
|
<text x="106" y="26" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="14" font-weight="700">FFmpeg Frame Extraction</text>
|
|
<g transform="translate(382, 12)" fill="#3b82f6"><path d="M 2 2 L 2 18 L 22 18 L 22 2 Z M 5 4 L 7 4 L 7 6 L 5 6 Z M 17 4 L 19 4 L 19 6 L 17 6 Z M 5 9 L 7 9 L 7 11 L 5 11 Z M 17 9 L 19 9 L 19 11 L 17 11 Z M 5 14 L 7 14 L 7 16 L 5 16 Z M 17 14 L 19 14 L 19 16 L 17 16 Z" transform="scale(0.9)" /></g>
|
|
<text x="16" y="68" fill="#60a5fa" font-family="system-ui, sans-serif" font-size="13" font-weight="700">Sampling & Slicing Presisi</text>
|
|
<g transform="translate(16, 90)">
|
|
<circle cx="4" cy="4" r="3" fill="#3b82f6" /><text x="14" y="8" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Range Streaming (Fast Seek tanpa Full Load)</text>
|
|
<circle cx="4" cy="28" r="3" fill="#3b82f6" /><text x="14" y="32" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Sampling FPS Terjadwal (Default: 1.0 FPS)</text>
|
|
<circle cx="4" cy="52" r="3" fill="#3b82f6" /><text x="14" y="56" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Keyframe Extraction Sinkron & Timestamp</text>
|
|
<circle cx="4" cy="76" r="3" fill="#3b82f6" /><text x="14" y="80" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Output JPEG ke data/projects/.../slices</text>
|
|
</g>
|
|
<g transform="translate(16, 215)">
|
|
<rect x="0" y="0" width="85" height="22" rx="4" fill="#172554" stroke="#3b82f6" stroke-width="1" /><text x="42" y="15" fill="#93c5fd" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">FFmpeg v6+</text>
|
|
<rect x="93" y="0" width="75" height="22" rx="4" fill="#172554" stroke="#3b82f6" stroke-width="1" /><text x="130" y="15" fill="#93c5fd" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">1.0 FPS</text>
|
|
<rect x="176" y="0" width="115" height="22" rx="4" fill="#172554" stroke="#3b82f6" stroke-width="1" /><text x="233" y="15" fill="#93c5fd" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">Keyframe Sync</text>
|
|
</g>
|
|
</g>
|
|
|
|
<!-- STAGE 3 -->
|
|
<g id="stage-3" transform="translate(960, 150)">
|
|
<rect width="420" height="255" rx="14" fill="url(#card-grad)" stroke="#8b5cf6" stroke-width="1.5" stroke-opacity="0.75" filter="url(#shadow-card)" />
|
|
<rect x="0" y="0" width="420" height="42" rx="14" fill="#2e1065" /><rect x="0" y="28" width="420" height="14" fill="#2e1065" />
|
|
<rect x="14" y="8" width="80" height="26" rx="6" fill="url(#grad-s3)" />
|
|
<text x="54" y="25" fill="#ffffff" font-family="monospace" font-size="12" font-weight="800" text-anchor="middle">TAHAP 03</text>
|
|
<text x="106" y="26" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="14" font-weight="700">SAM3 Grounding Engine</text>
|
|
<g transform="translate(382, 12)" fill="#8b5cf6"><path d="M 12 2 L 14 7 L 19 9 L 14 11 L 12 16 L 10 11 L 5 9 L 10 7 Z M 19 14 L 20 17 L 23 18 L 20 19 L 19 22 L 18 19 L 15 18 L 18 17 Z" transform="scale(0.85)" /></g>
|
|
<text x="16" y="68" fill="#a78bfa" font-family="system-ui, sans-serif" font-size="13" font-weight="700">Zero-Shot & Exemplar Tuning</text>
|
|
<g transform="translate(16, 90)">
|
|
<circle cx="4" cy="4" r="3" fill="#8b5cf6" /><text x="14" y="8" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Singleton CUDA Context (Efisien VRAM)</text>
|
|
<circle cx="4" cy="28" r="3" fill="#8b5cf6" /><text x="14" y="32" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">1x set_image per frame + Multi-Text Prompt</text>
|
|
<circle cx="4" cy="52" r="3" fill="#8b5cf6" /><text x="14" y="56" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Dukungan Positive/Negative Exemplar Points</text>
|
|
<circle cx="4" cy="76" r="3" fill="#8b5cf6" /><text x="14" y="80" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Konversi Mask Sub-pixel ke Poligon & BBox</text>
|
|
</g>
|
|
<g transform="translate(16, 215)">
|
|
<rect x="0" y="0" width="115" height="22" rx="4" fill="#2e1065" stroke="#8b5cf6" stroke-width="1" /><text x="57" y="15" fill="#c4b5fd" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">CUDA Singleton</text>
|
|
<rect x="123" y="0" width="95" height="22" rx="4" fill="#2e1065" stroke="#8b5cf6" stroke-width="1" /><text x="170" y="15" fill="#c4b5fd" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">1x set_image</text>
|
|
<rect x="226" y="0" width="95" height="22" rx="4" fill="#2e1065" stroke="#8b5cf6" stroke-width="1" /><text x="273" y="15" fill="#c4b5fd" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">Zero-Shot AI</text>
|
|
</g>
|
|
</g>
|
|
|
|
<!-- STAGE 4 -->
|
|
<g id="stage-4" transform="translate(1420, 150)">
|
|
<rect width="420" height="255" rx="14" fill="url(#card-grad)" stroke="#f59e0b" stroke-width="1.5" stroke-opacity="0.75" filter="url(#shadow-card)" />
|
|
<rect x="0" y="0" width="420" height="42" rx="14" fill="#451a03" /><rect x="0" y="28" width="420" height="14" fill="#451a03" />
|
|
<rect x="14" y="8" width="80" height="26" rx="6" fill="url(#grad-s4)" />
|
|
<text x="54" y="25" fill="#ffffff" font-family="monospace" font-size="12" font-weight="800" text-anchor="middle">TAHAP 04</text>
|
|
<text x="106" y="26" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="14" font-weight="700">Review & Edit Canvas</text>
|
|
<g transform="translate(382, 12)" fill="#f59e0b"><path d="M 3 3 L 9 3 L 9 5 L 5 5 L 5 9 L 3 9 Z M 15 3 L 21 3 L 21 9 L 19 9 L 19 5 L 15 5 Z M 3 15 L 5 15 L 5 19 L 9 19 L 9 21 L 3 21 Z M 19 15 L 21 15 L 21 21 L 15 21 L 15 19 L 19 19 Z" transform="scale(0.85)" /></g>
|
|
<text x="16" y="68" fill="#fbbf24" font-family="system-ui, sans-serif" font-size="13" font-weight="700">Roboflow-Replica Hotkey Audit</text>
|
|
<g transform="translate(16, 90)">
|
|
<circle cx="4" cy="4" r="3" fill="#f59e0b" /><text x="14" y="8" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Manipulasi Vertex Poligon & Edit Bounding Box</text>
|
|
<circle cx="4" cy="28" r="3" fill="#f59e0b" /><text x="14" y="32" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Navigasi Cepat Hotkey (A: Approve, R: Reject)</text>
|
|
<circle cx="4" cy="52" r="3" fill="#f59e0b" /><text x="14" y="56" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Pelacakan Sumber: auto_sam3 vs manual</text>
|
|
<circle cx="4" cy="76" r="3" fill="#f59e0b" /><text x="14" y="80" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Approval Gate: Status verifikasi per anotasi</text>
|
|
</g>
|
|
<g transform="translate(16, 215)">
|
|
<rect x="0" y="0" width="95" height="22" rx="4" fill="#451a03" stroke="#f59e0b" stroke-width="1" /><text x="47" y="15" fill="#fde68a" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">Canvas Edit</text>
|
|
<rect x="103" y="0" width="85" height="22" rx="4" fill="#451a03" stroke="#f59e0b" stroke-width="1" /><text x="145" y="15" fill="#fde68a" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">Hotkey A/R</text>
|
|
<rect x="196" y="0" width="95" height="22" rx="4" fill="#451a03" stroke="#f59e0b" stroke-width="1" /><text x="243" y="15" fill="#fde68a" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">Audit Trail</text>
|
|
</g>
|
|
</g>
|
|
|
|
<!-- STAGE 5 -->
|
|
<g id="stage-5" transform="translate(1420, 540)">
|
|
<rect width="420" height="255" rx="14" fill="url(#card-grad)" stroke="#f43f5e" stroke-width="1.5" stroke-opacity="0.75" filter="url(#shadow-card)" />
|
|
<rect x="0" y="0" width="420" height="42" rx="14" fill="#4c0519" /><rect x="0" y="28" width="420" height="14" fill="#4c0519" />
|
|
<rect x="14" y="8" width="80" height="26" rx="6" fill="url(#grad-s5)" />
|
|
<text x="54" y="25" fill="#ffffff" font-family="monospace" font-size="12" font-weight="800" text-anchor="middle">TAHAP 05</text>
|
|
<text x="106" y="26" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="14" font-weight="700">Data Prep & Triage</text>
|
|
<g transform="translate(382, 12)" fill="#f43f5e"><path d="M 2 3 L 22 3 L 14 12 L 14 19 L 10 21 L 10 12 Z" transform="scale(0.85)" /></g>
|
|
<text x="16" y="68" fill="#fb7185" font-family="system-ui, sans-serif" font-size="13" font-weight="700">Quality Filter & Outlier Gate</text>
|
|
<g transform="translate(16, 90)">
|
|
<circle cx="4" cy="4" r="3" fill="#f43f5e" /><text x="14" y="8" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Keep-Range Sliders: Score, Area %, Aspect</text>
|
|
<circle cx="4" cy="28" r="3" fill="#f43f5e" /><text x="14" y="32" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Scatter Plot 2D: Triage Anomali Aspect vs Area</text>
|
|
<circle cx="4" cy="52" r="3" fill="#f43f5e" /><text x="14" y="56" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Crop Grid Interaktif: Inspeksi visual instan</text>
|
|
<circle cx="4" cy="76" r="3" fill="#f43f5e" /><text x="14" y="80" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Filtering ketat sebelum masuk Master Dataset</text>
|
|
</g>
|
|
<g transform="translate(16, 215)">
|
|
<rect x="0" y="0" width="105" height="22" rx="4" fill="#4c0519" stroke="#f43f5e" stroke-width="1" /><text x="52" y="15" fill="#fecdd3" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">Scatter 2D</text>
|
|
<rect x="113" y="0" width="95" height="22" rx="4" fill="#4c0519" stroke="#f43f5e" stroke-width="1" /><text x="160" y="15" fill="#fecdd3" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">Crop Grid</text>
|
|
<rect x="216" y="0" width="95" height="22" rx="4" fill="#4c0519" stroke="#f43f5e" stroke-width="1" /><text x="263" y="15" fill="#fecdd3" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">Range Filter</text>
|
|
</g>
|
|
</g>
|
|
|
|
<!-- STAGE 6 -->
|
|
<g id="stage-6" transform="translate(960, 540)">
|
|
<rect width="420" height="255" rx="14" fill="url(#card-grad)" stroke="#10b981" stroke-width="1.5" stroke-opacity="0.75" filter="url(#shadow-card)" />
|
|
<rect x="0" y="0" width="420" height="42" rx="14" fill="#064e3b" /><rect x="0" y="28" width="420" height="14" fill="#064e3b" />
|
|
<rect x="14" y="8" width="80" height="26" rx="6" fill="url(#grad-s6)" />
|
|
<text x="54" y="25" fill="#ffffff" font-family="monospace" font-size="12" font-weight="800" text-anchor="middle">TAHAP 06</text>
|
|
<text x="106" y="26" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="14" font-weight="700">Master Dataset Freezing</text>
|
|
<g transform="translate(382, 12)" fill="#10b981"><path d="M 6 8 L 6 6 C 6 2.7 8.7 0 12 0 C 15.3 0 18 2.7 18 6 L 18 8 L 20 8 C 21.1 8 22 8.9 22 10 L 22 20 C 22 21.1 21.1 22 20 22 L 4 22 C 2.9 22 2 21.1 2 20 L 2 10 C 2 8.9 2.9 8 4 8 Z M 8 8 L 16 8 L 16 6 C 16 3.8 14.2 2 12 2 C 9.8 2 8 3.8 8 6 Z" transform="scale(0.85)" /></g>
|
|
<text x="16" y="68" fill="#34d399" font-family="system-ui, sans-serif" font-size="13" font-weight="700">Stable Val Split & Immutability</text>
|
|
<g transform="translate(16, 90)">
|
|
<circle cx="4" cy="4" r="3" fill="#10b981" /><text x="14" y="8" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Partisi SHA1 Deterministik (Val Split Permanen)</text>
|
|
<circle cx="4" cy="28" r="3" fill="#10b981" /><text x="14" y="32" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Merge Gate Enforce: Hanya data APPROVED</text>
|
|
<circle cx="4" cy="52" r="3" fill="#10b981" /><text x="14" y="56" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Format Ekspor YOLO TXT (xywhn) & data.yaml</text>
|
|
<circle cx="4" cy="76" r="3" fill="#10b981" /><text x="14" y="80" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Snapshot Versi Dataset di data/master_dataset</text>
|
|
</g>
|
|
<g transform="translate(16, 215)">
|
|
<rect x="0" y="0" width="115" height="22" rx="4" fill="#064e3b" stroke="#10b981" stroke-width="1" /><text x="57" y="15" fill="#a7f3d0" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">SHA1 Stable Val</text>
|
|
<rect x="123" y="0" width="85" height="22" rx="4" fill="#064e3b" stroke="#10b981" stroke-width="1" /><text x="165" y="15" fill="#a7f3d0" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">YOLO TXT</text>
|
|
<rect x="216" y="0" width="95" height="22" rx="4" fill="#064e3b" stroke="#10b981" stroke-width="1" /><text x="263" y="15" fill="#a7f3d0" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">Immutable</text>
|
|
</g>
|
|
</g>
|
|
|
|
<!-- STAGE 7 -->
|
|
<g id="stage-7" transform="translate(500, 540)">
|
|
<rect width="420" height="255" rx="14" fill="url(#card-grad)" stroke="#c084fc" stroke-width="1.5" stroke-opacity="0.75" filter="url(#shadow-card)" />
|
|
<rect x="0" y="0" width="420" height="42" rx="14" fill="#3b0764" /><rect x="0" y="28" width="420" height="14" fill="#3b0764" />
|
|
<rect x="14" y="8" width="80" height="26" rx="6" fill="url(#grad-s7)" />
|
|
<text x="54" y="25" fill="#ffffff" font-family="monospace" font-size="12" font-weight="800" text-anchor="middle">TAHAP 07</text>
|
|
<text x="106" y="26" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="14" font-weight="700">YOLO Retraining Engine</text>
|
|
<g transform="translate(382, 12)" fill="#c084fc"><path d="M 12 2 C 12 2 19 3 21 10 C 21 14 18 18 15 19 L 15 22 L 9 22 L 9 19 C 6 18 3 14 3 10 C 5 3 12 2 12 2 Z M 12 6 C 10.9 6 10 6.9 10 8 C 10 9.1 10.9 10 12 10 C 13.1 10 14 9.1 14 8 C 14 6.9 13.1 6 12 6 Z" transform="scale(0.85)" /></g>
|
|
<text x="16" y="68" fill="#d8b4fe" font-family="system-ui, sans-serif" font-size="13" font-weight="700">Fine-Tuning & mAP Benchmark</text>
|
|
<g transform="translate(16, 90)">
|
|
<circle cx="4" cy="4" r="3" fill="#c084fc" /><text x="14" y="8" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Ultralytics YOLO11 Fine-Tuning Pipeline</text>
|
|
<circle cx="4" cy="28" r="3" fill="#c084fc" /><text x="14" y="32" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">VRAM Auto-Tuning (Batch Size & Precision)</text>
|
|
<circle cx="4" cy="52" r="3" fill="#c084fc" /><text x="14" y="56" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Evaluasi Komparasi: Base vs New mAP50-95</text>
|
|
<circle cx="4" cy="76" r="3" fill="#c084fc" /><text x="14" y="80" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Export Bobot Unggul: best.pt & Matriks Metrik</text>
|
|
</g>
|
|
<g transform="translate(16, 215)">
|
|
<rect x="0" y="0" width="85" height="22" rx="4" fill="#3b0764" stroke="#c084fc" stroke-width="1" /><text x="42" y="15" fill="#f3e8ff" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">YOLO11</text>
|
|
<rect x="93" y="0" width="95" height="22" rx="4" fill="#3b0764" stroke="#c084fc" stroke-width="1" /><text x="140" y="15" fill="#f3e8ff" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">mAP 50-95</text>
|
|
<rect x="196" y="0" width="95" height="22" rx="4" fill="#3b0764" stroke="#c084fc" stroke-width="1" /><text x="243" y="15" fill="#f3e8ff" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">best.pt Save</text>
|
|
</g>
|
|
</g>
|
|
|
|
<!-- STAGE 8 -->
|
|
<g id="stage-8" transform="translate(40, 540)">
|
|
<rect width="420" height="255" rx="14" fill="url(#card-grad)" stroke="#22c55e" stroke-width="1.5" stroke-opacity="0.75" filter="url(#shadow-card)" />
|
|
<rect x="0" y="0" width="420" height="42" rx="14" fill="#052e16" /><rect x="0" y="28" width="420" height="14" fill="#052e16" />
|
|
<rect x="14" y="8" width="80" height="26" rx="6" fill="url(#grad-s8)" />
|
|
<text x="54" y="25" fill="#ffffff" font-family="monospace" font-size="12" font-weight="800" text-anchor="middle">TAHAP 08</text>
|
|
<text x="106" y="26" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="14" font-weight="700">Live Counter & Inference</text>
|
|
<g transform="translate(382, 12)" fill="#22c55e"><path d="M 12 2 C 6.5 2 2 6.5 2 12 C 2 17.5 6.5 22 12 22 C 17.5 22 22 17.5 22 12 C 22 6.5 17.5 2 12 2 Z M 12 18 C 8.7 18 6 15.3 6 12 C 6 8.7 8.7 6 12 6 Z M 12 18 C 8.7 18 6 15.3 6 12 C 6 8.7 8.7 6 12 6 C 15.3 6 18 8.7 18 12 C 18 15.3 15.3 18 12 18 Z M 12 10 C 10.9 10 10 10.9 10 12 C 10 13.1 10.9 14 12 14 C 13.1 14 14 13.1 14 12 C 14 10.9 13.1 10 12 10 Z" transform="scale(0.85)" /></g>
|
|
<text x="16" y="68" fill="#4ade80" font-family="system-ui, sans-serif" font-size="13" font-weight="700">ByteTrack & Headless Benchmark</text>
|
|
<g transform="translate(16, 90)">
|
|
<circle cx="4" cy="4" r="3" fill="#22c55e" /><text x="14" y="8" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Multi-Object Tracking Stabil via ByteTrack</text>
|
|
<circle cx="4" cy="28" r="3" fill="#22c55e" /><text x="14" y="32" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">LineCrossCounter pada Tripwire Y terkalibrasi</text>
|
|
<circle cx="4" cy="52" r="3" fill="#22c55e" /><text x="14" y="56" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Low-Latency WebRTC / WHEP Streaming (:8889)</text>
|
|
<circle cx="4" cy="76" r="3" fill="#22c55e" /><text x="14" y="80" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="12">Headless Benchmark Validasi vs Excel (GT.xlsx)</text>
|
|
</g>
|
|
<g transform="translate(16, 215)">
|
|
<rect x="0" y="0" width="85" height="22" rx="4" fill="#052e16" stroke="#22c55e" stroke-width="1" /><text x="42" y="15" fill="#bbf7d0" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">ByteTrack</text>
|
|
<rect x="93" y="0" width="105" height="22" rx="4" fill="#052e16" stroke="#22c55e" stroke-width="1" /><text x="145" y="15" fill="#bbf7d0" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">LineCross y1</text>
|
|
<rect x="206" y="0" width="95" height="22" rx="4" fill="#052e16" stroke="#22c55e" stroke-width="1" /><text x="253" y="15" fill="#bbf7d0" font-family="monospace" font-size="10.5" font-weight="600" text-anchor="middle">WHEP :8889</text>
|
|
</g>
|
|
</g>
|
|
|
|
<!-- STORAGE DOCK -->
|
|
<g id="storage-dock" transform="translate(40, 830)">
|
|
<rect width="1840" height="205" rx="14" fill="#0c1322" stroke="#1e293b" stroke-width="1.5" filter="url(#shadow-card)" />
|
|
<rect x="0" y="0" width="1840" height="34" rx="14" fill="#131c2e" /><rect x="0" y="20" width="1840" height="14" fill="#131c2e" />
|
|
<circle cx="20" cy="17" r="5" fill="#38bdf8" />
|
|
<text x="35" y="21" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="12.5" font-weight="700">LAPISAN PENYIMPANAN, DATABASE & TOPOLOGI JARINGAN (STORAGE & RUNTIME INFRASTRUCTURE)</text>
|
|
<g transform="translate(20, 50)">
|
|
<rect width="330" height="135" rx="8" fill="#111827" stroke="#334155" stroke-width="1" />
|
|
<rect x="10" y="10" width="6" height="24" rx="2" fill="#06b6d4" />
|
|
<text x="24" y="24" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="13" font-weight="700">Metadata & Job DB</text>
|
|
<text x="24" y="42" fill="#94a3b8" font-family="monospace" font-size="11">data/app.db (SQLite)</text>
|
|
<text x="14" y="70" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="11.5">• Projects, Slices & Video Catalog</text>
|
|
<text x="14" y="92" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="11.5">• Annotation States & History</text>
|
|
<text x="14" y="114" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="11.5">• Background Jobs & GPU Queue</text>
|
|
</g>
|
|
<g transform="translate(380, 50)">
|
|
<rect width="330" height="135" rx="8" fill="#111827" stroke="#334155" stroke-width="1" />
|
|
<rect x="10" y="10" width="6" height="24" rx="2" fill="#3b82f6" />
|
|
<text x="24" y="24" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="13" font-weight="700">Project Slices & Crops</text>
|
|
<text x="24" y="42" fill="#94a3b8" font-family="monospace" font-size="11">data/projects/{id}/</text>
|
|
<text x="14" y="70" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="11.5">• Ekstraksi Raw JPEGs (1.0 FPS)</text>
|
|
<text x="14" y="92" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="11.5">• Poligon SAM3 & Anotasi Manual</text>
|
|
<text x="14" y="114" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="11.5">• Crop Cache untuk Visual Triage</text>
|
|
</g>
|
|
<g transform="translate(740, 50)">
|
|
<rect width="330" height="135" rx="8" fill="#111827" stroke="#334155" stroke-width="1" />
|
|
<rect x="10" y="10" width="6" height="24" rx="2" fill="#10b981" />
|
|
<text x="24" y="24" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="13" font-weight="700">Master Dataset Freeze</text>
|
|
<text x="24" y="42" fill="#94a3b8" font-family="monospace" font-size="11">data/master_dataset/</text>
|
|
<text x="14" y="70" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="11.5">• train/ & val/ (SHA1 Immutable)</text>
|
|
<text x="14" y="92" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="11.5">• YOLO Format: .txt + data.yaml</text>
|
|
<text x="14" y="114" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="11.5">• Zero Leakage across Retrainings</text>
|
|
</g>
|
|
<g transform="translate(1100, 50)">
|
|
<rect width="330" height="135" rx="8" fill="#111827" stroke="#334155" stroke-width="1" />
|
|
<rect x="10" y="10" width="6" height="24" rx="2" fill="#c084fc" />
|
|
<text x="24" y="24" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="13" font-weight="700">Model Weights & Logs</text>
|
|
<text x="24" y="42" fill="#94a3b8" font-family="monospace" font-size="11">data/models/{id}/</text>
|
|
<text x="14" y="70" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="11.5">• Base Weights (yolo11*.pt)</text>
|
|
<text x="14" y="92" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="11.5">• Fine-tuned Weights (best.pt)</text>
|
|
<text x="14" y="114" fill="#cbd5e1" font-family="system-ui, sans-serif" font-size="11.5">• Benchmark Matrix: mAP, PR Curve</text>
|
|
</g>
|
|
<g transform="translate(1460, 50)">
|
|
<rect width="360" height="135" rx="8" fill="#111827" stroke="#334155" stroke-width="1" />
|
|
<rect x="10" y="10" width="6" height="24" rx="2" fill="#f59e0b" />
|
|
<text x="24" y="24" fill="#f8fafc" font-family="system-ui, sans-serif" font-size="13" font-weight="700">Port & Service Endpoints</text>
|
|
<text x="24" y="42" fill="#94a3b8" font-family="monospace" font-size="11">Docker & Edge Network</text>
|
|
<text x="14" y="68" fill="#e2e8f0" font-family="monospace" font-size="11">:8080 <tspan fill="#94a3b8">Web Studio</tspan> | :8000 <tspan fill="#94a3b8">FastAPI</tspan></text>
|
|
<text x="14" y="88" fill="#e2e8f0" font-family="monospace" font-size="11">:5173 <tspan fill="#94a3b8">Vite Dev</tspan> | :5000 <tspan fill="#94a3b8">Live UI</tspan></text>
|
|
<text x="14" y="108" fill="#e2e8f0" font-family="monospace" font-size="11">:8554 <tspan fill="#94a3b8">RTSP CCTV</tspan> | :8889 <tspan fill="#94a3b8">WebRTC</tspan></text>
|
|
</g>
|
|
</g>
|
|
</svg> |