遥感图像变化检测完整方案:change_detection.pytorch 快速搭建 PyTorch 深度学习模型 遥感图像变化检测完整方案change_detection.pytorch 快速搭建 PyTorch 深度学习模型【免费下载链接】change_detection.pytorchDeep learning models for change detection of remote sensing images项目地址: https://gitcode.com/gh_mirrors/ch/change_detection.pytorchchange_detection.pytorch 是一个基于 PyTorch 的遥感图像变化检测深度学习库内置 11 种检测架构、100 多种预训练编码器和多种损失函数让你用几行代码就能搭建出孪生编码器结构的变化检测模型直接训练、评估、出图。 它解决什么问题手里有两个时间点的卫星影像想找出哪些地方发生了变化新建的建筑、消失的厂房但逐张人眼比对既慢又不一致想上深度学习做变化检测却发现通用的分割库segmentation并不针对两期影像配对设计得自己搭双输入、特征融合那一套搭好了又要纠结网络结构、预训练权重、损失函数怎么配从零复现论文工作量不小。这个项目就是为此而生的它基于 segmentation_models.pytorch 的思路改造把双编码器 单解码器这一变化检测专用结构封装成了现成的类。你只需要选架构、选编码器、配数据训练循环、指标计算、推理出图都已内置。⚙️ 核心能力展示change_detection.pytorch 双编码器变化检测模型架构图双编码器架构专为两期影像设计孪生编码器分别提取两期图像特征siam_encoderTrue独立不互相干扰解码器负责融合两路特征支持 concat、sum、diff、abs_diff 多种融合方式整条链路可端到端训练无需手工设计特征工程。丰富的模型库架构与编码器自由组合11 种检测架构Unet、Unet、Linknet、FPN、PSPNet、PAN、DeepLabV3/V3、UPerNet、MAnet、STANet100 余种预训练编码器ResNet、EfficientNet、MobileNet、VGG、DenseNet、Swin Transformer 等参数量从 0.4M 到数百 M 任选通过encoder_weightsimagenet一行开启预训练权重冷启动精度明显好于随机初始化。开箱即用的训练与评估工具内置 LEVIR-CD、SVCD 两个经典变化检测数据集的读取类含默认数据增强训练循环、F-score / Precision / Recall 指标、学习率调度器封装成TrainEpoch/ValidEpoch几行代码跑起训练推理支持保存变化图也可切换到滑动窗口模式处理大图。 三步跑通第一个变化检测模型第 1 步克隆仓库并安装依赖git clone https://gitcode.com/gh_mirrors/ch/change_detection.pytorch cd change_detection.pytorch pip install -r requirements.txt第 2 步准备数据以 LEVIR-CD 为例把数据按下面的目录结构放在仓库同级目录local_test.py默认从这里读取LEVIR-CD/ ├── train/ │ ├── A/ # 第一期影像 │ ├── B/ # 第二期影像 │ └── label/ # 变化标注 └── test/第 3 步直接运行示例脚本python local_test.py示例脚本里已经配好了完整流程Unet resnet34 编码器、Adam 优化器、60 个 epoch训练结束会自动保存 F-score 最高的权重并把变化检测图输出到./res目录。打开看看效果你就跑通了第一个变化检测模型。 功能全景能力域提供的内容检测架构11 种Unet、Unet、Linknet、FPN、PSPNet、PAN、DeepLabV3、DeepLabV3、UPerNet、MAnet、STANet编码器家族ResNet / ResNeXt / ResNeSt / Res2Net / RegNet / SENet / SK-Net / DenseNet / Inception / EfficientNet / MobileNet / VGG / DPN / GERNet / Swin Transformer / MiT 等损失函数CrossEntropyLoss、DiceLoss、JaccardLoss、FocalLoss、TverskyLoss、LovaszLoss、BCL、HybridLoss 等评估指标Fscore、Precision、Recall配合激活函数使用数据集LEVIR-CD、SVCD 内置读取类 通用自定义数据集类训练工具TrainEpoch / ValidEpoch 训练循环、学习率调度器、推理可视化含滑动窗口️ 场景走查建筑物变化检测以官方示例local_test.py在 LEVIR-CD 数据集上做建筑物变化检测为例输入两期影像 A、B 及变化标注放在LEVIR-CD/train与LEVIR-CD/test下。处理cdp.Unet搭配 resnet34 编码器、siam_encoderTrue孪生结构、fusion_formconcat特征融合Adam 优化器lr0.0001、MultiStepLR 在第 50 个 epoch 把学习率乘以 0.1共训练 60 个 epoch每个 epoch 训练 验证。输出每轮打印 loss 和 F-scoreF-score 创新高时自动保存best_model.pth最后infer_vis把测试集的变化检测图写入./res。效果这套库已被用于变化检测竞赛并取得成绩——PRCV2021 变化检测竞赛第 3 名见仓库内COMPETITIONS.md。具体精度取决于你的数据和训练配置建议以自己验证集上的 F-score 为准。 如何挑选合适的组合如果你只是想快速验证想法、跑通流程 →Unet resnet34 CrossEntropyLoss官方示例就是这个组合最简单直接如果你的显存或算力有限 →Linknet mobilenet_v2编码器仅约 2M 参数是库中最轻量的选择之一如果你追求精度上限 →DeepLabV3Plus efficientnet-b7多尺度特征提取 大参数量编码器适合数据量充足、时间充裕的场景如果你想用专为变化检测设计的结构 →STANet内置时空注意力模块是库中唯一按变化检测场景定制架构设计的选项。编码器大小可以参考 README 中的参数表如 resnet18 约 11M、resnet101 约 42M按你的显卡显存往上或往下选。⚠️ 常见坑与对策现象报错Wrong encoder name ...原因encoder_name写错或该编码器不存在。对策调用cdp.encoders.get_encoder_names()打印全部合法名称照着选。现象报错Wrong pretrained weights ... for encoder原因该编码器没有你指定的预训练权重如某些编码器只有 ssl/swsl 权重没有 imagenet。对策对照 README 编码器表格权重一列选择或临时设encoder_weightsNone先跑通流程。现象数据读取报错或缺少标注原因目录结构不符合A / B / label约定或图片后缀不是默认的.png。对策核对数据目录层级后缀不同时显式传img_suffix参数。现象训练中途显存不足OOM原因batch size 或图像尺寸对显卡来说偏大。对策调小batch_size示例中为 8或减小数据集参数中的size。 快速开始清单克隆仓库pip install -r requirements.txt装好依赖按A / B / label结构组织你的数据放到 LEVIR-CD 目录下运行python local_test.py等它训练出best_model.pth打开./res目录查看变化检测图对照标注检查效果满意后按选型指南换架构和编码器开始你自己的实验。去试一把吧——先跑通官方示例再换上自己的数据你的第一个遥感变化检测模型离你只差这几行代码。【免费下载链接】change_detection.pytorchDeep learning models for change detection of remote sensing images项目地址: https://gitcode.com/gh_mirrors/ch/change_detection.pytorch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考