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, 全景图转俯视图, 凭据扫描, 图像合成, 图像翻译, 地理定位辅助, 地面到卫星, 无人机视觉, 深度学习, 漏洞管理, 生成模型, 神经网络, 自回归生成, 街景生成, 计算机视觉, 跨视图图像生成, 逆向工具, 遥感图像