当前位置: 首页 > news >正文

基于深度学习的UNet的卫星图像新增建筑检测 违章建筑识别 建筑物识别

文章目录

      • 介绍
        • 背景
        • 目录结构
      • 准备数据
      • 图像预处理
      • 手工标注
      • 数据增强
      • 网络训练
      • 改进U-Net
      • F1 Score
      • 加权损失函数
      • 后处理
      • 关于代码
      • 总结

介绍

背景

在监管地上建筑物的建设、拆除、改建和扩建是一项重要任务。随着高分辨率卫星图像技术的发展以及智能算法的应用,这些工作可以实现自动化处理,从而大大提高工作效率和准确性。本次竞赛旨在利用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)也可能带来意想不到的效果。总之,尽管本次竞赛已经结束,但我们相信,只要持续努力,就一定能在这一领域取得更大的突破。

http://www.jsqmd.com/news/673877/

相关文章:

  • 2026年当下,韩系女鞋供应链变革:如何选择你的决胜合作伙伴? - 2026年企业推荐榜
  • 2026年终极终端战争:Warp vs. Tabby vs. 文心终端——软件测试工程师的专业选型指南
  • 多维度拆透渲染引擎 第一篇【维度:定义】概念正本清源 —— 渲染引擎的本质与“引擎性“
  • TR069 实战:从零配置 ONU 多业务 WAN 连接
  • Spring事务同步器TransactionSynchronizationAdapter:除了afterCommit,这几个回调方法你用对了吗?
  • 一行不改,麒麟 V11 竟能直接安装 Oracle 11GR2 数据库!
  • 构建高性能实时窗口缩放引擎:Magpie企业级渲染架构深度解析
  • 2026 苏州 GEO 优化公司 TOP5最新权威榜单发布 - GEO优化
  • 从UVM-1.2源码看PH_TIMEOUT:超时机制详解与自定义超时策略配置指南
  • 避坑指南:树莓派4B蓝牙连接安卓/iPhone常见问题全解决(从配对失败到数据乱码)
  • Bilibili视频下载神器:5分钟掌握跨平台B站视频下载技巧
  • 别再乱断环了!Cadence STB仿真与Middlebrook双注入法实测对比(附避坑指南)
  • 一篇文章让你彻底掌握 Python
  • 大模型推理优化关键技术及应用实践研究报告(2026年)
  • Java Stream里的‘懒’与‘急’:从面试题‘peek()为何不生效’讲透流操作原理
  • 嵌入式——认识电子元器件——电阻系列
  • 使用Termux+Proot-distro+Ubuntu+zsh在手机端配置安装Openclaw,使用Skillhub安装skill, 接入企业微信
  • Joy-Con Toolkit完整教程:3步轻松解决Switch手柄漂移问题
  • 一文教你学会时序数据库 Apache IoTDB 安装部署,直接上手!!!
  • 蓝牙抓包进阶:不输入Link Key也能解析加密通信?Ellisys实战技巧分享
  • ESP32-S3开发板到手后,第一件事:用esptool.py和menuconfig搞定Flash与PSRAM的正确配置
  • 远程工作骗局:隐形加班——软件测试从业者的专业困境与破局之道
  • 在Ubuntu 22.04服务器上无头部署Agisoft Metashape 1.6.5:一份完整的Python自动化点云生成指南
  • STM32F0 SPI读取24位传感器数据:从8位命令到连续时钟的完整避坑指南
  • AI 入门 30 天挑战 - Day 15 费曼学习法版 - 目标检测基础
  • STM32 FOC调试避坑:手把手教你用编码器零位标定电角度(附扇区代码纠错实录)
  • 3分钟解锁艾尔登法环帧率限制:告别卡顿的终极完整指南
  • 如何选择美国移民服务商?2026年4月推荐评测口碑对比五家专业领先EB-5投资风险规避 - 品牌推荐
  • 2026年杭州GEO服务商实力测评:五大机构合规与综合实力盘点 - GEO优化
  • 蜂鸟E203的NICE接口详解:从握手信号到性能提升的368个周期