注意,项目仍在开发中,尚未发行稳定版本。
使用 PaddlePaddle 开发的基于深度学习遥感影像变化检测项目,可作为算法开发、训练框架,也可作为基线测试平台。
CDLab也拥有 PyTorch 版本。
English | 简体中文
opencv-python==4.1.1
paddlepaddle-gpu==2.2.0
visualdl==2.2.1
pyyaml==5.1.2
scikit-image==0.15.0
scikit-learn==0.21.3
scipy==1.3.1
tqdm==4.35.0
在 Python 3.7.4,Ubuntu 16.04 环境下测试通过。
在 src/constants.py
文件中将相应常量修改为数据集存放的位置。
针对数据集的预处理脚本存放在 scripts/
目录下。
运行如下指令以从头训练一个模型:
python train.py train --exp_config PATH_TO_CONFIG_FILE
在 configs/
目录中已经包含了一部分现成的配置文件,可供直接使用。注意,由于时间和精力的限制,配置文件中提供的超参数可能并没有经过充分调优,您可以通过修改超参数进一步提升模型的效果。
训练脚本开始执行后,首先会输出配置信息到屏幕,然后会有出现一个提示符,指示您输入一些笔记。这些笔记将被记录到日志文件中。如果在一段时间后,您忘记了本次实验的具体内容,这些笔记可能有助于您回想起来。当然,您也可以选择按下回车键直接跳过。
如果需要从一个检查点(checkpoint)开始继续训练,运行如下指令:
python train.py train --exp_config PATH_TO_CONFIG_FILE --resume PATH_TO_CHECKPOINT
以下是对其它一些常用命令行选项的介绍:
anew
: 如果您希望指定的检查点只是用于初始化模型参数,指定此选项。请注意,从一个不兼容的模型中获取部分层的参数对待训练的模型进行初始化也是允许的。save_on
: 如果需要在进行模型评估的同时储存模型的输出结果,指定此选项。项目默认采用基于 epoch 的训练器。在每个 epoch 末尾,训练器也将在验证集上评估模型的性能。log_off
: 指定此选项以禁用日志文件。vdl_on
: 指定此选项以启用 VisualDL 日志。debug_on
: 指定此选项以在程序崩溃处自动设置断点,便于进行事后调试。
更多配置项可在此处查看。
在训练过程中或训练完成后,您可以在 exp/DATASET_NAME/weights/
目录下查看模型权重文件,在 exp/DATASET_NAME/logs/
目录下查看日志文件,在 exp/DATASET_NAME/out/
目录下查看输出的变化图。
使用如下指令在测试集上评估已训练好的模型:
python train.py eval --exp_config PATH_TO_CONFIG_FILE --resume PATH_TO_CHECKPOINT --save_on --subset test
本项目也提供在大幅栅格影像上进行滑窗测试的功能。使用如下指令:
python sw_test.py --exp_config PATH_TO_CONFIG_FILE \
--resume PATH_TO_CHECKPOINT --ckp_path PATH_TO_CHECKPOINT \
--t1_dir PATH_TO_T1_DIR --t2_dir PATH_TO_T2_DIR --gt_dir PATH_TO_GT_DIR
对于 src/sw_test.py
文件,其它一些常用的可选命令行参数包括:
--window_size
: 设置滑窗大小。--stride
: 设置滑窗滑动步长。--glob
: 指定在t1_dir
、t2_dir
、和gt_dir
中匹配文件名的 pattern (通配符)。--threshold
: 指定将模型输出的变化概率二值化时使用的阈值。
不过,请注意当前 src/sw_test.py
功能有限,并不支持一些较为复杂的自定义预处理和后处理模块。
模型名称 | 对应名称 | 链接 |
---|---|---|
CDNet | CDNet |
paper |
FC-EF | UNet |
paper |
FC-Siam-conc | SiamUNet-conc |
paper |
FC-Siam-diff | SiamUNet-diff |
paper |
STANet | STANet |
paper |
DSIFN | IFN |
paper |
SNUNet | SNUNet |
paper |
BIT | BIT |
paper |
L-UNet | LUNet |
paper |
DSAMNet | DSAMNet |
paper |
数据集名称 | 对应名称 | 链接 |
---|---|---|
Synthetic images and real season-varying remote sensing images | SVCD |
google drive |
WHU building change detection dataset | WHU |
website |
LEVIR building change detection dataset | LEVIRCD |
website |
Model | Precision | Recall | F1 | OA |
---|---|---|---|---|
CDNet | 93.21 | 87.72 | 90.39 | 97.70 |
FC-EF | 94.14 | 88.78 | 91.38 | 97.93 |
FC-Siam-conc | 95.40 | 92.06 | 93.70 | 98.47 |
FC-Siam-diff | 95.74 | 92.80 | 94.24 | 98.60 |
STANet | 90.07 | 97.91 | 93.82 | 98.41 |
DSIFN | 97.31 | 95.32 | 96.31 | 99.10 |
SNUNet | 97.76 | 97.22 | 97.49 | 99.38 |
BIT | 96.71 | 95.09 | 95.90 | 99.00 |
L-UNet | 96.83 | 95.54 | 96.18 | 99.06 |
DSAMNet | 91.65 | 98.37 | 94.89 | 98.69 |
请参见 docs/
目录中的内容。
本项目基于此模板开发,针对 PaddlePaddle 框架做了一些迁移和改进。关于这部分的设计思想可参考此处。
该项目采用 Unlicense 开源许可证。
欢迎大家为本项目贡献代码和意见。