feat: add GAN

This commit is contained in:
2026-05-30 14:49:40 +03:00
parent 6477ce0776
commit 72e1950127
29 changed files with 2670 additions and 361 deletions

View File

@@ -0,0 +1,119 @@
<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; }
.stage { font: 700 20px Arial, sans-serif; fill: #374151; text-anchor: middle; }
.box { stroke-width: 3; rx: 18; }
.blue { fill: #eaf3ff; stroke: #3b82f6; }
.orange { fill: #fff1df; stroke: #f59e0b; }
.green { fill: #eaf8ef; stroke: #22a06b; }
.violet { fill: #f0ebff; stroke: #7c3aed; }
.main { font: 700 28px 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); }
.thin { stroke: #6b7280; stroke-width: 3; fill: none; marker-end: url(#arrow); }
.dash { stroke: #6b7280; stroke-width: 3; fill: none; stroke-dasharray: 10 9; marker-end: url(#arrow); }
.icon-line { stroke: #111827; stroke-width: 5; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.icon-fill { fill: #ffffff; stroke: #111827; stroke-width: 4; }
.kp { fill: #16a34a; stroke: #ffffff; stroke-width: 3; }
.bad { fill: #ef4444; stroke: #ffffff; stroke-width: 3; }
</style>
</defs>
<rect class="bg" width="1800" height="1000"/>
<text class="title" x="90" y="80">Применение GAN для приведения карт к единому домену</text>
<text class="subtitle" x="90" y="118">Нейросеть меняет стиль карты, а дальнейшее сопоставление выполняется классическими геометрическими методами</text>
<text class="stage" x="255" y="190">Исходные данные</text>
<text class="stage" x="720" y="190">Доменная адаптация</text>
<text class="stage" x="1185" y="190">Сопоставление</text>
<text class="stage" x="1545" y="190">Результат</text>
<g transform="translate(90 235)">
<rect class="box blue" width="330" height="210"/>
<text class="main" x="165" y="54">Google Maps</text>
<text class="desc" x="165" y="86">фрагмент области полета</text>
<path class="icon-line" d="M85 145 C122 118, 164 169, 210 132 C230 116, 248 111, 272 110"/>
<path class="icon-line" d="M82 170 L280 118"/>
<circle class="kp" cx="116" cy="142" r="9"/>
<circle class="kp" cx="208" cy="132" r="9"/>
</g>
<g transform="translate(90 555)">
<rect class="box orange" width="330" height="210"/>
<text class="main" x="165" y="54">Яндекс.Карты</text>
<text class="desc" x="165" y="86">эталон с ориентирами</text>
<path class="icon-line" d="M85 145 C122 118, 164 169, 210 132 C230 116, 248 111, 272 110"/>
<path class="icon-line" d="M82 170 L280 118"/>
<circle class="kp" cx="116" cy="142" r="9"/>
<circle class="kp" cx="208" cy="132" r="9"/>
</g>
<path class="arrow" d="M440 340 H555"/>
<g transform="translate(575 300)">
<rect class="box orange" width="290" height="260"/>
<text class="main" x="145" y="58">GAN</text>
<text class="desc" x="145" y="91">Google -> Yandex</text>
<path class="icon-line" d="M80 170 L115 128 L150 170 L185 128 L220 170"/>
<text class="small" x="145" y="218">сохраняет геометрию</text>
<text class="small" x="145" y="242">меняет визуальный стиль</text>
</g>
<path class="arrow" d="M885 430 H1000"/>
<g transform="translate(1020 300)">
<rect class="box orange" width="330" height="260"/>
<text class="main" x="165" y="58">Сгенерированный кадр</text>
<text class="desc" x="165" y="91">карта в целевом домене</text>
<path class="icon-line" d="M85 166 C122 139, 164 190, 210 153 C230 137, 248 132, 272 131"/>
<path class="icon-line" d="M82 191 L280 139"/>
<circle class="kp" cx="116" cy="163" r="9"/>
<circle class="kp" cx="208" cy="153" r="9"/>
<circle class="kp" cx="250" cy="139" r="9"/>
</g>
<path class="dash" d="M420 660 C635 775, 940 775, 1040 580"/>
<path class="thin" d="M1185 580 V650"/>
<g transform="translate(1020 650)">
<rect class="box green" width="330" height="190"/>
<text class="main" x="165" y="52">Ключевые точки</text>
<text class="desc" x="165" y="84">ORB / SIFT / AKAZE</text>
<circle class="kp" cx="92" cy="132" r="10"/>
<circle class="kp" cx="142" cy="116" r="10"/>
<circle class="kp" cx="193" cy="139" r="10"/>
<circle class="kp" cx="244" cy="111" r="10"/>
<path class="icon-line" d="M90 132 L142 116 L193 139 L244 111"/>
</g>
<path class="arrow" d="M1370 745 H1445"/>
<g transform="translate(1465 650)">
<rect class="box green" width="245" height="190"/>
<text class="main" x="122" y="52">RANSAC</text>
<text class="desc" x="122" y="84">отбор совпадений</text>
<circle class="kp" cx="83" cy="130" r="10"/>
<circle class="kp" cx="124" cy="114" r="10"/>
<circle class="bad" cx="164" cy="137" r="10"/>
</g>
<path class="arrow" d="M1590 630 V530"/>
<g transform="translate(1425 300)">
<rect class="box violet" width="285" height="260"/>
<text class="main" x="142" y="58">Гомография H</text>
<text class="desc" x="142" y="91">связь координат</text>
<path class="icon-fill" d="M95 135 L172 118 L196 184 L112 201 Z"/>
<path class="icon-line" d="M103 212 L197 110"/>
<text class="small" x="142" y="238">коррекция позиции БПЛА</text>
</g>
<text class="small" x="900" y="930">Итог: изображения становятся визуально ближе, поэтому классические методы получают больше устойчивых совпадений.</text>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB