本文为PaddleRS实现变化检测提供保姆级教程,涵盖数据组织、模型训练到推理应用全流程。其贡献包括独家的变化检测数据集切片代码、数据列表生成、推理示例,还详解配置文件参数。介绍了PaddleRS及变化检测任务特殊性,浅析相关网络架构与训练文件,补全套件功能,最后展示结果,助力新手掌握全流程。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

在官方详细教程发布前,可参考本保姆级教程,从数据组织、模型训练到推理应用,让你一键跑通,纵享丝滑
本项目主要贡献:

PaddleRS是基于飞桨开发的遥感处理平台,支持遥感图像分类,目标检测,图像分割,以及变化检测等常用遥感任务,帮助开发者更便捷地完成从训练到部署全流程遥感深度学习应用。
变化检测任务较为特殊,需要给网络提供前后两个时相的遥感影像与对应label,无基础的用户可能应用困难。
图像分类、目标检测、语义分割三大任务可参考对应的套件,但变化检测没得参考。
本项目应运而生,为国产开源贡献绵薄之力。
以cdnet为例,路径:PaddleRS/ paddlers / custom_models / cd / models / cdnet.py
非常简单的三部分:



以cdnet为例,路径:tutorials/train/change_detection/cdnet_build.py
model = pdrs.tasks.CDNet(num_classes=num_classes, in_channels=6),其中num_classes是读取的label.txt的行数。由num_classes = len(train_dataset.labels)获取。
大部分情况下,变化检测是二分类任务,所以label.txt随便写两行即可,例如:
0
1
train_transforms = T.Compose([
T.Resize(target_size=512),
T.RandomHorizontalFlip(),
T.Normalize( mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]),
])train_dataset = pdrs.datasets.CDDataset( data_dir='E:/dataFiles/github/PaddleRS/tutorials/train/change_detection/DataSet', file_list='tutorials/train/change_detection/DataSet/train.txt', label_list='tutorials/train/change_detection/DataSet/labels.txt', transforms=train_transforms, num_workers=0, shuffle=True)
model.train( num_epochs=1, train_dataset=train_dataset, train_batch_size=4, eval_dataset=eval_dataset, learning_rate=0.01, pretrain_weights=None, save_dir='output/cdnet')
保留原数据集结构,work/train,val,text三个文件夹下所有图片一键切片,克隆原数据集目录结构,方便快捷
顺便说个bug !python PaddleRS/setup.py install 会报错 FileNotFoundError: [Errno 2] No such file or directory: 'README.md'
# 准备数据!unzip -oq data/data136610/LEVIR-CD.zip -d data/# 切片!python work/spliter-cd.py --image_folder data/LEVIR-CD --block_size 256 --save_folder dataset# 创建列表!python work/create_list.py --image_folder ./dataset/train --A A --B B --label label --save_txt train.txt !python work/create_list.py --image_folder ./dataset/val --A A --B B --label label --save_txt val.txt !python work/create_list.py --image_folder ./dataset/test --A A --B B --label label --save_txt test.txt
# 准备环境!git clone https://gitee.com/cloudzhangyi/PaddleRS.git !pip install -r PaddleRS/requirements.txt
# 开始训练!cp ./work/cdnet_build_and_train.py PaddleRS/tutorials/train/change_detection !python PaddleRS/tutorials/train/change_detection/cdnet_build_and_train.py
运行上面代码,会产生output/cdnet/vdl_log文件夹,此文件内文件是VisualDL可读取的训练信息

按照上图步骤,启动可视化,查看训练曲线

# 这是你训练的权重,如果你训练充分的话用这个# !python work/cdnet_predict.py --weight output/cdnet/best_model/model.pdparams --A dataset/test/A/test_2_0_0.png --B dataset/test/B/test_2_0_0.png --pre ./work/pre.png# 这是我训练的权重,直接看的话用这个,100个epoch!python work/cdnet_predict.py --weight work/model.pdparams --A dataset/test/A/test_2_0_0.png --B dataset/test/B/test_2_0_0.png --pre ./work/pre.png
test数据集中结果展示,从左到右分别是T1,T2,label,prediction,分析图
分析图中:
蓝色:True Positive (真正, TP)被模型预测为正的正样本
绿色:False Positive (假正, FP)被模型预测为正的负样本
红色:False Negative(假负 , FN)被模型预测为负的正样本





毕竟用的最简单的网络,效果并不是很好,训练100个rpoch,验证集最佳F1值在0.85左右
本项目至此结束,希望PaddleRS越做越好。
以上就是PaddleRS 手把手教你PaddleRS实现变化检测的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号