首页 > 其他分享 >基于UNet的卫星图像新增建筑检测

基于UNet的卫星图像新增建筑检测

时间:2025-01-04 09:32:22浏览次数:3  
标签:训练 模型 UNet 区域 图像 Net 卫星 标注

文章目录

介绍

背景

在监管地上建筑物的建设、拆除、改建和扩建是一项重要任务。随着高分辨率卫星图像技术的发展以及智能算法的应用,这些工作可以实现自动化处理,从而大大提高工作效率和准确性。本次竞赛旨在利用2015年和2017年的某地卫星图片,预测这两年间新增的人工地上建筑物像元,并通过F1分数评估模型性能。

目录结构
  • 准备数据:获取并预处理原始卫星图像。
  • 图像预处理:解决图像拼接区域颜色差异及数据范围问题。
  • 手工标注:挑选代表性区域进行标注以生成训练标签。
  • 数据增强:应用多种方法增强数据集以提高模型泛化能力。
  • 网络训练:基于改进的U-Net架构训练深度学习模型。
  • 改进U-Net:描述了如何调整传统U-Net以适应特定任务需求。
  • F1 score:定义用于模型选择的评价标准。
  • 加权损失函数:设计适合当前任务的损失函数。
  • 后处理:包括模型融合与形态学处理等步骤优化最终结果。
  • 关于代码:说明如何使用预训练模型做预测及重新训练模型的过程。

准备数据

本项目涉及的数据来源于高分辨率卫星图像。为了确保模型能够有效地识别出这两年间的建筑变化,需要对原始图像进行一系列预处理操作,主要包括:

  1. 解决不同拼接区域的颜色差异:由于原始图像由多个部分拼接而成,各部分之间可能存在明显的色差。为了解决这个问题,我们采用了一种基于百分位数的方法来标准化每个通道的像素值分布,具体做法如下:

    • 将图像转换为float32类型;
    • 计算99%和1%分位数作为最大值和最小值;
    • 对图像中的有效区域(mask标记)进行归一化处理;
    • 将均值调整到0.5;
    • 最后将数值范围扩大至[0, 65535],并转回uint16类型保存。
  2. 手工标注:考虑到全面标注所有区域的成本过高,我们选择了若干具有代表性的区域进行细致标注。对于选定的区域,白色区域表示确实发生了建筑变化,而黑色区域则表示没有变化。完成标注后,再将大图切割成多个小图以构建训练集。

  3. 数据增强:为了提升模型的鲁棒性和泛化能力,我们采用了旋转、翻转、亮度对比度调整等多种方式对训练样本进行了扩充。此外,还探索了其他可能的数据增强策略,如随机裁剪、缩放和平移等。

  4. 数据集划分:按照7:2:1的比例随机分配训练集、验证集和测试集,保证每个子集中包含足够多样化的样本。


在这里插入图片描述

图像预处理

针对原始图像存在的两个主要问题——拼接区域颜色差异大以及每个通道的数据范围不一致(实际范围为0~2774),我们采取了以下措施:

  • 颜色校正:通过计算图像中非零区域的99%和1%分位数,然后根据这两个边界值对图像进行线性拉伸,使得所有像素值都被映射到一个更合理的区间内。
  • 数据标准化:将图像转换为浮点型格式,减去最小值后除以最大值与最小值之差,接着调整均值使其接近0.5,最后乘以65535并将结果转换回无符号整数类型。

手工标注

在标注过程中,我们只选择了一些有代表性的区域进行精细标注,确保在这些区域内白色标记对应于实际发生的建筑变化,而黑色标记则代表未发生变化的地方。完成标注后,会将大图分割成多个小块,形成最终用于训练的小图集合。从标注的mask图像到训练用的.npy文件转换过程详见process_mark.py,其核心逻辑是截取指定区域内的图像和标签,并将其组合在一起。


在这里插入图片描述

数据增强

为了提高模型的泛化能力,我们在训练过程中实施了几种常见的数据增强技术,包括但不限于图像翻转、旋转、亮度和对比度调整等。这些增强手段不仅增加了训练样本的数量,而且有助于模型更好地学习到目标物体的本质特征,而不受特定视角或光照条件的影响。


在这里插入图片描述

网络训练

本项目的深度学习模型基于改进版的U-Net架构,该架构以其出色的语义分割性能而闻名。相较于传统的U-Net,我们的改进之处在于引入了额外的输入通道(例如RGBN),这使得模型可以直接处理多光谱图像,并且能够在一定程度上缓解高层建筑倾斜带来的影响。训练阶段的关键参数设置如下:

  • 使用Dice系数损失函数结合交叉熵损失作为优化目标;
  • 通过调整权重因子α来平衡精确率(precision)和召回率(recall)之间的关系;
  • 设置适当的批次大小(batch size)和迭代次数(epochs)以确保模型收敛稳定。

在这里插入图片描述

改进U-Net

U-Net是一种经典的卷积神经网络架构,广泛应用于医学影像分析等领域。它由编码器(下采样路径)和解码器(上采样路径)组成,中间通过跳跃连接传递特征信息。为了适应此次比赛的任务要求,我们对标准U-Net做了如下改进:

  • 增加输入通道数:除了常规的红绿蓝三通道外,还加入了近红外波段,构成四通道输入,以便更好地捕捉地物特征。
  • 调整损失函数:考虑到新增建筑检测的重要性,我们自定义了一个加权损失函数,其中赋予正样本更高的权重,以此来强调模型对这类关键区域的关注。
  • 优化后处理流程:引入形态学操作去除小面积噪点,并运用连通域分析进一步修正预测结果。

F1 Score

F1分数是一个综合考虑了精确率和召回率的指标,在二分类问题中尤为适用。对于本项目而言,我们将变化区域视为正类,非变化区域视为负类,进而计算F1得分。为了避免某些情况下出现除以零的问题,我们在公式中加入了一个极小常数项作为保护机制。


在这里插入图片描述

加权损失函数

为了使模型更加关注新增建筑的检测,我们设计了一个加权损失函数,其中包含了Dice系数损失和交叉熵损失两部分。通过调节参数α,可以在精确率和召回率之间找到最佳平衡点。实践中发现,当α≤0.5时,即权重w∈(0, 1],模型能够取得较好的表现。具体实现细节请参见utils.py文件。


后处理

后处理步骤旨在进一步优化预测结果的质量,主要包括以下几个方面:

  • 模型融合:通过对不同loss权重下的模型输出进行像素级融合,可以获得更为完整的检测结果。
  • 形态学处理:利用腐蚀膨胀等操作去除孤立噪声点,并通过连通域分析修复断裂的目标轮廓。

关于代码

整个项目的代码可以在本地机器或阿里云PAI平台上运行。如果是在本地环境中执行,则需配置local_config_end2end.json文件中的相关参数;而在PAI平台上运行时,则应根据实际情况修改unet-end2end-rgbn.txt中的配置项,并指定该文件为启动参数。

对于预测阶段,提供了预训练好的权重文件供参赛者直接使用。只需更改配置文件中的几个关键路径参数(如输入输出目录、权重文件位置等),然后运行end2end_best_predict.py脚本即可得到预测结果。此外,还可以通过运行post_process.py来进行必要的后处理操作,以提高提交结果的质量。


总结

在整个项目中,我们成功地解决了图像拼接带来的颜色不一致问题,并通过八通道U-Net实现了对新增建筑的有效检测。同时,数据增强策略显著提升了模型的泛化能力和鲁棒性,而精心设计的加权损失函数则确保了模型在面对复杂场景时仍能保持较高的准确度。最后,通过模型融合与形态学处理等一系列后处理手段,我们进一步提高了预测结果的一致性和完整性。

展望未来,我们可以尝试更精确地区分新增道路和新建高架桥,或者引入CRFasRNN等高级模型以改善预测边界的清晰度。此外,探索更加复杂的模型融合方案(如stacking)也可能带来意想不到的效果。总之,尽管本次竞赛已经结束,但我们相信,只要持续努力,就一定能在这一领域取得更大的突破。

标签:训练,模型,UNet,区域,图像,Net,卫星,标注
From: https://blog.csdn.net/QQ_1309399183/article/details/144912659

相关文章

  • yolo11卫星影像and光学遥感图像船舶与飞机等检测
    文章目录卫星图像中的目标检测:基于YOLOv8和DIOR数据集的实现项目结构引言目标数据集数据预处理模型训练与测试结论卫星图像中的目标检测:基于YOLOv8和DIOR数据集的实现项目结构完整的代码位于名为yolov8.ipynb`的JupyterNotebook中。所有模型训练和测试的结果......
  • 毕设如何选题:开题报告+计算机视觉项目大集合(图像分类+目标检测+目标跟踪+姿态识别+
    #毕设选题-开题报告-计算机视觉项目大集合如链接失效,请主页搜索关键词直达!计算机视觉项目大集合yolo系列及创新点和应用(测距测速等):改进的yolo目标检测-测距测速图像去雨去雾+目标检测+测距项目交通标志识别项目yolo系列-重磅yolov9界面-最新的yoloyolov8双目......
  • 计算机视觉实战项目4(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人
    往期热门项目回顾:链接失效,请主页搜索关键词!!!!计算机视觉项目大集合改进的yolo目标检测-测距测速路径规划算法图像去雨去雾+目标检测+测距项目交通标志识别项目yolo系列-重磅yolov9界面-最新的yolo姿态识别-3d姿态识别深度学习小白学习路线AI健身教练-引体向上-......
  • python和matlab水下目标图像增强算法(Retinex图像增强算法(SSR, MSR, MSRCR))
    水下图像颜色校正与增强使用Retinex方法水下图像常常因为能见度差和散射而退化,导致色彩丢失和光照减弱,特别是在红色通道。本项目复制了一种用于水下图像的颜色校正算法。该算法利用相机中的彩色滤波阵列(CFA)特性来增强色彩和光照,并采用Retinex模型改进光照效果以及自适应直......
  • 利用MATLAB实现了视频图像行人识别与检测
    利用MATLAB实现了视频图像行人识别与检测资源文件列表piotr_toolbox/bbNms.m , 8611piotr_toolbox/pNms.rar , 22300piotr_toolbox/toolbox/channels/chnsCompute.m , 9239piotr_toolbox/toolbox/channels/chnsPyramid.m , 10558piotr_toolbox/toolbox/channels/chn......
  • MagicQuill: AI平板智能画师-AI智能交互式图像编辑系统
    什么是MagicQuill?MagicQuill是一个高度智能的图像修改编辑系统,有了它,你可以随心所欲地进行绘画和图像编辑。即使你没有任何绘画天赋,也能轻松创作出逼真、惊艳的视觉效果。这款AI绘画交互编辑神器也可以部署在云算力平台上后在iPad等设备上使用。 快速体验MagicQuill使......
  • 基于YOLOv8深度学习的智慧医疗皮肤病理图像自动化诊断系统
    随着人工智能技术在医学影像分析中的广泛应用,自动化皮肤病理图像诊断已成为提高诊断效率和准确性的重要手段。本研究提出了一种基于YOLOv8深度学习模型的智慧医疗皮肤病理图像自动化诊断系统,旨在实现皮肤病变的快速、准确诊断。系统能够自动识别和分类皮肤病变,包括但不限于“痣......
  • Python 图像处理:生成美丽的书籍封面
    在这篇博客中,我们将探索如何使用Python中的Pillow库来创建一个定制化的书籍封面。通过加载背景图像、使用字体绘制文本、并添加一些装饰性元素,我们可以轻松制作出符合自己需求的封面图像。让我们一起来看看完整的代码实现和详细的讲解。步骤1:准备工作首先,我们需要安装......
  • 基于图像形态学处理和凸包分析法的指尖检测matlab仿真
    1.算法运行效果图预览(完整程序运行后无水印) 测试样本1:  测试样本2: 测试样本3: 2.算法运行软件版本matlab2022a 3.部分核心程序(完整版代码包含详细中文注释和操作步骤视频)%提取手部轮廓坐标handxy=func_find_hand_pxy(Im0_bw,Im0,Im0edge);fig......
  • 35. 图像物体的边界
    题目描述给定一个二维数组M行N列,二维数组里的数字代表图片的像素,为了简化问题,仅包含像素1和5两种像素,每种像素代表一个物体,2个物体相邻的格子为边界,求像素1代表的物体的边界个数。像素1代表的物体的边界指与像素5相邻的像素1的格子,边界相邻的属于同一个边界,相邻需要考虑8个方......