feat: gan integration
This commit is contained in:
@@ -1,2 +1,52 @@
|
||||
2.5 Обучение моделей глубокого обучения
|
||||
|
||||
\section{2.5.4 Обучение «GAN» на датасете «YaGoMaps V2»}
|
||||
|
||||
Для проверки применимости генеративно-состязательной сети к задаче приведения картографических изображений к единому домену было выполнено обучение модели GAN на датасете `YaGoMaps V2`. Датасет содержит парные изображения одних и тех же географических участков, полученные из Google Maps и Яндекс.Карт. В рамках эксперимента изображение Google использовалось как вход генератора, а соответствующее изображение Яндекс.Карт -- как целевой домен.
|
||||
|
||||
Обучение выполнялось на устройстве `cuda`, что позволило проводить полный цикл обучения модели без перехода на CPU. После разделения данных было сформировано 316 обучающих и 79 валидационных примеров. С учетом размера пакета 32 это соответствовало 10 итерациям на эпоху для обучающей выборки и 3 итерациям для валидационной выборки. Генератор содержал 39 157 763 обучаемых параметра, дискриминатор -- 2 769 601 параметр.
|
||||
|
||||
| Параметр | Значение |
|
||||
|---|---|
|
||||
| Датасет | `YaGoMaps V2` |
|
||||
| Устройство обучения | `cuda` |
|
||||
| Обучающая выборка | 316 изображений |
|
||||
| Валидационная выборка | 79 изображений |
|
||||
| Количество эпох | 300 |
|
||||
| Размер пакета | 32 |
|
||||
| Параметры генератора | 39 157 763 |
|
||||
| Параметры дискриминатора | 2 769 601 |
|
||||
| Лучшая валидационная ошибка реконструкции | 35,3304 |
|
||||
|
||||
Таблица X - Основные параметры обучения GAN на датасете `YaGoMaps V2`
|
||||
|
||||
Функция потерь генератора включала состязательную компоненту, L1-ошибку, структурную ошибку SSIM и ошибку по границам, вычисляемую по оператору Собеля. Такая комбинация была выбрана из-за специфики картографических изображений: модель должна не только приблизить цветовую и стилевую палитру Google Maps к Яндекс.Картам, но и сохранить геометрию дорог, перекрестков, кварталов и других ориентиров. Сохранение контуров особенно важно, так как результат генератора далее может использоваться в классическом пайплайне сопоставления ключевых точек и оценки гомографии.
|
||||
|
||||
В начале обучения наблюдалось быстрое снижение ошибки генератора и реконструкционных компонент. На первой эпохе средняя ошибка генератора на обучающей выборке составила 50,3793, L1-компонента -- 32,1376, SSIM-компонента -- 13,7808, edge-компонента -- 4,2270. На валидации после первой эпохи значение ошибки реконструкции составило 43,9219. Уже к 20-й эпохе обучающая ошибка генератора снизилась до 32,6649, а ошибка реконструкции на валидации -- до 35,4286.
|
||||
|
||||
Минимальное значение валидационной ошибки реконструкции было достигнуто на раннем этапе обучения и составило 35,3304. Данный результат соответствует эпохе, на которой модель еще сохраняла баланс между реконструкционным качеством и обобщающей способностью. После этого обучающая ошибка продолжала снижаться, однако валидационная ошибка начала колебаться и постепенно увеличиваться. Например, к 100-й эпохе обучающая ошибка генератора снизилась до 25,0163, но валидационная ошибка реконструкции составила 36,1303. К 300-й эпохе обучающая ошибка генератора достигла 19,5036, тогда как валидационная ошибка реконструкции увеличилась до 38,4682.
|
||||
|
||||
Такое поведение указывает на частичное переобучение генератора под обучающую выборку. Модель постепенно улучшала восстановление обучающих пар, но это не приводило к дальнейшему улучшению качества на отложенных примерах. Дополнительным признаком насыщения состязательного процесса является снижение ошибки дискриминатора на обучающей выборке до малых значений. На 300-й эпохе ошибка дискриминатора на обучении составила 0,0016, тогда как на валидации -- 0,3348. Это означает, что дискриминатор уверенно различал обучающие примеры, а генератор продолжал оптимизироваться преимущественно под обучающие данные.
|
||||
|
||||
Наиболее показательные значения метрик приведены в таблице.
|
||||
|
||||
| Эпоха | train G | train D | val G | val D | val rec |
|
||||
|---:|---:|---:|---:|---:|---:|
|
||||
| 1 | 50,3793 | 0,4947 | 44,1364 | 0,2827 | 43,9219 |
|
||||
| 20 | 32,6649 | 0,1742 | 35,5899 | 0,2482 | 35,4286 |
|
||||
| 23 | 33,0033 | 0,0721 | 35,5553 | 0,2352 | 35,3304 |
|
||||
| 100 | 25,0163 | 0,0066 | 36,4437 | 0,3317 | 36,1303 |
|
||||
| 200 | 21,3662 | 0,0034 | 37,9867 | 0,3280 | 37,6665 |
|
||||
| 300 | 19,5036 | 0,0016 | 38,7948 | 0,3348 | 38,4682 |
|
||||
|
||||
Таблица X - Динамика основных метрик обучения GAN
|
||||
|
||||
По результатам эксперимента для дальнейшего использования целесообразно выбирать не финальное состояние модели после 300 эпох, а чекпоинт с минимальной валидационной ошибкой реконструкции. В данном запуске таким чекпоинтом является модель с `val_rec = 35,3304`. Она обеспечивает лучший компромисс между переносом визуального стиля Яндекс.Карт и сохранением структуры изображения на данных, не участвовавших в обучении.
|
||||
|
||||
Рисунок X - График изменения ошибки генератора при обучении GAN
|
||||
|
||||
Рисунок X - График изменения ошибки дискриминатора при обучении GAN
|
||||
|
||||
Рисунок X - График изменения реконструкционных компонент L1, SSIM и edge loss
|
||||
|
||||
Рисунок X - Пример преобразования изображения Google Maps в стиль Яндекс.Карт
|
||||
|
||||
Reference in New Issue
Block a user