pix2pix去云雾复现
发布于 2022718|更新于 2022721|遵循 CC BY-NC-SA 4.0 许可

主要记录了介绍 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 在去云方面似乎确实不行 👎

Comments