新闻中心

PaddleSeg:使用Transformer模型对航空遥感图像分割

2025-07-17
浏览次数:
返回列表
本项目借助PaddleSeg模块训练Transformer类的Segformer_b3语义分割模型,为航空遥感图像特征点匹配提供语义约束以提升三维重建精度。使用UDD6数据集,经裁剪处理后训练,40000次迭代耗时12小时,mIOU达74.50%,较原论文DeepLabV3+高1.32%。模型可对指定图像预测,结果存于指定文件夹,能助力提升SfM三维重建精度与速度。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

paddleseg:使用transformer模型对航空遥感图像分割 -

PaddleSeg:使用Transfomer模型对航空遥感图像分割,给特征点匹配提供语义约束

一、项目背景

  • SfM(Structure from motion) 是一种三维重建的方法,用于从motion中实现3D重建。也就是从时间系列的2D图像中推算3D信息。但SfM算法受传统特征检测方法精度的限制,尤其是在复杂场景中

  • 语义分割领域发展迅速,现在可以达到比较高的mIOU,可以考虑使用语义分割模型提取待匹配图像的语义信息,给特征点匹配提供语义约束,提高最后三维重建的精度

  • 《Large-Scale Structure from Motion with Semantic Constraints of Aerial Images》论文就是介绍了这种方法,该论文使用语义约束进行三维点云的重建,精度提高的同时速度也变快了

    美图云修 美图云修

    商业级AI影像处理工具

    美图云修 50 查看详情 美图云修
  • 本项目利用PaddleSeg模块训练Transfomer类的语义分割模型,在UDD数据集中mIOU达到74.50% ,原论文使用DeepLabV3+的mIOU为73.18%,高1.32%

二、数据集介绍

  • UDD数据集是北京大学图形与交互实验室采集并标注的,面向航拍场景理解、重建的数据集。

Benchmark

dataset model OA mIoU size
UDD5 GCN 88.57% 73.17% 302M
UDD5 ENet 88.14% 71.38% 5.5M
UDD6 GCN 86.54% 72.58% 302M
UDD6 ENet 85.20% 69.44% 5.5M
UDD6 DeepLab V3+ 86.90% 73.18% 721M
  • 该数据集包含以下类别:
    • UDD6 (Released on 28 Jun 2025)
Class Gt Label RGB
Other 0 (0,0,0)
Facade 1 (102,102,156)
Road 2 (128,64,128)
Vegetation 3 (107,142,35)
Vehicle 4 (0,0,142)
Roof 5 (70,70,70)
  • 数据示例PaddleSeg:使用Transformer模型对航空遥感图像分割 -

三、准备工作

  • 开始训练前需要克隆仓库,然后准备数据,最后安装依赖
  • 注意:UDD6,图像大小为 (4096, 2160) 所以训练之前先进行crop处理成(1024, 1024)小块的图像以减少IO的占用
In [4]
# clone PaddleSeg的项目!git clone https://gitee.com/paddlepaddle/PaddleSeg
正克隆到 'PaddleSeg'...
remote: Enumerating objects: 16439, done.
remote: Counting objects: 100% (1402/1402), done.
remote: Compressing objects: 100% (811/811), done.
remote: Total 16439 (delta 710), reused 1166 (delta 573), pack-reused 15037
接收对象中: 100% (16439/16439), 341.09 MiB | 4.75 MiB/s, 完成.
处理 delta 中: 100% (10574/10574), 完成.
检查连接... 完成。
In [1]
#解压数据集,有两个数据集,本项目使用UDD6!mkdir work/UDD6
!unzip -oq data/data75675/UDD6.zip -d work/UDD6/
In [2]
# 对数据进行crop,具体细节可查看process_data.py的代码%cd work/
!python process_data.py --tag val #处理验证集!python process_data.py --tag train #处理训练集
/home/aistudio/work
mkdir UDD6/val_sub ...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 35/35, 6.0 task/s, elapsed: 6s, ETA:     0sAll processes done.
mkdir UDD6/val_labels_sub ...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 35/35, 25.0 task/s, elapsed: 1s, ETA:     0sAll processes done.
mkdir UDD6/train_sub ...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 106/106, 6.0 task/s, elapsed: 18s, ETA:     0sAll processes done.
mkdir UDD6/train_labels_sub ...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 106/106, 26.4 task/s, elapsed: 4s, ETA:     0sAll processes done.
In [ ]
# 安装依赖%cd /home/aistudio/PaddleSeg
!pip install  -r requirements.txt
In [ ]
# 训练数据集txt生成!python tools/split_dataset_list.py \
        ../work/UDD6 train_sub train_labels_sub \
        --split 1.0 0.0 0.0 \
        --format JPG png \
        --label_class Other Facade Road Vegetation Vehicle Roof
In [8]
!mv ../work/UDD6/train.txt ../work/UDD6/train_true.txt # 修改文件名
In [ ]
# 验证数据集txt生成!python tools/split_dataset_list.py \
        ../work/UDD6 val_sub val_labels_sub \
        --split 0.0 1.0 0.0 \
        --format JPG png \
        --label_class Other Facade Road Vegetation Vehicle Roof
In [10]
!rm ../work/UDD6/train.txt #删除第二次运行生成的train.txt!mv ../work/UDD6/train_true.txt ../work/UDD6/train.txt # 将文件名改回来

四、模型训练与预测

  • 使用的模型为Transfomer系列的Segformer_b3
  • 训练40000次迭代,共12个小时
In [25]
# 新建.yml文件,然后将以下信息写入#!touch configs/segformer_b3_UDD.yml# 也可以直接复制准备好的文件放入该文件夹下!cp ../work/segformer_b3_UDD.yml configs/
  • 在文件中插入以下信息
batch_size: 2iters: 40000train_dataset:
  type: Dataset
  dataset_root: ../work/UDD6/
  train_path: ../work/UDD6/train.txt
  num_classes: 6
  transforms:
    - type: ResizeStepScaling
      min_scale_factor: 0.5
      max_scale_factor: 2.0
      scale_step_size: 0.25
    - type: RandomPaddingCrop
      crop_size: [1024, 1024]    - type: RandomHorizontalFlip
    - type: RandomDistort
      brightness_range: 0.4
      contrast_range: 0.4
      saturation_range: 0.4
    - type: Normalize
  mode: trainval_dataset:
  type: Dataset
  dataset_root: ../work/UDD6/
  val_path: ../work/UDD6/val.txt
  num_classes: 6
  transforms:
    - type: Normalize
  mode: valmodel:
  type: SegFormer_B3
  num_classes: 6
  pretrained: https://bj.bcebos.com/paddleseg/dygraph/mix_vision_transformer_b3.tar.gzoptimizer:
    type: sgdlr_scheduler:
  type: PolynomialDecay
  learning_rate: 0.001
  power: 0.9loss:
  types:
    - type: CrossEntropyLoss
  coef: [1]
In [ ]
# 开始训练,模型权重保存在output文件夹中,output/best_model 文件夹中为性能最好的模型!export CUDA_VISIBLE_DEVICES=0 # 设置1张可用的卡# windows下请执行以下命令# set CUDA_VISIBLE_DEVICES=0!python train.py \
       --config configs/segformer_b3_UDD.yml \
       --do_eval \
       --use_vdl \
       --s*e_interval 500 \
       --s*e_dir output
  • 模型预测
    • 整体结果:Acc:87.46%,mIOU:74.50%
    • 每一类别结果:IOU:[0.8912 0.7263 0.6874 0.6746 0.8854 0.6053], Acc:[0.944 0.8343 0.8223 0.807 0.9314 0.7634]
In [ ]
!python val.py \
       --config configs/segformer_b3_UDD.yml \
       --model_path output/best_model/model.pdparams \
代码解释

五、快速使用

  • 已经将性能最好的模型以及.yml文件放在work文件夹下
  • 运行以下命令可对指定的文件夹下的图像进行预测
  • 本项目以work/val文件夹下的图像作为待预测的图像,预测结果保存在work/val/result文件夹中
In [12]
!mv ../work/UDD6/val ../work/
In [ ]
!python predict.py \
       --config ../work/segformer_b3_UDD.yml \
       --model_path ../work/best_model/model.pdparams \
       --image_path ../work/val/src \
       --s*e_dir ../work/val/result \
       --is_slide \
       --crop_size 1024 1024 \
       --stride 512 512
In [16]
# 展示预测的结果import matplotlib.pyplot as pltfrom PIL import Image

output = Image.open(r"../work/val/result/added_prediction/000061.JPG")

plt.figure(figsize=(20,24))#设置窗口大小plt.imshow(output), plt.axis('off')
(<matplotlib.image.AxesImage at 0x7f2bdae02710>, (-0.5, 4095.5, 2159.5, -0.5))
<Figure size 1440x1728 with 1 Axes>

以上就是PaddleSeg:使用Transformer模型对航空遥感图像分割的详细内容,更多请关注其它相关文章!


# 可对  # 燃灯教育seo  # 天津手动网站建设配置  # 兰州站内优化网站  # 江西seo技巧有哪些企业  # 在线网络营销推广创新  # 京东品牌营销推广  # 宣化seo整站排名  # 拜城网站产品推广靠谱吗  # 江西拼多多网站建设公司  # 如何建设商业网站  # 北京大学  # 是一种  # 是在  # 迭代  # 官网  # python  # 最好的  # 中文网  # 美图  # 一言  # type  # fig  # udio  # deepl  # igs  # red  # ai  # cad  # windows  # git 


相关栏目: 【 行业资讯67740 】 【 技术百科0 】 【 网络运营39195


相关推荐: 为什么夸克无法注销账户  春运抢票可以抢几张  苹果16如何预购  单片机蓝牙怎么开启设备  如何区别固态硬盘  怎么更新typescript  typescript怎么添加css样式  一帧是多少秒  市盈率中的19a是什么意思  单片机怎么进行排序操作  单片机是怎么计时的  win7旗舰版wifi怎么打开  typescript 如何解决 null  如何知道固态硬盘  苹果16粉色还有哪些机型  typescript的语法格式是什么  如何winpe cmd命令  固态硬盘如何检查  液位传感器power是什么意思  固态硬盘电脑如何设置  楔子是什么意思  苹果16会升级哪些  如何使用net命令  360n6锁屏壁纸怎么设置  nfc功能是什么意思怎么开启  mac如何使用vi命令  固态硬盘如何区分好坏  typescript中范围如何设定  夸克网盘是什么都有吗  xdm是什么意思  vue中datediff函数怎么用  如何把一个命令后台运行  苹果16有哪些黑科技  win10电脑如何使用命令提示符  春运抢票多久可以买到票  税负是什么意思  16苹果有哪些机型  市盈率300是什么意思  域名批量查询工具有哪些  电脑显示屏上power是什么意思  如何固态硬盘4k对齐  商誉是什么意思  typescript入门要多久  360f4怎么取消百变壁纸  12306放票时间规律(2025)  m*en repository的作用是什么  夸克搜题的原理是什么  没基础做单片机怎么样  vi命令如何退出编辑模式  rxjs和typescript什么意思 

搜索