遥感图像数据集 海陆遥感分割图像语义分割数据集 UNet、DeepLabV3框架处理

如何使用深度学习模型对海陆分割(sea-land)遥感图像进行语义分割

文章目录

  • 如何使用深度学习模型对海陆分割(sea-land)遥感图像进行语义分割
      • 1. 数据集准备
      • 2. 安装依赖库
      • 3. 自定义数据集类
      • 4. 模型定义与训练
        • 训练脚本
      • 5. 推理与结果可视化
        • 推理脚本
      • 6. 运行步骤总结

海陆分割sea-land遥感图像语义分割数据集

1

使用深度学习模型对海陆分割(sea-land)遥感图像进行语义分割,SMP框架集成了多种流行的架构(UNet、DeepLabV3等),并支持预训练权重和多种损失函数。

以下是详细的步骤、关键文件及代码示例来指导你完成从准备数据集到训练模型的整个流程。

1. 数据集准备

假设你的数据集结构如下:

sea_land_segmentation/ ├── images/ │ ├── train/ │ │ ├── img1.jpg │ │ └── ... │ ├── val/ │ │ ├── img1.jpg │ │ └── ... │ └── test/ │ ├── img1.jpg │ └── ... └── masks/ ├── train/ │ ├── img1.png │ └── ... ├── val/ │ ├── img1.png │ └── ... └── test/ ├── img1.png └── ... data_sea_land.yaml

data_sea_land.yaml文件内容示例:

train:./sea_land_segmentation/images/train/val:./sea_land_segmentation/images/val/nc:2# 类别数量:Sea 和 Landnames:['Sea','Land']

确保每个掩码图像(mask)是单通道的PNG图像,其中像素值代表类别ID(例如0代表Sea,1代表Land)。

2. 安装依赖库

确保安装了必要的库:

pipinstallsegmentation-models-pytorch albumentations opencv-python-headless torch torchvision

3. 自定义数据集类

编写一个自定义的数据集类来读取图像和对应的掩码。

importosimportcv2importnumpyasnpfromtorch.utils.dataimportDatasetclassSeaLandDataset(Dataset):def__init__(self,images_dir,masks_dir,transform=None):self.images_fps=[os.path.join(images_dir,image_id)forimage_idinos.listdir(images_dir)]self.masks_fps=[os.path.join(masks_dir,mask_id)formask_idinos.listdir(images_dir)]self.transform=transformdef__getitem__(self,i):image=cv2.imread(self.images_fps[i])image=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)mask=cv2.imread(self.masks_fps[i],0)ifself.transform:augmented=self.transform(image=image,mask=mask)image=augmented['image']mask=augmented['mask']returnimage,maskdef__len__(self):returnlen(self.images_fps)

4. 模型定义与训练

选择一个合适的模型架构(例如UNet或DeepLabV3),并配置优化器、损失函数和评估指标。

训练脚本
importtorchimportsegmentation_models_pytorchassmpfromtorch.utils.dataimportDataLoaderfromsklearn.model_selectionimporttrain_test_split# 加载数据集train_dataset=SeaLandDataset('./sea_land_segmentation/images/train/','./sea_land_segmentation/masks/train/')valid_dataset=SeaLandDataset('./sea_land_segmentation/images/val/','./sea_land_segmentation/masks/val/')train_loader=DataLoader(train_dataset,batch_size=16,shuffle=True,num_workers=4)valid_loader=DataLoader(valid_dataset,batch_size=4,shuffle=False,num_workers=4)# 定义模型ENCODER='resnet34'ENCODER_WEIGHTS='imagenet'CLASSES=['Sea','Land']ACTIVATION='sigmoid'# 二分类问题可以使用sigmoid激活函数model=smp.Unet(encoder_name=ENCODER,encoder_weights=ENCODER_WEIGHTS,classes=len(CLASSES),activation=ACTIVATION,)preprocessing_fn=smp.encoders.get_preprocessing_fn(ENCODER,ENCODER_WEIGHTS)# 设置损失函数和优化器loss=smp.utils.losses.CrossEntropyLoss()metrics=[smp.utils.metrics.IoU(threshold=0.5),]optimizer=torch.optim.Adam([dict(params=model.parameters(),lr=0.0001),])train_epoch=smp.utils.train.TrainEpoch(model,loss=loss,metrics=metrics,optimizer=optimizer,device='cuda',verbose=True,)valid_epoch=smp.utils.train.ValidEpoch(model,loss=loss,metrics=metrics,device='cuda',verbose=True,)max_score=0foriinrange(0,40):# 训练周期数print('\nEpoch: {}'.format(i))train_logs=train_epoch.run(train_loader)valid_logs=valid_epoch.run(valid_loader)ifmax_score<valid_logs['iou_score']:max_score=valid_logs['iou_score']torch.save(model,'./best_model.pth')print('Model saved!')ifi==25:optimizer.param_groups[0]['lr']/=10print('Decrease decoder learning rate to 1e-5!')

5. 推理与结果可视化

训练完成后,我们可以利用训练好的模型对新图片进行预测,并将结果可视化。

推理脚本
importmatplotlib.pyplotasplt best_model=torch.load('./best_model.pth')defvisualize(image,gt_mask,pr_mask):figure,ax=plt.subplots(1,3,figsize=(10,10))ax[0].imshow(image)ax[0].set_title("Image")ax[1].imshow(gt_mask,cmap='gray')ax[1].set_title("Ground Truth Mask")ax[2].imshow(pr_mask,cmap='gray')ax[2].set_title("Predicted Mask")plt.show()test_dataset=SeaLandDataset('./sea_land_segmentation/images/test/','./sea_land_segmentation/masks/test/')foriinrange(5):# 可视化前5个测试样本image,gt_mask=test_dataset[i]x_tensor=torch.from_numpy(image).to('cuda').permute(2,0,1).unsqueeze(0).float()/255.pr_mask=best_model.predict(x_tensor)pr_mask=pr_mask.squeeze().cpu().numpy()visualize(image,gt_mask,pr_mask)

6. 运行步骤总结

  1. 数据集准备:确认数据集已按要求组织好。
  2. 安装依赖:通过提供的命令安装所需的Python库。
  3. 自定义数据集类:创建自定义数据集类以加载图像和掩码。
  4. 模型定义与训练:选择合适的模型架构,配置优化器、损失函数,并开始训练过程。
  5. 推理与可视化:使用训练好的模型进行推理,并可视化结果。

以上提供了完整的流程——使用Segmentation Models for PyTorch对海陆分割遥感图像进行语义分割任务。

相关新闻

2024西邮Linux一面题解

2024西邮Linux一面题解

2024Linux一面题解 0. 聪明的吗喽 一个小猴子边上有 100 根香蕉&#xff0c;它要走过 50 米才能到家&#xff0c;每次它最多搬 50 根香蕉&#xff0c;&#xff08;多了就拿不动了&#xff09;&#xff0c;它每走 1 米就要吃掉一根&#xff0c;请问它最多能把多少根香蕉搬到家里…

2026/10/21 2:36:57 阅读更多 →
生产管理到底管什么?“四管八理”一次讲清

生产管理到底管什么?“四管八理”一次讲清

很多企业一提生产管理&#xff0c;第一反应是抓产量、盯交期、催现场。但真正做过生产的人都知道&#xff0c;生产现场最难管的&#xff0c;往往不是“今天做了多少”&#xff0c;而是下面这些问题&#xff1a;为什么计划每天都在变&#xff1f;为什么设备开着&#xff0c;产量…

2026/10/21 2:36:57 阅读更多 →
CSL手语数据集 采用基于卷积神经网络(CNN)与循环神经网络(RNN)结合的架构,如3D-CNN或I3D用于特征提取,再配合LSTM或GRU处理时间序列信息。

CSL手语数据集 采用基于卷积神经网络(CNN)与循环神经网络(RNN)结合的架构,如3D-CNN或I3D用于特征提取,再配合LSTM或GRU处理时间序列信息。

使用深度学习模型对CSL手语数据集进行训练 采用基于卷积神经网络&#xff08;CNN&#xff09;与循环神经网络&#xff08;RNN&#xff09;结合的架构&#xff0c;如3D-CNN或I3D用于特征提取&#xff0c;再配合LSTM或GRU处理时间序列信息。 文章目录使用深度学习模型对CSL手语数…

2026/10/21 2:36:57 阅读更多 →

最新新闻

3步修补Unity编辑器与Unity Hub:UniHacker完整使用指南

3步修补Unity编辑器与Unity Hub:UniHacker完整使用指南

3步修补Unity编辑器与Unity Hub&#xff1a;UniHacker完整使用指南 【免费下载链接】UniHacker 为Windows、MacOS、Linux和Docker修补所有版本的Unity3D和UnityHub 项目地址: https://gitcode.com/GitHub_Trending/un/UniHacker UniHacker 是一款面向 Unity 编辑器与 Un…

2026/10/21 3:16:13 阅读更多 →
若依RuoYi-Vue项目改名实操:包名、模块名与前端标识全面换新

若依RuoYi-Vue项目改名实操:包名、模块名与前端标识全面换新

把若依RuoYi-Vue的包名、模块名、项目名称整体改一遍&#xff0c;是很多团队迟早要面对的一件事。尤其是企业里拿若依当二次开发底座的项目&#xff0c;到了交付节点&#xff0c;源码里到处是com.ruoyi、ruoyi-admin这种字样&#xff0c;登录页右下角还挂着“若依管理系统”&am…

2026/10/21 3:16:13 阅读更多 →
STM32 FFT精准测频测相:采样定理、窗函数与相位解卷绕实战

STM32 FFT精准测频测相:采样定理、窗函数与相位解卷绕实战

简介&#xff1a;本资源是一套基于STM32F407标准库实现的FFT频域分析完整工程&#xff0c;面向嵌入式开发初学者与中级工程师&#xff0c;解决正弦波信号在资源受限MCU上实时、精准提取幅值、频率及相位差的核心难题。项目覆盖ADC采样、汉宁窗预处理、标准库FFT计算、频谱峰值检…

2026/10/21 3:16:13 阅读更多 →
ARM Linux iconv库交叉编译实战:解决中文文件名乱码

ARM Linux iconv库交叉编译实战:解决中文文件名乱码

简介&#xff1a;本资源是专为ARM架构Linux嵌入式系统定制的libiconv字符编码转换库&#xff0c;面向嵌入式开发工程师、交叉编译实践者及需在树莓派、ARM网关等设备上处理多语言文本&#xff08;如UTF-8/GB2312/ASCII互转&#xff09;的技术人员。资源通过arm-none-linux-gnue…

2026/10/21 3:16:13 阅读更多 →
AutoML实战:十行代码实现房价预测,机器学习新手也能上手

AutoML实战:十行代码实现房价预测,机器学习新手也能上手

手头有1460条带价格标签的房屋样本&#xff0c;目标是用机器学习预测另外1459套房子的成交价。这类比赛的数据集通常不大、字段也不算复杂&#xff0c;但每个人的处理方式千差万别&#xff1a;有人花一周做特征工程&#xff0c;有人手工调十来个模型的参数&#xff0c;而我只想…

2026/10/21 3:16:13 阅读更多 →
Python房产推荐系统开发全指南:Django+协同过滤+可视化

Python房产推荐系统开发全指南:Django+协同过滤+可视化

每年毕业季&#xff0c;我都会收到不少学弟学妹关于“Python房产数据智能推荐系统”这类题目的私信。说实话&#xff0c;这个题目在计算机毕业设计里属于非常经典的一类——它把Python后端、Django框架、协同过滤推荐算法、百度地图展示、ECharts可视化和大数据分析这几个知识点…

2026/10/21 3:15:13 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →