主要记录了介绍 STGAN 网络对于去云的效果论文中,作为对照组的 pix2pix 方法的复现。pix2pix 是一种解决image to image translation
的条件对抗网络。代码来源于作者公开的源码仓库,相关数据集也来源于作者建议的数据集来源。
环境配置
整个过程都在 Anaconda 环境下进行操作。为了方便管理,我首先创建了一个用于 pytorch 运行的虚拟环境。
sh复制代码
1conda create -n pytorch python=3.9.0
这里需要特别注明需要的 python 版本,否则会在后续的 install 环节报错。
安装完成后,激活该虚拟环境。
sh复制代码
1conda activate pytorch
在该环境下根据已有的requirements.txt
文件装包。
sh复制代码
1pip install -r requirements.txt
数据预处理
从https://doi.org/10.7910/DVN/BSETKZ
处下载所需的单时相/多时相数据集后解压得到文件夹,此时的文件结构并不符合训练所要求的结构。
text复制代码
1dir 2|- cloudy 3 |- train 4 |- test 5 |- val 6|- clear 7 |- train 8 |- test 9 |- val
为了首先将数据集分割为上述的结构,需要自行编写一个split.py
脚本(作者并没有提供)。同时,该数据集大约有 8w 份训练数据,全部训练会消耗大量的时间,因此在这一步我们会随机提取 1k 份数据进行训练。
运行脚本后,我们已初步抽样、分割,此时的数据已经满足了进行combine
的要求,将有云图和无云图拼在一起进行后续的训练。
sh复制代码
1python datasets/combine_normal.py --fold_A divide_single/cloudy/ --fold_B divide_single/clear/ --fold_AB ./single_combined
最终得到single_combined
数据集,预处理完毕。
训练/测试
训练与测试部分仓库已经有对应的指令。
sh复制代码1python train.py --dataroot ./single_combined --name pix2pix --model pix2pix #训练
2python test.py --dataroot ./single_combined --name pix2pix --model pix2pix #测试
测试完毕后,结果会默认生成在./results/stgan/test_latest/index.html
,可以自行查看。
评价
pix2pix 由于是个基于单时相数据的网络模型,对于包括了大片厚云的地形就几乎不可能处理。同时,如果这个数据集里大量包含这样的数据,训练样本增加后,模型就趋向于将整张图片的特征就去掉。人肉眼观察输出的图片就会感觉效果很差。 相较于隔壁基于多时相数据的模型,pix2pix 在去云方面似乎确实不行 👎