免费、绿色、专业的手机游戏中心下载安装平台-游家吧

当前位置: 首页 > 教程攻略 > 飞桨常规赛:遥感影像地块分割 - 10月第2名方案

飞桨常规赛:遥感影像地块分割 - 10月第2名方案

更新时间:2026-11-04 08:14:26

飞桨常规赛:遥感影像地块分割 - 10月第2名方案

该方案在飞桨遥感影像地块分割赛题中排名第,借鉴了领先模型的设计结构,并采用了HRNet_WOCRNet的融合策略,损失函数结合了LovaszSoftmax和CrossEntropy,对数据集进行了处理并剔除了无效样本,同时使用了多种增强策略进行训练。通过Momentum优化器等方法,在预测后达到了显著的效果提升。

飞桨常规赛:遥感影像地块分割

- 第2名方案

赛题

本赛题聚焦于遥感影像的像素级解读与特定类别的提取及分类,评估其在多样类别(包括建筑、道路、林地等)中的性能表现。

解题思路

我们借鉴了顶尖方案的架构,并努力缩小差距,但效果并不理想。

模型采用了HRNet_W48+OCRNet,loss采用LovaszSoftmax和CrossEntropy(详见my_model.py)。

backbone = paddleseg.models.backbones.HRNet_W48(pretrained='https://bj.bcebos.com/paddleseg/dygraph/hrnet_w48_ssld.tar.gz', has_se=False)model = paddleseg.models.OCRNet(num_classes=4,backbone=backbone,backbone_indices=[-1],ocr_mid_channels=512,ocr_key_channels=256, pretrained='https://bj.bcebos.com/paddleseg/dygraph/ccf/fcn_hrnetw48_rs_256x256_160k/model.pdparams')登录后复制

ce_coef = 1.0lovasz_coef = 0.3main_loss = lovasz_coef*self.lovasz(yp[0], yt)+ce_coef*self.ce(yp[0], yt)soft_loss = lovasz_coef*self.lovasz(yp[1], yt)+ce_coef*self.ce(yp[1], yt)return 1.0*main_loss+0.4*soft_loss登录后复制

数据集

数据集采用了paddle.io.Dataset包装,方便采用paddle.io.DataLoader实现组batch和并行预处理,能够提高训练效率。

通过调用Paddle中的transforms进行数据增强,包含变换颜色抖动、随机旋转、随机翻转和裁剪等多种方式。

另外,发现训练集中有大约5000余张样本对应的标签完全由255组成,他们对训练不会有任何收益,故构造数据集时将相应的样本剔除。

代码详见my_dataset.py

训练策略

优化器为Momentum,学习率策略为PolynomialDecay和LinearWarmup。其他训练参数为:

BATCH_SIZE = 32LR = 1e-3WARMUP_EPOCH = 10 # warmup轮数TRAIN_EPOCHS = 40 # 训练轮数EVAL_EPOCH = 2 # 每两轮验证一次登录后复制

训练主函数见train.py

学习率变化曲线loss曲线miou曲线

预测

在训练过程中出现了一个有趣的现象,验证集的MIoU曲线呈现出先下降后上升的U型特征。使用最佳验证集模型进行预测的结果反而比最后的一轮要差,因此通常选择在第时加载模型进行测试。

在使用PaddlePaddle进行模型推理时,通过with paddle.no_grad或者@paddle.no_grad装饰器可以有效减少内存占用,尤其适用于资源有限的环境中。不过,随着VGPU的强大性能,这些技巧已经变得相对不重要。

推理时把数据集用DataLoader包装一下可以更好的并行。

预测完成后,在左侧点击右键,选择“打包下载”,可以轻松获取ZIP格式的压缩包,直接在线提交参赛。有趣的是,之前发现是“Download as zip archive”的英文版本,如今却变成了中文,不知为何如此变化。

具体代码见predict.py。

代码说明

代码均存放于work文件夹,结果保存在work/result下,模型位于models文件夹。 configs.py用于全局参数设置, my_dataset.py构建数据集, my_model.py创建模型, predict.py执行预测并存储结果, train.py进行训练, utils.py提供辅助工具函数。

模块文件下都通过

if __name__=='__main__': ...登录后复制

的形式编写了一些测试语句,方便调试。

总结

在四月份进行的那次比赛中,我虽然有了一个初步的模型,但未能充分利用paddleseg这个优秀的套件,因此分数并不理想。这次的经验让我意识到提分的关键可能包括: 数据增强:常规的数据增强手段可能会产生一定效果,根据具体情况来挑选和调整是关键。 SOTA(最新技术状态)模型:对于初学者而言,使用现成的优秀模型会比自己构建好得多。通过学习和比较论文中的源代码,你或许能发现一些改进的空间。 预训练模型:无论是图像分类还是语义分割,预训练模型都提供了强大的基础能力,值得探索和利用。 结果后处理:虽然我没有充分试验过TTA技术(Temporal Temporal Augmentation),但根据之前的经验,简单的结果过滤可能会带来微小的提升。

与顶尖团队的差距在于数据增强方法的应用,而自己使用API进行手写训练时可能还存在一些操作上的不完善之处,这需要进一步的学习和改进。

一键复现

In []

# 安装paddleseg和解压数据集。!pip install paddleseg==2.3.0!cd data/data77571/ && unzip -q train_and_label.zip!cd data/data77571/ && unzip -q img_test.zip登录后复制 In []

# 训练!cd work && python train.py登录后复制 In []

# 预测!cd work && python predict.py登录后复制

以上就是飞桨常规赛:遥感影像地块分割 - 10月第2名方案的详细内容,更多请关注其它相关文章!

精品推荐

相关文章

最新资讯

热门文章

更多