
滑坡智能识别遥感卫星无人机多源影像数据集深度学习语义分割开源基准地质灾害应急监测正从人工目视解译迈向AI自动化解译滑坡识别作为地质灾害防控核心环节面临样本稀缺、场景单一、尺度不均、标注粗糙四大痛点严重制约模型泛化与工程落地。本项目发布多区域、多分辨率、高精度标注滑坡遥感数据集配套完整深度学习训练推理代码为科研与工程提供开箱即用的基准方案助力滑坡智能识别技术快速迭代。数据集信息数据规模20,865张高分辨率遥感影像总容量8.55GB覆盖区域9大典型滑坡灾区含国内外地震诱发滑坡场景影像来源PlanetScope、SuperView-1、GF-1卫星无人机航拍分辨率0.2m/0.5m/0.6m/1.0m多尺度覆盖标准格式512×512像素TIFF格式RGB三波段标注体系分类标签像素级掩码适配语义分割/目标检测应用方向滑坡识别、灾害清单制图、语义分割模型训练区域与数据明细序号英文标识核心说明1Hokkaido Iburi-Tobu2018日本北海道地震滑坡PlanetScope卫星2Jiuzhai Valley(UAV-0.2m)2017九寨沟地震0.2m无人机掩膜标注3Jiuzhai Valley(UAV-0.5m)九寨沟区域0.5m无人机影像4Lombok2018印尼龙目岛地震滑坡遥感提取5Longxi River(SAT)四川陇西河0.8m卫星滑坡提取6Longxi River(UAV)陇西河区域0.2m无人机滑坡掩膜7Mengdong Township云南勐董乡0.5m影像掩膜8Moxi Town(UAV)四川莫溪镇0.2m/1m多尺度变化检测9Palu2018印尼帕卢地震滑坡液化10Tiburon Peninsula2021海地地震多源卫星融合目录结构landslide-remote-sensing-dataset/ ├── README.md # 说明文档 ├── images/ # 原始影像TIFF ├── masks/ # 像素级掩码 ├── labels/ # 分类标签 ├── splits/ # 训练/验证/测试划分 ├── code/ │ ├── dataset.py # 数据加载 │ ├── model.py # 网络定义 │ ├── train.py # 训练脚本 │ ├── infer.py # 推理脚本 │ └── utils.py # 工具函数 └── docs/ # 技术文档深度学习核心代码# -*- coding: utf-8 -*- 主题 遥感滑坡语义分割标准训练流程 场景 适配卫星无人机多源数据解决小目标/边缘模糊/样本不均衡 框架 PyTorch segmentation_models_pytorch 数据 本项目512×512 TIFF像素级掩码标注 importosimporttorchimporttorch.nnasnnimportalbumentationsasAfromalbumentations.pytorchimportToTensorV2fromtorch.utils.dataimportDataset,DataLoaderimportsegmentation_models_pytorchassmpfromtqdmimporttqdmimportcv2importnumpyasnp# 1. 全局配置滑坡场景优化DEVICEcudaiftorch.cuda.is_available()elsecpuIMG_SIZE512IN_CHANNELS3NUM_CLASSES1LEARNING_RATE1e-4BATCH_SIZE8EPOCHS50DATA_ROOT./IMG_DIRos.path.join(DATA_ROOT,images)MASK_DIRos.path.join(DATA_ROOT,masks)# 2. 数据增强遥感滑坡专用# 保留地物纹理/坡度信息避免畸变导致边界误判train_transformA.Compose([A.Resize(IMG_SIZE,IMG_SIZE),A.HorizontalFlip(p0.5),A.VerticalFlip(p0.5),A.RandomRotate90(p0.5),A.Normalize(mean(0.485,0.456,0.406),std(0.229,0.224,0.225)),ToTensorV2()])val_transformA.Compose([A.Resize(IMG_SIZE,IMG_SIZE),A.Normalize(mean(0.485,0.456,0.406),std(0.229,0.224,0.225)),ToTensorV2()])# 3. 数据集加载适配TIFF与掩码classLandslideDataset(Dataset):def__init__(self,img_dir,mask_dir,transformNone):self.img_pathssorted([os.path.join(img_dir,f)forfinos.listdir(img_dir)iff.endswith(.tif)])self.mask_pathssorted([os.path.join(mask_dir,f)forfinos.listdir(mask_dir)iff.endswith(.tif)])self.transformtransformdef__len__(self):returnlen(self.img_paths)def__getitem__(self,idx):imgcv2.imread(self.img_paths[idx])imgcv2.cvtColor(img,cv2.COLOR_BGR2RGB)maskcv2.imread(self.mask_paths[idx],cv2.IMREAD_GRAYSCALE)mask(mask0).astype(np.float32)# 二值化滑坡1背景0ifself.transform:augmentedself.transform(imageimg,maskmask)imgaugmented[image]maskaugmented[mask].unsqueeze(0)returnimg,mask# 4. 模型构建U-NetResNet34兼顾精度速度modelsmp.Unet(encoder_nameresnet34,encoder_weightsimagenet,in_channelsIN_CHANNELS,classesNUM_CLASSES,activationsigmoid).to(DEVICE)# 5. 损失函数解决滑坡样本不均衡# 混合DiceBCE降低背景主导、提升滑坡边界召回率loss_fnsmp.losses.DiceLoss(smp.losses.BINARY_MODE)smp.losses.BCELoss()# 6. 优化器与指标optimizertorch.optim.AdamW(model.parameters(),lrLEARNING_RATE)schedulertorch.optim.lr_scheduler.CosineAnnealingLR(optimizer,T_maxEPOCHS)metrics[smp.metrics.IoU(threshold0.5)]# 7. 训练验证核心逻辑deftrain_one_epoch(model,loader,loss_fn,optimizer,device):model.train()total_loss0forimg,maskintqdm(loader):img,maskimg.to(device),mask.to(device)predmodel(img)lossloss_fn(pred,mask)optimizer.zero_grad()loss.backward()optimizer.step()total_lossloss.item()returntotal_loss/len(loader)defval_one_epoch(model,loader,loss_fn,metrics,device):model.eval()total_loss0total_metrics{m.__name__:0forminmetrics}withtorch.no_grad():forimg,maskintqdm(loader):img,maskimg.to(device),mask.to(device)predmodel(img)lossloss_fn(pred,mask)total_lossloss.item()forminmetrics:total_metrics[m.__name__]m(pred,mask).item()returntotal_loss/len(loader),{k:v/len(loader)fork,vintotal_metrics.items()}# 8. 启动训练if__name____main__:train_dsLandslideDataset(IMG_DIR,MASK_DIR,train_transform)train_loaderDataLoader(train_ds,batch_sizeBATCH_SIZE,shuffleTrue)val_loaderDataLoader(train_ds,batch_sizeBATCH_SIZE,shuffleFalse)forepochinrange(EPOCHS):train_losstrain_one_epoch(model,train_loader,loss_fn,optimizer,DEVICE)val_loss,val_metricsval_one_epoch(model,val_loader,loss_fn,metrics,DEVICE)scheduler.step()print(fEpoch{epoch1:2d}| TrainLoss:{train_loss:.4f}| ValLoss:{val_loss:.4f}| IoU:{val_metrics[iou_score]:.4f})torch.save(model.state_dict(),landslide_segmentation_best.pth)技术优势多源融合卫星无人机互补覆盖广域与精细场景尺度齐全0.2m–1m分辨率适配大/中/小尺度滑坡标注精准像素级掩码直接训练主流分割模型工程友好标准格式、目录清晰、开箱即用泛化性强多区域多地貌提升模型跨区域迁移能力典型应用方向地震/降雨诱发滑坡快速识别与提取地质灾害风险区划与监测预警遥感AI语义分割模型训练与 benchmark应急测绘、灾害评估、灾后重建规划使用说明下载数据集按标准目录放置配置环境pip install torch segmentation-models-pytorch albumentations opencv-python tqdm调整路径与超参数运行train.py启动训练用infer.py对新影像批量推理输出滑坡掩码标签#遥感影像 #滑坡识别 #语义分割 #深度学习 #无人机航拍 #地质灾害 #数据集 #PyTorch #U-Net #智能解译