Alessandro-Carotenuto/synt_satellite_vqgan_from_TT

GitHub: Alessandro-Carotenuto/synt_satellite_vqgan_from_TT

基于VQGAN和Transformer架构的跨视角图像合成工具,可将地面街景照片转换为卫星俯视图。

Stars: 0 | Forks: 0

# Ground2Satellite — 跨视角图像合成 使用 VQGAN + Transformer 架构,基于 CVUSA 数据集训练,从地面街景照片生成卫星图像。 本项目基于 Esser 等人的 [Taming Transformers](https://github.com/CompVis/taming-transformers) 构建。VQGAN 和 Net2Net Transformer 架构直接取自该仓库。 ## 工作原理 该模型结合了两个组件: - **VQGAN**(在 ImageNet 上预训练)— 将图像编码为离散 token 序列,并将其解码回图像 - **GPT Transformer**(minGPT)— 学习在以地面级 token 为条件的情况下预测卫星 token 序列 VQGAN 在训练期间被冻结。仅训练 transformer。 在推理时,街景照片被编码为 256 个 token,transformer 以自回归方式生成 256 个卫星 token,VQGAN 再将其解码为最终图像。 ## 项目结构 ``` . ├── config.py # User configuration (edit this) ├── train_transformer.py # Training entry point ├── inference.py # Inference functions ├── taming_interface.py # Model building, checkpointing, VQGAN interface ├── CVUSA_Manager.py # Dataset loading ├── fixermodule.py # Compatibility fixes for taming-transformers ├── setup.py # Environment setup script ├── requirements.txt # Dependencies └── CVUSA_subset/ # Dataset directory (local only, see below) ``` ## 数据集 使用 Kaggle 上可用的预处理数据集,CSV 文件已修复: **[CVUSA Subset — CSV Fixed](https://www.kaggle.com/datasets/carotenutoalessandro/cvusa-subset-csvfixed)** ### 本地设置 下载数据集并将其放置在项目根目录的 `CVUSA_subset_csvfixed/` 文件夹中: ``` CVUSA_subset_csvfixed/ ├── train-19zl_fixed.csv ├── val-19zl_fixed.csv ├── streetview/ ├── bingmap/ └── polarmap/ ``` ### Kaggle 设置 在 Kaggle notebook 中导入数据集。它将自动在 `/kaggle/input/cvusa-subset-csvfixed` 处可用 — 无需进一步步骤。 ## 设置 **本地:** ``` python setup.py ``` **Kaggle:** ``` !git clone https://github.com/Alessandro-Carotenuto/synt_satellite_vqgan_from_TT %cd synt_satellite_vqgan_from_TT !python setup.py ``` 这将安装所有依赖项并克隆 taming-transformers。可选择在训练前编辑 `config.py`(参见配置)。 ## 配置 所有用户设置均在 `config.py` 中: ``` KAGGLE_FLAG = "KAGGLE_KERNEL_RUN_TYPE" in os.environ # automatic, don't touch if KAGGLE_FLAG: DATA_ROOT = "/kaggle/input/cvusa-subset-csvfixed" else: DATA_ROOT = "CVUSA_subset_csvfixed" NUM_EPOCHS = 75 LEARNING_RATE = 5e-4 BATCH_SIZE = 8 ``` 在 Kaggle 上,直接在运行前覆盖参数: ``` import config config.NUM_EPOCHS = 100 # only needed if you want to change the defaults config.BATCH_SIZE = 16 ``` ## 训练 **本地:** ``` python train_transformer.py ``` **Kaggle:** ``` import train_transformer train_transformer.main() ``` Checkpoints 会自动保存在工作目录中: - **Best model** — 每当测试 loss 下降时保存,前一个会被删除 - **Routine checkpoint** — 每 5 个 epoch 保存一次 ## 推理 ### 加载已保存的模型 ``` from taming_interface import load_saved_model model, _, device = load_saved_model("checkpoints/my_checkpoint.pth") ``` ### 单张图像 ``` from inference import single_image_inference single_image_inference( model, "CVUSA_subset_csvfixed/streetview/0000001.jpg", device=device, temperature=1.0, # lower = more deterministic, higher = more varied top_k=600, top_p=0.92, save_image=True ) ``` ### 在验证集上快速测试 对验证集的前 5 张图像运行推理: ``` from inference import test_inference import config test_inference(model, data_root=config.DATA_ROOT, device=device) ``` ## 环境要求 - Python 3.8+ - 建议使用支持 CUDA 的 GPU - [taming-transformers](https://github.com/CompVis/taming-transformers)(由 `setup.py` 自动安装) ## 致谢 - [Taming Transformers for High-Resolution Image Synthesis](https://github.com/CompVis/taming-transformers) — Esser et al., 2021 - [CVUSA Dataset](https://mvrl.cse.wustl.edu/datasets/cvusa/) — Zhai et al., 2017
标签:CVUSA数据集, GPT, minGPT, PyTorch, Transformer, VQGAN, 全景图转俯视图, 凭据扫描, 图像合成, 图像翻译, 地理定位辅助, 地面到卫星, 无人机视觉, 深度学习, 漏洞管理, 生成模型, 神经网络, 自回归生成, 街景生成, 计算机视觉, 跨视图图像生成, 逆向工具, 遥感图像