119 lines
6.3 KiB
XML
119 lines
6.3 KiB
XML
<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>
|