十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

change_detection.pytorch 遥感图像变化检测:3步跑通11种深度学习模型

change_detection.pytorch 遥感图像变化检测:3步跑通11种深度学习模型 change_detection.pytorch 遥感图像变化检测3步跑通11种深度学习模型【免费下载链接】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 种变化检测架构和 30 多种预训练编码器几行代码就能组装出可训练的双时相比较模型。这篇文章面向想入门遥感变化检测、有基本 Python 和深度学习概念的你看完你可以完成环境安装、搭出第一个模型并知道如何把自己的数据接进去。做变化检测项目先别急着从零搭模型做遥感图像变化检测的时候你是不是也碰到过这些麻烦人工比对两期卫星图太慢标注变化区域费时费力从零写网络的话编码器、特征融合、损失函数、训练循环全得自己捋换个架构又得重写半套训练代码。说白了这类项目 80% 的工作量是搭架子真正属于你的创新其实不多。change_detection.pytorch 做的事就是把搭架子这部分打包成了现成的组件你只管选零件。项目速览change_detection.pytorch 能做什么定位面向遥感图像的 PyTorch 变化检测工具库结构参考 segmentation_models.pytorch解决什么给你两期遥感图像自动输出一张哪里变了的二值变化图核心思路双编码器分别提特征单解码器融合输出端到端训练技术栈PyTorch timm albumentations编码器自带 ImageNet 预训练权重适用场景建筑变化、城市更新、灾后评估等双时相影像对比任务你拿到手的是一个变化检测模型组装器编码器、解码器、损失函数三者解耦按需组合即可。无论你做的是卫星图像变化识别的完整流程、还是深度学习遥感分析课题或者只想先在 LEVIR-CD 这类基准数据上跑个原型这里的组件都齐了不用自己造轮子。change_detection.pytorch 变化检测模型双编码器架构示意图双编码器架构与特征融合方式解析这个项目最核心的设计是双编码器 单解码器。两期图像比如 2014 年和 2021 年拍的同一区域并行喂给两个分支每个编码器只管提取自己那期的特征最后由解码器把两组特征融合输出变化图。为什么要分两个分支你可以类比两个人各自独立检查同一栋楼的两张老照片再坐在一起对差异——每个分支只关心这一期长什么样融合时才回答哪里变了。这样设计还有个好处两期图像用完全相同的特征提取逻辑模型学到的差异不会被提取方式本身污染。真正让你动手的只有两个参数siam_encoderTrue孪生结构两个分支共享同一套编码器权重保证对称性fusion_form决定特征怎么融合——concat 直接拼接、sum 逐元素相加、diff 和 abs_diff 逐元素相减后两者相当于让网络直接盯着差异看也就是说你不用写任何融合逻辑改一个参数就是不同的融合策略实验成本极低。动手上手环境配置与最小可运行示例环境准备与依赖安装git clone https://gitcode.com/gh_mirrors/ch/change_detection.pytorch cd change_detection.pytorch pip install -r requirements.txt这段代码做的事是把仓库克隆下来并一次性装好全部依赖前提是 PyTorch 已装好。模型选择与初始化步骤import change_detection_pytorch as cdp # 用 Unet 做骨架ResNet34 做编码器 model cdp.Unet( encoder_nameresnet34, # 编码器可换成 efficientnet-b7 等 encoder_weightsimagenet, # 加载 ImageNet 预训练权重 in_channels3, # 输入通道数RGB 为 3 classes2, # 输出变化 / 未变化 两类 siam_encoderTrue, # 孪生两个分支共享编码器 fusion_formconcat, # 特征融合方式concat/sum/diff/abs_diff )这段代码做的事是组装出一个完整的变化检测模型。resnet34、concat这些参数都可以换换完就是一个新模型代码一行不用改。数据集输入与参数配置你需要准备的是两期图像加变化标签按A/一期图、B/二期图、label/二值标签文件名与图像一一对应三个文件夹组织即可。from change_detection_pytorch.datasets import LEVIR_CD_Dataset train_ds LEVIR_CD_Dataset(../LEVIR-CD/train, sub_dir_1A, sub_dir_2B, ann_dir../LEVIR-CD/train/label)这段代码做的事是指向 LEVIR-CD 训练目录构建数据集A/B/label 会自动读取。换成自己的数据时把目录指过去、按上面的结构摆好文件夹就能用。能力全景11种变化检测架构与全套组件变化检测架构11 种Unet / UnetPlusPlus最经典稳定入门首选Linknet参数量少、推理快MAnet多尺度空间注意力PAN金字塔注意力多尺度特征融合DeepLabV3 / DeepLabV3Plus空洞卷积做多尺度特征提取FPN / PSPNet / UPerNet三种经典多尺度解析结构STANet时空注意力专为变化检测任务设计编码器30 家族均带预训练权重ResNet 系resnet18~152速度与精度平衡轻量级mobilenet_v2、mobilenetv3、efficientnet-b0~b7注意力系SENet、ResNeSt、SK-ResNeXt、Res2NeXtTransformer 系Swin Transformer、Mix Transformer其他VGG、DenseNet、DPN、RegNet 及 timm 全家桶损失函数与工具CrossEntropyLoss / SoftCrossEntropyLoss标准交叉熵DiceLoss / TverskyLoss应对类别不平衡FocalLoss聚焦难分样本JaccardLoss / LovaszLoss直接优化 IoUHybridLoss多种损失加权组合BCLLoss边界一致性正则cdp.utils.metricsFscore / Precision / Recall 现成可用实战走一遍LEVIR-CD 建筑物变化检测训练LEVIR-CD 是最经典的基准数据集共 637 对 1024×1024 的建筑遥感影像训练集 500 对时间跨 5~14 年涵盖新建、拆除、改建三类场景。项目给的典型链路完整训练脚本见 local_test.py是这样的数据LEVIR_CD_Dataset 构建训练/验证集batch_size8模型Unet resnet34 孪生编码器 concat 融合训练Adam 优化器、学习率 0.0001第 50 个 epoch 起 MultiStepLR 衰减 0.1 倍共训 60 个 epoch按 F-score 保存最优权重评估验证集直接算 Fscore、Precision、Recall最后infer_vis输出变化图这套配置下 F-score 通常在 0.85 上下精确率约 0.87、召回率约 0.83、IoU 约 0.74。更关键的佐证是这个库在 PRCV2021 变化检测竞赛中拿了第三名说明它不只是刷基准数据的玩具真实竞赛场景里也扛得住。不同场景的模型选型建议如果你只是快速验证想法架构Unet结构简单、训练快编码器resnet3421M 参数速度和精度平衡损失CrossEntropyLoss收敛最稳耗时单 GPU 约 2~4 小时如果你追求精度架构DeepLabV3Plus多尺度特征提取能力强编码器efficientnet-b7精度上限更高损失HybridLossDice Focal 组合应对不平衡和难例如果资源有限架构Linknet参数少、推理快编码器mobilenet_v2仅 2M 参数训练调小图像尺寸和 batch_size单 GPU 一两小时出结果高频踩坑点与解决方案我一开始也栽过学习率直接开 0.001前几个 epoch 就震荡不收敛后来降到 0.0001 才稳住。以下几个坑基本是高频区loss 不下降几个 epoch 后原地横盘→ 学习率调到 0.0001~0.001 之间检查标签和图像是否对得上换 DiceLoss它对类别不平衡更宽容训练 OOM显存爆掉→ 减小 batch_size仓库示例用 8按卡调整缩小图像尺寸推理阶段改滑动窗口推理太慢→ 换 mobilenetv3 这类轻量编码器用 ChunkImage 把大图切块推理导出 ONNX 跨平台部署过拟合训练涨、验证不涨→ 加大 albumentations 数据增强强度按验证 F-score 做早停换成更轻的编码器项目亮点提炼模块化组合11 种架构 × 30 编码器 × 10 种损失函数任意搭配孪生结构siam_encoderTrue一个参数得到双分支网络融合方式四选一竞赛验证PRCV2021 变化检测竞赛第三名数据集开箱即用内置 LEVIR_CD、SVCD自定义数据只需摆对三个文件夹训练工具链齐全TrainEpoch/ValidEpoch 封装训练循环Fscore 等指标直接接损失函数覆盖全面从交叉熵到 HybridLoss、BCL组合损失不用自己写部署友好模型是标准 PyTorch Module可正常导出 ONNXchange_detection.pytorch 把遥感图像变化检测里最费事的模型组装、数据加载、训练循环三件事都打包好了新手一小时内能跑通第一个实验。建议你先照着 local_test.py 完整跑一遍再按自己的数据换编码器和损失做对照卡住了再翻测试脚本看最小用例。接下来可以重点看这几处local_test.py完整的训练与推理示例tests/test_models.py各模型的最小化测试脚本change_detection_pytorch/datasets/custom.py自定义数据集实现接自己数据的入口【免费下载链接】change_detection.pytorchDeep learning models for change detection of remote sensing images项目地址: https://gitcode.com/gh_mirrors/ch/change_detection.pytorch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表