昇腾杯-变化检测赛道复赛方案分享——PaddleCD
PaddleCD是基于PaddleSeg2.2修改的变化检测工具集,支持双时相并行输入/Siamese结构与变化标注,含OCR-CD等4种模型,曾用于昇腾杯(复赛TOP14)和PRCV2024(决赛TOP7)。现有训练中inf/nan的bug,原因不明。介绍了项目背景、数据集、方案及完整代码流程,后续将补充模型。

简述
基于PaddleSeg2.2,修改dataset、model、train、val等,实现变化检测功能,使用过程与PaddleSeg完全一致,便于快速进行网络训练、推理基于PaddleCD使用OCR-CD(魔改OCR-Net),在昇腾杯-变化检测赛道复赛排名TOP14,PRCV2024决赛排名TOP7目前仅实现了OCR-CD、SNUNet、DSAMNet、CDNet,后续会补充模型目前存在bug,训练一段时间后Found inf or nan, current scale is: 0.0, decrease to: 0.0 * 0.5,出现原因不详、出现时间不固定;且仅在前期收敛更新
v2:更新部分表述v3:更新项目背景、数据集说明1.项目背景
1.1 PaddleCD
之前对变化检测有过一些接触,今年下半年在参加PRCV2024遥感图像智能解译技术挑战赛时,为便于对代码进行调整,基于PaddleSeg2.2进行修改,实现了变化检测工具集——PaddleCD
变化检测的数据格式较多样(按标注类型大概分为变化标注、增加标注+减少标注、time1 gt+time2 gt+变化标注等,按网络结构的影像可以分双时相并行输入/Siamese结构、双时相叠加后输入/分割网络)
目前PaddleCD支持的是最简单的双时相并行输入/Siamese结构,标注类型——变化标注。其他结构可以在此项目基础上微调得到,后续如有接触相关内容也会更新。
现有网络OCR-CD——自己魔改结构,SNUNet——ppcd中网络的搬运、DSAMNet——DSAMNet的Paddle复现、CDNet——SenseEarth2020冠军方案Paddle复现
1.2 比赛介绍
变化检测是从不同时期的遥感数据中定量分析和确定地表变化的特征与过程;遥感变化检测是一个确定和评价各种地表现象随时间发生变化的过程;遥感变化检测是遥感瞬时视场中地表特征随时间发生的变化引起两个时期影像像元光谱响应的变化。[ * ]
PRCV2024遥感图像智能解译技术挑战赛链接:https://captain-whu.github.io/PRCV2024_RS/index.html
昇腾杯-变化检测赛道链接:https://rsipac.whu.edu.cn/subject_two
1.3 本项目内容
本项目为昇腾杯-变化检测赛道复赛排名TOP14方案代码实现,PRCV2024项目方案也采用了同样网络结构
2.数据集介绍
原始影像:影像格式为tif,包含R、G、B三个波段, 初赛数据集影像尺寸为512 * 512像素,共3194对样本
标签数据:标签格式为单通道的png,每个像素的标签值由一个数值表示, 使用‘uint8’数据类型存储,该数值表示是否为变化,“0”代表未变化,“1”代表变化。
3.项目方案——OCR-CD
OCR-CD根据OCRNet与Siamese结构设计得到,
OCR-CD设计有OCR、OCR_M、OCR_P共3种结构,3种结构精度无太大差异,OCR_M、OCR_P由于结构原因占用显存大,训练慢,因此常使用OCR结构
网络结构
backbone——使用HRNet分别对双时相影像进行特征提取,得到f1、f2特征处理OCR: 取f1、f2差值的绝对值fbOCR_M: 将f1、f2在通道维度合并得到fbOCR_P: 取f1、f2差值的绝对值fb,将f1、f2在通道维度合并得到fa输出头OCR、OCR_M:1个OCRHeadOCR_P:2个OCRHead分别处理fb,faOCR、OCR_M、OCR_P的config文件分别在PaddleCD-cd_config下的ocrnet.yml、ocrnet_m.yml、ocrnet_p.yml
4.PaddleCD必要结构说明
cd_config:存放配置文件paddleseg:核心代码core:包含具体的train、val、infer、predict代码,seg与cd有所不同transforms:数据预处理部分,seg与cd有所不同models:模型存放路径,cd部分——ocrnet、snunet、dsamnet、cdnet_parallel、cdnet_fusion,其余部分未修改,仍是seg功能datasets:存放数据集格式代码,本项目使用的是rscd中自定义的数据,可根据输入输出的不同进行修改cvlibs: 相关代码库,未修改utils: 相关代码库,未修改train.py: 调用核心代码的train过程val.py: 调用核心代码的val过程predict.py: 调用核心代码的predict过程5.项目完整代码
数据预处理
In [ ]# 清除cell输出结果def clear_output(): """ clear output for both jupyter notebook and the console """ import os os.system('cls' if os.name == 'nt' else 'clear') from IPython.display import clear_output as clear clear()登录后复制 In [ ]# 解压数据!unzip -oq /home/aistudio/data/data107059/train_png.zip -d /home/aistudio/data/src/!unzip -oq /home/aistudio/data/data107059/test_AB_png.zip -d /home/aistudio/data/src/登录后复制 In [ ]
# 安装依赖库!pip install -r /home/aistudio/PaddleCD/requirements.txtclear_output()登录后复制 In [ ]
# 生成数据集train.txt val.txt# !python /home/aistudio/work/data_generate.py# 直接拷贝已有的数据集划分文件,保证每次训练评价指标相同!cp /home/aistudio/work/train.txt /home/aistudio/data/src/train.txt!cp /home/aistudio/work/val.txt /home/aistudio/data/src/val.txt登录后复制
网络训练
In [9]# 模型训练!python /home/aistudio/PaddleCD/train.py \ --config /home/aistudio/PaddleCD/cd_config/ocrnet.yml \ --do_eval \ --use_vdl \ --iters 8000 \ --save_interval 200 \ --save_dir /home/aistudio/data/output \ --batch_size=8 \ --log_iters 20 \ --fp16# 后台训练时,需要清空输出,保证notebook正常导入;notebook训练时,可以不用# clear_output()登录后复制 In [ ]
# 将最优模型拷贝到/home/aistudio/best_model路径下!mkdir /home/aistudio/best_model/!cp /home/aistudio/data/output/best_model/model.pdparams /home/aistudio/best_model/model.pdparams!find /home/aistudio/data/output -name '*.log' -exec cp -t /home/aistudio/best_model/ "{}" +登录后复制 测试
In [7]# 普通测试!python /home/aistudio/PaddleCD/val.py \ --config /home/aistudio/PaddleCD/cd_config/ocrnet.yml \ --batch_size 16 \ --model_path /home/aistudio/best_model/model.pdparams登录后复制 In [8]
# 增强测试!python /home/aistudio/PaddleCD/val.py \ --config /home/aistudio/PaddleCD/cd_config/ocrnet.yml \ --aug_eval \ --flip_vertical \ --batch_size 16 \ --model_path /home/aistudio/best_model/model.pdparams登录后复制 In [ ]
!python /home/aistudio/work/data_sta.py登录后复制
推理
In [ ]# 增强推理, 推理结果保存在/home/aistudio/data/src/result下!python /home/aistudio/PaddleCD/predict.py \ --config /home/aistudio/PaddleCD/cd_config/ocrnet.yml \ --model_path /home/aistudio/best_model2/model.pdparams \ --image_path /home/aistudio/data/src/test_AB_png/A \ --image_path2 /home/aistudio/data/src/test_AB_png/B \ --aug_pred \ --flip_vertical \ --batch_size 32 \ --save_dir /home/aistudio/data/src登录后复制
推理展示
In [ ]from PIL import Imagefrom collections import namedtupleimport matplotlib.pyplot as pltCls = namedtuple('cls', ['name', 'id', 'color'])Clss = [ Cls('bg', 0, (0, 0, 0)), Cls('change', 1, (255, 255, 255)),]def get_putpalette(Clss, color_other=[0, 0, 0]): ''' 灰度图转8bit彩色图 :param Clss:颜色映射表 :param color_other:其余颜色设置 :return: ''' putpalette = [] for cls in Clss: putpalette += list(cls.color) putpalette += color_other * (255 - len(Clss)) return putpalettebin_colormap = get_putpalette(Clss)登录后复制 In [ ]%matplotlib inlineimg1_path = r'/home/aistudio/data/src/test_AB_png/A/1.webp'img2_path = r'/home/aistudio/data/src/test_AB_png/B/1.webp'pred_path = r'/home/aistudio/data/src/result/1.webp'img1 = Image.open(img1_path)plt.imshow(img1)plt.show()img2 = Image.open(img2_path)plt.imshow(img2)plt.show()pred = Image.open(pred_path)pred.putpalette(bin_colormap)plt.imshow(pred)plt.show登录后复制
登录后复制登录后复制登录后复制
登录后复制登录后复制登录后复制
登录后复制
登录后复制登录后复制登录后复制
相关攻略
零基础学习Python可从安装环境开始。前往官网下载最新稳定版,安装时勾选添加PATH选项。验证安装后,创建 py文件并写入print()函数输出文本。通过命令行运行文件,观察输出结果。理解代码按顺序执行,注意括号与引号的正确使用。初期不必死记语法,通过修改代码并运行来建立动手反馈的实践感。
Trae的AI功能深度适配FastAPI与Flask框架。针对FastAPI,它能精准识别异步架构与类型注解,提供模型定义、路由补全及异步数据库建议;在Flask中,则侧重理解装饰器链、请求上下文与ORM操作,辅助完成权限控制与数据库提交等典型模式。此外,Trae具备跨框架语义索引能力,可感知项目结构、依赖变更与工具函数调用,提升开发效率。
Trae在Python数据分析与机器学习项目中主要通过四种方式提供支持:利用Auto模式自动生成并执行端到端分析脚本;通过AgentCLI命令行自动化机器学习建模流程;对现有代码进行智能调试与优化;借助语音交互快速构建数据处理函数。这些功能覆盖了从需求描述到代码生成、模型构建及代码优化的全流程。
在Python编程中,你是否也曾编写过类似的统计代码? 统计词频 count = {} for word in words: if word in count: count[word] += 1 else: count[word] = 1 实际上,这种高频的计数需求,完全可以通过Python内置
Trae稳定支持Python3 10至3 13版本,3 9及以下版本无法运行。Python3 14处于实验性支持阶段,核心功能可能受限。当存在多个3 10以上版本时,Trae优先选择虚拟环境中的解释器,其次为最高系统版本。此外,Trae仅兼容64位Python解释器,不支持32位架构。
热门专题
热门推荐
公安部就电子数据取证规则公开征求意见,拟将网络安全等行政案件纳入适用范围,并规范取证流程与核心概念。新规特别明确了获取密码、调取通讯内容等特殊程序,需经严格审批并保障当事人权利。配套法律文书也同步优化,以构建更规范且注重权利保障的取证体系。
理想L9和LIvis的定价策略刚掀起波澜,小鹏GX的最终价格就给出了更猛烈的回应——从近40万元的预售价直降至27万元起。用小鹏产品矩阵负责人吴安飞的话说,这叫“9系的产品,8系的价格”。 这12万元的下调,效果堪称立竿见影。发布会次日,小鹏集团港股股价一度大涨超8%。更关键的是市场订单:上市12小
5月21日,环塔拉力赛新疆且末赛段大营迎来了一位备受瞩目的访客——知名零售企业胖东来的创始人于东来。他专程前往长城汽车车队营地,与参赛车手及后勤团队进行了深度交流。据悉,于东来此次自驾越野之旅已历时一月,随行车队中包含多款国产越野车型。经过实地驾驶与多维度对比,他对以长城汽车为代表的国产越野车品质给
比特币官方入口在哪里?一个核心门户的权威指南 说起比特币,很多人第一反应是去找它的“官网”或“官方App”。但这里有个关键点需要先理清:比特币本质上是一种去中心化的全球数字货币,它不属于任何一家公司或机构,而是由一个庞大的、遍布全球的社区共同维护。因此,它并没有传统意义上由某个企业运营的“官方网站”
Ring-2 5-1T是什么 在当今大模型技术激烈竞争的赛道上,追求更长的上下文处理能力和更强大的深度推理性能已成为核心焦点。近日,蚂蚁集团旗下的inclusionAI团队重磅开源了Ring-2 5-1T模型,这是一个参数规模高达万亿级别的混合线性思考大语言模型。该模型基于先进的Ling 2 5架构





