Files
autopilot/dissertation/_media/gan_patchgan_discriminator.svg
2026-05-30 14:49:40 +03:00

119 lines
6.3 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<svg xmlns="http://www.w3.org/2000/svg" width="1800" height="1000" viewBox="0 0 1800 1000">
<defs>
<marker id="arrow" markerWidth="16" markerHeight="16" refX="14" refY="8" orient="auto">
<path d="M0,0 L16,8 L0,16 Z" fill="#1f2937"/>
</marker>
<style>
.bg { fill: #fafafa; }
.title { font: 700 40px Arial, sans-serif; fill: #111827; }
.subtitle { font: 400 21px Arial, sans-serif; fill: #4b5563; }
.box { stroke-width: 3; rx: 18; }
.blue { fill: #eaf3ff; stroke: #3b82f6; }
.orange { fill: #fff1df; stroke: #f59e0b; }
.violet { fill: #f0ebff; stroke: #7c3aed; }
.green { fill: #eaf8ef; stroke: #22a06b; }
.red { fill: #fff1f2; stroke: #ef4444; }
.label { font: 700 27px Arial, sans-serif; fill: #111827; text-anchor: middle; }
.desc { font: 400 18px Arial, sans-serif; fill: #4b5563; text-anchor: middle; }
.small { font: 400 16px Arial, sans-serif; fill: #6b7280; text-anchor: middle; }
.arrow { stroke: #1f2937; stroke-width: 4; fill: none; marker-end: url(#arrow); }
.branch { stroke: #6b7280; stroke-width: 3.5; fill: none; marker-end: url(#arrow); }
.icon-line { stroke: #111827; stroke-width: 5; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.patch-grid { stroke: #7c3aed; stroke-width: 3; fill: none; }
.p1 { fill: #bbf7d0; }
.p2 { fill: #fde68a; }
.p3 { fill: #fecaca; }
.stage { font: 700 20px Arial, sans-serif; fill: #374151; text-anchor: middle; }
</style>
</defs>
<rect class="bg" width="1800" height="1000"/>
<text class="title" x="90" y="80">Дискриминатор PatchGAN</text>
<text class="subtitle" x="90" y="118">Проверяет пару изображений локальными патчами: настоящая ли это пара Google + Яндекс или результат генератора</text>
<text class="stage" x="245" y="195">Входные пары</text>
<text class="stage" x="690" y="195">Объединение</text>
<text class="stage" x="1125" y="195">PatchGAN</text>
<text class="stage" x="1530" y="195">Оценка</text>
<g transform="translate(90 240)">
<rect class="box green" width="310" height="205"/>
<text class="label" x="155" y="54">Real pair</text>
<text class="desc" x="155" y="85">Google + настоящий Яндекс</text>
<text class="small" x="155" y="116">целевая метка: 1</text>
<path class="icon-line" d="M78 158 C112 130, 150 176, 190 145 C211 128, 230 124, 250 122"/>
</g>
<g transform="translate(90 555)">
<rect class="box red" width="310" height="205"/>
<text class="label" x="155" y="54">Fake pair</text>
<text class="desc" x="155" y="85">Google + Generated Яндекс</text>
<text class="small" x="155" y="116">целевая метка: 0</text>
<path class="icon-line" d="M78 158 C112 130, 150 176, 190 145 C211 128, 230 124, 250 122"/>
</g>
<path class="branch" d="M420 342 H485 V470 H545"/>
<path class="branch" d="M420 657 H485 V520 H545"/>
<g transform="translate(565 390)">
<rect class="box blue" width="255" height="210"/>
<text class="label" x="128" y="58">Concat</text>
<text class="desc" x="128" y="92">6 каналов</text>
<text class="small" x="128" y="124">RGB Google + RGB Yandex</text>
<text class="small" x="128" y="154">B x 6 x 256 x 256</text>
</g>
<path class="arrow" d="M840 495 H930"/>
<g transform="translate(950 295)">
<rect class="box violet" width="350" height="400"/>
<text class="label" x="175" y="58">Сверточные блоки</text>
<text class="desc" x="175" y="92">Conv + BatchNorm + LeakyReLU</text>
<path class="icon-line" d="M78 170 H272"/>
<path class="icon-line" d="M78 230 H272"/>
<path class="icon-line" d="M78 290 H272"/>
<circle cx="95" cy="170" r="12" fill="#bfdbfe" stroke="#111827" stroke-width="4"/>
<circle cx="155" cy="170" r="12" fill="#bfdbfe" stroke="#111827" stroke-width="4"/>
<circle cx="215" cy="170" r="12" fill="#bfdbfe" stroke="#111827" stroke-width="4"/>
<circle cx="120" cy="230" r="12" fill="#c4b5fd" stroke="#111827" stroke-width="4"/>
<circle cx="180" cy="230" r="12" fill="#c4b5fd" stroke="#111827" stroke-width="4"/>
<circle cx="240" cy="230" r="12" fill="#c4b5fd" stroke="#111827" stroke-width="4"/>
<circle cx="145" cy="290" r="12" fill="#fed7aa" stroke="#111827" stroke-width="4"/>
<circle cx="205" cy="290" r="12" fill="#fed7aa" stroke="#111827" stroke-width="4"/>
<text class="small" x="175" y="352">64 -> 128 -> 256 -> 512</text>
</g>
<path class="arrow" d="M1320 495 H1410"/>
<g transform="translate(1430 295)">
<rect class="box orange" width="280" height="400"/>
<text class="label" x="140" y="58">Patch map</text>
<text class="desc" x="140" y="92">оценка real/fake</text>
<g transform="translate(78 135)">
<rect class="patch-grid" width="124" height="124" rx="8"/>
<rect class="p1" x="10" y="10" width="28" height="28"/>
<rect class="p2" x="48" y="10" width="28" height="28"/>
<rect class="p1" x="86" y="10" width="28" height="28"/>
<rect class="p2" x="10" y="48" width="28" height="28"/>
<rect class="p1" x="48" y="48" width="28" height="28"/>
<rect class="p3" x="86" y="48" width="28" height="28"/>
<rect class="p1" x="10" y="86" width="28" height="28"/>
<rect class="p2" x="48" y="86" width="28" height="28"/>
<rect class="p1" x="86" y="86" width="28" height="28"/>
</g>
<text class="small" x="140" y="310">каждая ячейка</text>
<text class="small" x="140" y="336">соответствует локальной</text>
<text class="small" x="140" y="362">области изображения</text>
</g>
<path class="arrow" d="M1570 720 V755 H1095 V785"/>
<g transform="translate(855 790)">
<rect class="box green" width="480" height="130"/>
<text class="label" x="240" y="50">Функция потерь</text>
<text class="desc" x="240" y="82">реальная пара -> 1, сгенерированная пара -> 0</text>
</g>
<text class="small" x="900" y="960">Главная идея PatchGAN: проверять не всю карту одним числом, а локальные признаки стиля и структуры.</text>
</svg>