100 lines
6.7 KiB
XML
100 lines
6.7 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 300" width="800" height="300">
|
|
<defs>
|
|
<marker id="tv-arr" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">
|
|
<path d="M0,0 L8,3 L0,6" fill="#333"/>
|
|
</marker>
|
|
<marker id="tv-arr-red" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">
|
|
<path d="M0,0 L8,3 L0,6" fill="#e74c3c"/>
|
|
</marker>
|
|
<marker id="tv-arr-blue" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">
|
|
<path d="M0,0 L8,3 L0,6" fill="#3498db"/>
|
|
</marker>
|
|
</defs>
|
|
|
|
<!-- Title -->
|
|
<text x="400" y="22" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="#333">Text-to-Video Generation Pipeline</text>
|
|
|
|
<!-- Text Prompt -->
|
|
<rect x="20" y="110" width="105" height="36" rx="8" fill="#e74c3c" fill-opacity="0.08" stroke="#e74c3c" stroke-width="1.2" stroke-dasharray="4,2"/>
|
|
<text x="72" y="133" text-anchor="middle" font-family="Arial, sans-serif" font-size="9" fill="#e74c3c">"a dog running</text>
|
|
<text x="72" y="143" text-anchor="middle" font-family="Arial, sans-serif" font-size="9" fill="#e74c3c">on the beach"</text>
|
|
|
|
<!-- Arrow -->
|
|
<line x1="125" y1="128" x2="148" y2="128" stroke="#333" stroke-width="1.2" marker-end="url(#tv-arr)"/>
|
|
|
|
<!-- Text Encoder -->
|
|
<rect x="155" y="108" width="100" height="40" rx="8" fill="#e74c3c" fill-opacity="0.12" stroke="#e74c3c" stroke-width="1.5"/>
|
|
<text x="205" y="125" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" font-weight="bold" fill="#e74c3c">Text Encoder</text>
|
|
<text x="205" y="140" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#666">CLIP / T5</text>
|
|
|
|
<!-- Arrow from text encoder downward to cross-attention -->
|
|
<line x1="205" y1="148" x2="205" y2="175" stroke="#e74c3c" stroke-width="1.2" marker-end="url(#tv-arr-red)"/>
|
|
<text x="205" y="170" text-anchor="middle" font-family="Arial, sans-serif" font-size="7" fill="#e74c3c">text embeddings</text>
|
|
|
|
<!-- Spacetime Noise (3D volume) -->
|
|
<text x="88" y="195" text-anchor="middle" font-family="Arial, sans-serif" font-size="9" font-weight="bold" fill="#666">Spacetime Noise</text>
|
|
|
|
<!-- 3D volume representation -->
|
|
<!-- Back face -->
|
|
<rect x="48" y="205" width="50" height="40" rx="2" fill="#3498db" fill-opacity="0.06" stroke="#3498db" stroke-width="0.8"/>
|
|
<!-- Middle face -->
|
|
<rect x="58" y="215" width="50" height="40" rx="2" fill="#3498db" fill-opacity="0.08" stroke="#3498db" stroke-width="0.8"/>
|
|
<!-- Front face -->
|
|
<rect x="68" y="225" width="50" height="40" rx="2" fill="#3498db" fill-opacity="0.1" stroke="#3498db" stroke-width="1"/>
|
|
<!-- Noise dots on front face -->
|
|
<circle cx="80" cy="238" r="1.2" fill="#3498db" opacity="0.5"/>
|
|
<circle cx="92" cy="245" r="1" fill="#3498db" opacity="0.4"/>
|
|
<circle cx="100" cy="235" r="1.2" fill="#3498db" opacity="0.6"/>
|
|
<circle cx="85" cy="252" r="1" fill="#3498db" opacity="0.35"/>
|
|
<circle cx="108" cy="248" r="1.2" fill="#3498db" opacity="0.45"/>
|
|
|
|
<!-- Dimension labels -->
|
|
<text x="93" y="272" text-anchor="middle" font-family="Arial, sans-serif" font-size="7" fill="#999">H x W x T</text>
|
|
|
|
<!-- Arrow from noise to denoiser -->
|
|
<line x1="120" y1="238" x2="175" y2="238" stroke="#333" stroke-width="1.2" marker-end="url(#tv-arr)"/>
|
|
|
|
<!-- Temporal DiT / U-Net (large box) -->
|
|
<rect x="182" y="185" width="250" height="75" rx="8" fill="#3498db" fill-opacity="0.12" stroke="#3498db" stroke-width="1.5"/>
|
|
<text x="307" y="210" text-anchor="middle" font-family="Arial, sans-serif" font-size="11" font-weight="bold" fill="#3498db">Temporal DiT / 3D U-Net</text>
|
|
<text x="307" y="226" text-anchor="middle" font-family="Arial, sans-serif" font-size="9" fill="#666">Spatial + Temporal Attention</text>
|
|
<text x="307" y="242" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#999">Denoise jointly across space and time</text>
|
|
|
|
<!-- Cross-attention arrow entering from top -->
|
|
<path d="M205,175 L205,185" fill="none" stroke="#e74c3c" stroke-width="1.5" stroke-dasharray="4,2" marker-end="url(#tv-arr-red)"/>
|
|
|
|
<!-- Circular iteration arrow -->
|
|
<path d="M432,210 C458,190 462,225 448,240 C438,252 420,252 410,248" fill="none" stroke="#3498db" stroke-width="1.5" marker-end="url(#tv-arr-blue)"/>
|
|
<text x="470" y="225" text-anchor="start" font-family="Arial, sans-serif" font-size="8" fill="#3498db">denoise</text>
|
|
<text x="470" y="236" text-anchor="start" font-family="Arial, sans-serif" font-size="8" fill="#3498db">T steps</text>
|
|
|
|
<!-- Arrow from denoiser to decoder -->
|
|
<line x1="432" y1="222" x2="510" y2="222" stroke="#333" stroke-width="1.2" marker-end="url(#tv-arr)"/>
|
|
|
|
<!-- Denoised latents label -->
|
|
<text x="475" y="212" text-anchor="middle" font-family="Arial, sans-serif" font-size="7" fill="#666">denoised</text>
|
|
<text x="475" y="220" text-anchor="middle" font-family="Arial, sans-serif" font-size="7" fill="#666">latents</text>
|
|
|
|
<!-- 3D VAE Decoder -->
|
|
<rect x="518" y="200" width="110" height="45" rx="8" fill="#27ae60" fill-opacity="0.12" stroke="#27ae60" stroke-width="1.5"/>
|
|
<text x="573" y="220" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" font-weight="bold" fill="#27ae60">3D VAE</text>
|
|
<text x="573" y="234" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" font-weight="bold" fill="#27ae60">Decoder</text>
|
|
|
|
<!-- Arrow to video frames -->
|
|
<line x1="628" y1="222" x2="660" y2="222" stroke="#333" stroke-width="1.2" marker-end="url(#tv-arr)"/>
|
|
|
|
<!-- Stack of video frames -->
|
|
<rect x="665" y="175" width="42" height="32" rx="3" fill="#27ae60" fill-opacity="0.06" stroke="#27ae60" stroke-width="0.8"/>
|
|
<rect x="672" y="183" width="42" height="32" rx="3" fill="#27ae60" fill-opacity="0.08" stroke="#27ae60" stroke-width="0.8"/>
|
|
<rect x="679" y="191" width="42" height="32" rx="3" fill="#27ae60" fill-opacity="0.1" stroke="#27ae60" stroke-width="0.8"/>
|
|
<rect x="686" y="199" width="42" height="32" rx="3" fill="#27ae60" fill-opacity="0.15" stroke="#27ae60" stroke-width="1"/>
|
|
<rect x="693" y="207" width="42" height="32" rx="3" fill="#27ae60" fill-opacity="0.2" stroke="#27ae60" stroke-width="1"/>
|
|
<rect x="700" y="215" width="42" height="32" rx="3" fill="#27ae60" fill-opacity="0.25" stroke="#27ae60" stroke-width="1.2"/>
|
|
|
|
<!-- Frame labels -->
|
|
<text x="714" y="255" text-anchor="middle" font-family="Arial, sans-serif" font-size="9" fill="#27ae60">Video Frames</text>
|
|
<text x="714" y="267" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#999">f1, f2, ..., fN</text>
|
|
|
|
<!-- Bottom annotation -->
|
|
<text x="400" y="290" text-anchor="middle" font-family="Arial, sans-serif" font-size="9" fill="#999">Examples: Sora, CogVideo, Make-A-Video, Imagen Video</text>
|
|
</svg> |