【PaddleSeg实践范例】使用PP-LiteSeg进行遥感道路分割
本教程介绍使用PP-LiteSeg模型对遥感图像道路进行分割的全流程。先配置含PaddlePaddle(不低于2.0.2)和PaddleSeg的环境,再用DeepGlobe数据集(分训练、验证、测试集),通过指定配置文件训练PP-LiteSeg和OCRNet模型,两者精度相近但前者速度快7倍。还涵盖模型预测、结果可视化及部署相关内容。

1 简介
本教程使用PP-LiteSeg模型对遥感图像中的道路进行分割。

PP-LiteSeg模型是PaddleSeg团队自研的轻量级语义分割模型,结构如下。
PP-LiteSeg模型的具体介绍请参考链接,欢迎Star收藏,关注最新消息。
下面教程,将带大家完整的跑通模型训练、预测、可视化全流程。

2 环境准备
请按照以下步骤配置相应的环境。
准备PaddlePaddle
PaddlePaddle版本要求不低于 2.0.2, 本教程在PaddlePaddle 2.2.2下验证通过。
由于图像分割模型计算开销大,推荐安装GPU版本的PaddlePaddle。
如果在AI Studio上运行此项目,请选择使用GPU版本的环境,默认已经安装了PaddlePaddle。
如果在本地运行此项目,需要自行安装PaddlePaddle,详细安装教程请参考PaddlePaddle正式。
准备PaddleSeg
由于本教程使用的演示代码不是PaddleSeg核心功能,所以相关代码没有合入到PaddleSeg。
我们在~/work/目录下存放了PaddleSeg代码和本教程使用到的代码,可以直接解压使用。
In [ ]%cd ~/work!rm -rf PaddleSeg!tar xf PaddleSeg.tar登录后复制
安装PaddleSeg依赖
执行如下命令,在环境中安装PaddleSeg需要的依赖库。
In [ ]%cd ~/work/PaddleSeg!pip install -r requirements.txt登录后复制
3 数据准备
我们使用DeepGlobe开源数据集作为本教程的演示数据集。
DeepGlobe数据集已经整理成如下格式。
deepglobe├── readme.md├── test.txt├── train├── train.txt├── valid└── val.txt登录后复制
我们将标注的遥感图片划分为训练集、验证集和测试集。
训练集图片:4980张验证集图片:622张测试集图片:624张train.txt、val.txt、test.txt分别表示训练集、验证集和测试的划分,保存的内容如下。
train/81456_sat.webp train/81456_mask.webptrain/814574_sat.webp train/814574_mask.webptrain/814591_sat.webp train/814591_mask.webptrain/814649_sat.webp train/814649_mask.webp登录后复制
整理好的Deepglobe数据集已经在~/data目录下,我们进行解压,然后链接到PaddleSeg/data目录下,用于后续训练测试使用。
In [ ]# 解压数据%cd ~/data/data141168!tar xf deepglobe.tar# 链接数据!mkdir -p ~/work/PaddleSeg/data!ln -s ~/data/data141168/deepglobe ~/work/PaddleSeg/data!ls ~/work/PaddleSeg/data登录后复制
4 模型训练
配置文件
遥感道路分割的所有配置文件都在PaddleSeg/configs/road_seg/目录下。
PaddleSeg/configs/road_seg├── deepglobe.yml├── ocrnet_hrnetw18_deepglobe_1024x1024_80k.yml├── pp_liteseg_stdc1_deepglobe_1024x1024_80k.yml└── pp_liteseg_stdc2_deepglobe_1024x1024_80k.yml登录后复制
其中,deepglobe.yml文件定义了基础信息,比如训练集、测试集、优化器、学习率等。
其他文件定义了模型相关的信息,比如pp_liteseg_stdc1_deepglobe_1024x1024_80k.yml的内容如下。
_base_: './deepglobe.yml'model: type: PPLiteSeg backbone: type: STDC1 pretrained: https://bj.bcebos.com/paddleseg/dygraph/PP_STDCNet1.tar.gz arm_out_chs: [32, 64, 128] seg_head_inter_chs: [32, 64, 64]loss: types: - type: OhemCrossEntropyLoss min_kept: 260000 - type: OhemCrossEntropyLoss min_kept: 260000 - type: OhemCrossEntropyLoss min_kept: 260000 coef: [1, 1, 1]登录后复制
训练
进入~/work/PaddleSeg目录,后续所有命令都在该目录下执行,结果也保存在该目录下。
在PaddleSeg目录下执行如下命令,开始训练PP-LiteSeg和OCRNet两个模型。 其中,输入参数config为配置文件的路径,如果需要训练其他模型,可以修改为其他配置文件。PaddleSeg完整的训练文档,请参考链接。
训练过程比较久,可以通过log输出查看需要的时间。训练结束后,模型权重保存在output对应的目录下。
注意:默认提供的配置文件是使用4卡进行训练,如果使用单卡训练,需要将学习率减小为1/4、iters增大4倍。
In [ ]# train pp_liteseg%cd ~/work/PaddleSeg/!python train.py \ --config configs/road_seg/pp_liteseg_stdc1_deepglobe_1024x1024_80k.yml \ --do_eval \ --num_workers 3 \ --save_interval 1000 \ --save_dir output/pp_liteseg_stdc1_deepglobe登录后复制In [ ]
# train ocrnet%cd ~/work/PaddleSeg/!python train.py \ --config configs/road_seg/ocrnet_hrnetw18_deepglobe_1024x1024_80k.yml \ --do_eval \ --num_workers 3 \ --save_interval 1000 \ --save_dir output/ocrnet_hrnetw18_deepglobe登录后复制
完成PP-LiteSeg和OCRNet模型的训练后,精度和速度如下表。
可以看到,PP-LiteSeg和OCRNet模型的精度基本相同,但是PP-LiteSeg的推理速度比OCRNet快了7倍。
5 模型预测
预测
加载训练好的模型权重,或者使用提供的模型权重,可以对测试集进行测试。
执行如下命令,下载已经训练好的模型权重,对deepglobe的测试集进行预测。
In [ ]%cd ~/work/PaddleSeg!mkdir pretrained%cd pretrained!wget https://paddleseg.bj.bcebos.com/dygraph/demo/pp_liteseg_stdc1_deepglobe.pdparams!wget https://paddleseg.bj.bcebos.com/dygraph/demo/ocrnet_hrnetw18_deepglobe.pdparams%cd ~/work/PaddleSeg!python predict.py \ --config configs/road_seg/pp_liteseg_stdc1_deepglobe_1024x1024_80k.yml \ --model_path pretrained/pp_liteseg_stdc1_deepglobe.pdparams \ --image_path data/deepglobe/test.txt \ --save_dir output/pp_liteseg_stdc1_deepglobe_1024x1024_80k/pred_test登录后复制
结果可视化
预测执行结束后,在output/pp_liteseg_stdc1_deepglobe_1024x1024_80k/pred_test目录下,可以查看预测结果。

6 模型部署
导出预测模型进行部署,可以加载模型的推理速度。
PaddleSeg提供了详细教程,指导进行模型导出和模型部署,具体请参考链接。
请点击此处查看本环境基本用法.
Please click here for more detailed instructions.
相关攻略
Trae在Python数据分析与机器学习项目中主要通过四种方式提供支持:利用Auto模式自动生成并执行端到端分析脚本;通过AgentCLI命令行自动化机器学习建模流程;对现有代码进行智能调试与优化;借助语音交互快速构建数据处理函数。这些功能覆盖了从需求描述到代码生成、模型构建及代码优化的全流程。
在Python编程中,你是否也曾编写过类似的统计代码? 统计词频 count = {} for word in words: if word in count: count[word] += 1 else: count[word] = 1 实际上,这种高频的计数需求,完全可以通过Python内置
Trae稳定支持Python3 10至3 13版本,3 9及以下版本无法运行。Python3 14处于实验性支持阶段,核心功能可能受限。当存在多个3 10以上版本时,Trae优先选择虚拟环境中的解释器,其次为最高系统版本。此外,Trae仅兼容64位Python解释器,不支持32位架构。
在企业级数据采集与自动化运维实践中,IT团队普遍面临一个核心挑战:Python爬虫为何频繁报错,修补维护何时才能终结?随着前端技术演进与动态反爬机制的日益复杂,依赖DOM解析的传统爬虫脚本往往陷入“部署即过时,运行即异常”的困境。本文将深入解析传统爬虫代码脆弱性的根本原因,并系统介绍一种能够重塑数据
很多刚接触Docker的开发者常有一个误解:制作镜像不就是把源代码打包进去就行了吗?实际上,在企业级的标准化开发流程中,直接将源码打包进Docker镜像是非常不专业的做法。这会导致镜像体积臃肿、引入潜在安全风险,并且模糊了“构建环境”与“运行环境”的边界。本文将深入解析Java、Vue、Go、Pyt
热门专题
热门推荐
在《燕云十六声》中领悟“菩提苦海”,需沉浸探索游戏世界。主线剧情构建认知框架,战斗观察、场景细节与NPC对话皆暗藏线索。通过多元视角拼凑因果,方能深入理解游戏蕴含的宏大叙事与深邃魅力。
2026年618大促的序幕刚刚拉开,初期战报已经透露出一些耐人寻味的信号。截至5月21日,海信电视在京东平板电视累计销售竞速榜上拔得头筹,其RGB-Mini LED爆款王——海信小墨E5S Pro,更是同时拿下了天猫平板电视和抖音大家电的5 20单品销冠。 这并非偶然。奥维云网的全渠道监测数据给出了
充电桩领域的“军备竞赛”再次迎来重磅升级。5月22日,极氪汽车正式发布了其全新一代液冷超级充电桩,将单枪峰值功率一举提升至行业领先的800kW,标志着超充技术迈入新阶段。 根据官方披露的核心信息,这款超充桩主要具备四大优势:极速补能、高效节能、广泛适配与多重安全。具体而言,其单枪峰值电流高达800A
获取电弧机剑主要有五种途径:推进主线任务以解锁线索;探索遗迹、工厂等特定区域;挑战特定副本与Boss;完成提及传说武器或遗物的支线任务;参与限时活动并达成要求。玩家可根据偏好选择或组合多种方式获取该武器。
小米汽车再次为潜在车主带来惊喜福利!即日起至5月31日,用户只需提前完成预约,并到店参与任意车型的试驾体验,即可免费获赠一款1:64精致合金车模。车模款式与颜色随机发放,为试驾过程增添一份专属的收藏乐趣,诚意十足。 参与本次活动需注意以下细则:试驾必须通过官方渠道提前预约;各授权门店的车模备货数量不





