首页 游戏 软件 资讯 排行榜 专题
首页
AI
【飞桨学习赛:遥感影像地块分割】22年7月第一名方案

【飞桨学习赛:遥感影像地块分割】22年7月第一名方案

热心网友
92
转载
2025-07-22
本文介绍飞桨遥感影像地块分割赛题22年7月第一名方案(66分)。基于PaddleSeg套件,采用有效数据增强,对类别3难样本重采样,改进SegFormer的Decoder(转置卷积替代双线性插值),用混合损失函数与TTA预测,通过数据与模型优化提升分割精度。

【飞桨学习赛:遥感影像地块分割】22年7月第一名方案 - 游乐网

飞桨学习赛:遥感影像地块分割——22年7月第一名:66分方案

比赛链接:飞桨学习赛:遥感影像地块分割

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

赛题介绍

本赛题由 2020 CCF BDCI 遥感影像地块分割 初赛赛题改编而来。遥感影像地块分割, 旨在对遥感影像进行像素级内容解析,对遥感影像中感兴趣的类别进行提取和分类,在城乡规划、防汛救灾等领域具有很高的实用价值,在工业界也受到了广泛关注。现有的遥感影像地块分割数据处理方法局限于特定的场景和特定的数据来源,且精度无法满足需求。因此在实际应用中,仍然大量依赖于人工处理,需要消耗大量的人力、物力、财力。本赛题旨在衡量遥感影像地块分割模型在多个类别(如建筑、道路、林地等)上的效果,利用人工智能技术,对多来源、多场景的异构遥感影像数据进行充分挖掘,打造高效、实用的算法,提高遥感影像的分析提取能力。 赛题任务 本赛题旨在对遥感影像进行像素级内容解析,并对遥感影像中感兴趣的类别进行提取和分类,以衡量遥感影像地块分割模型在多个类别(如建筑、道路、林地等)上的效果。

数据说明

本赛题提供了多个地区已脱敏的遥感影像数据,各参赛选手可以基于这些数据构建自己的地块分割模型。

【飞桨学习赛:遥感影像地块分割】22年7月第一名方案 - 游乐网        

其中有效的标签被定义为0,1,2,3。255像素值区域为未标记区域。

比赛难点

本比赛实质上还是一个语义分割的任务,只是相对于在遥感影像上的迁移。

个人认为本次比赛的难点在于类与类之间的分割界面不容易区分,对于模型细粒度的分割提出了要求。

而且对于后处理部分来说(分割任务涨点比较多的办法)由于类与类之间界限比较模糊,加上类别形状的不规则,难以找到有效的后处理办法涨分。

本项目亮点

整体基于PaddleSeg套件进行完成,易于上手改进,学习。

有效的数据增强方法

构建类别3难与训练的有效重采样办法,一定程度上解决类别3难以学习的问题。

构建基于SegFormer改进的Decoder,一定程度上解决模型细粒度不够的问题。

PaddleSeg套件开发

本项目使用的模型及数据集处理方法,均为在PaddleSeg原有的基础上进行改进,主要的改进部分有数据集加载处理及模型部分结构更改部分。

对于数据集的处理,主要从paddleseg/datasets/dataset.py更改

对于模型的选择及更改,则主要从paddleseg/models/segformer.py更改

数据增强部分

本项目从已有开源项目,和自己的消融实验,主要确立使用数据增强方法如下:

上述方法都基于未更改模型和数据集处理的得分,且都使用了TTA的预测方法

数据集处理部分

这里的数据集处理,主要是针对预测结果进行分析,并且获得。

从几次训练结果分析,可以知道模型对于类别3的学习,存在一定的困难,但其实如果从面积的角度去分析的话,三个类别的分布是相当的,但鉴于此,我选择了在训练过程中,对类别3单独进行重采样的处理方法

【飞桨学习赛:遥感影像地块分割】22年7月第一名方案 - 游乐网        

具体的代码在myconfig里的mydataset.py文件里。大致的思路就是去构建含有3类别的数据,在训练中以一定的概率对这些数据进行采样。相关代码如下,其实也很简单,就是一定概率下,这次的采样数据从含有类别3的数据里找。

            if np.random.random()登录后复制

       

这里的采样概率,采用的是以10%的概率对每次采样时,从含类别3中的数据中进行采样,当然这里也可以以递增的方法进行采样,但要改的代码比较多且最后都结果并没有以稳定10%概率采样效果好。

SegFormer模型改进

SegFormer是一款基于Transformer构建的具有简单结构的语义分割网络。其基础网络结构如下图所示。

【飞桨学习赛:遥感影像地块分割】22年7月第一名方案 - 游乐网        

这里重点关注模型的Decodr部分。原基础模型的Decoder部分,简单的说就是一个MLP来将不同特种层输出的特征进行融合,然后经过一个MLP再进行上采样。

这里给出两个改进的思路:

对MLP特征融合进行改进

具体可以参考像FPN和PAN结构的金字塔特征融合,来对特征进行充分挖掘。

对上采样部分进行改进

在原基础SegFormer结构里,上采样部分,用的是最简单的双线性插值的方法。在本项目中,针对上采样方法进行改进,旨在增强模型的细节还原能力。具体来说,即将上采样的部分更换成具有学习能力的转置卷积,来提升模型对细节的还原。

【飞桨学习赛:遥感影像地块分割】22年7月第一名方案 - 游乐网        

具体代码详见myconfig/segformer.py文件。

经过上述两部分操作,得分概览如下。

其他细节

本项目还存在以下一些细节部分

训练时采用混合Loss:分别为0.8:CrossEntropyLoss和0.2:LovaszSoftmaxLoss

预测时采用了TTA方法,分别有垂直翻转和0.75,1.0和1.25倍尺寸的多尺度预测。

下面则是本项目的训练过程

代码下载

这里提供了我自己加载在AI studio上的代码

In [8]
# !git clone https://github.com/lzzzzzm/AI-Studio-LrCompetition-Segmentation-of-sensing-imageblock!unzip -q data/data162694/PaddleSeg-SenseingBlock.zip -d ./
登录后复制    

数据集处理

In [9]
!unzip -q data/data80164/train_and_label.zip -d ~/data/!unzip -q data/data80164/img_test.zip -d ~/data/
登录后复制    In [10]
import osimport numpy as npdatas = []image_base = 'data/img_train'   # 训练集原图路径annos_base = 'data/lab_train'   # 训练集标签路径# 读取原图文件名ids_ = [v.split('.')[0] for v in os.listdir(image_base)]# 将训练集的图像集和标签路径写入datas中for id_ in ids_:    img_pt0 = os.path.join(image_base, '{}.webp'.format(id_))    img_pt1 = os.path.join(annos_base, '{}.webp'.format(id_))    datas.append((img_pt0.replace('/home/aistudio', ''), img_pt1.replace('/home/aistudio', '')))    if os.path.exists(img_pt0) and os.path.exists(img_pt1):        pass    else:        raise "path invalid!"# 打印datas的长度和具体存储例子print('total:', len(datas))print(datas[0][0])print(datas[0][1])print(datas[10][:])
登录后复制        
total: 66652data/img_train/T016293.webpdata/lab_train/T016293.webp('data/img_train/T032581.webp', 'data/lab_train/T032581.webp')
登录后复制        In [11]
import numpy as np# 四类标签,这里用处不大,比赛评测是以0、1、2、3类来对比评测的labels = ['建筑', '耕地', '林地',  '其他']# 将labels写入标签文件with open('labels.txt', 'w') as f:    for v in labels:        f.write(v+'\n')# 随机打乱datasnp.random.seed(5)np.random.shuffle(datas)# 验证集与训练集的划分,0.05表示5%为训练集,95%为训练集split_num = int(0.05*len(datas))# 划分训练集和验证集train_data = datas[:-split_num]valid_data = datas[-split_num:]# 写入训练集listwith open('train_list.txt', 'w') as f:    for img, lbl in train_data:        f.write(img + ' ' + lbl + '\n')# 写入验证集listwith open('valid_list.txt', 'w') as f:    for img, lbl in valid_data:        f.write(img + ' ' + lbl + '\n')# 打印训练集和测试集大小print('train:', len(train_data))print('valid:', len(valid_data))
登录后复制        
train: 63320valid: 3332
登录后复制        In [12]
import cv2 as cvimport tqdm# 写入包含类别3的采样样本sample_list = []with open('train_list.txt', 'r') as f:    lines = f.readlines()    for line in tqdm.tqdm(lines):        image_path, label_path = line.split(' ')        label_path = label_path[:-1]        label = cv.imread(label_path, cv.IMREAD_GRAYSCALE)        if label is not None:            if (label==3).any() == True:                sample_list.append(line)f.close()with open('sample.txt', 'w') as f:    for line in sample_list:        f.writelines(line)f.close()
登录后复制        
100%|██████████| 63320/63320 [00:13<00:00, 4559.30it/s]
登录后复制        

模型训练

In [ ]
!python AI-Studio-LrCompetition-Segmentation-of-sensing-imageblock/train.py \    --config AI-Studio-LrCompetition-Segmentation-of-sensing-imageblock/myconfig/segformer-b2-rs.yml \    --use_vdl \    --do_eval \    --num_workers 4 \    --save_interval 10000 \    --save_dir segformer-b2-rs \    --log_iters 2000
登录后复制    

推理预测和生成比赛文件

In [ ]
!python AI-Studio-LrCompetition-Segmentation-of-sensing-imageblock/predict.py \       --config AI-Studio-LrCompetition-Segmentation-of-sensing-imageblock/myconfig/segformer-b2-rs.yml \       --model_path segformer-b2-rs/model.pdparams \       --aug_pred \       --scales 0.75 1.0 1.25 \       --image_path data/img_testA \       --custom_color 0 0 0 1 1 1 2 2 2 3 3 3 \       --save_dir result/SegFormer-B2/
登录后复制    In [ ]
import osimport tqdmimport cv2img_path = "/home/aistudio/result/SegFormer-B2/pseudo_color_prediction"rst_path =  "/home/aistudio/result/SegFormer-B2/result"if not os.path.exists(rst_path):    os.makedirs(rst_path)file_list = os.listdir(img_path)img_list = [os.path.join(img_path, name) for name in file_list]for i,img_file in tqdm.tqdm(enumerate(img_list)):    img = cv2.imread(img_file,cv2.IMREAD_GRAYSCALE)    cv2.imwrite(os.path.join(rst_path,file_list[i]),img)
登录后复制    In [ ]
# 由预测结果生成提交文件!zip -r result.zip result/SegFormer-B2/result
登录后复制    
来源:https://www.php.cn/faq/1421540.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Pywinrm,一个 Python 管理利器!
科技数码
Pywinrm,一个 Python 管理利器!

Pywinrm 通过Windows远程管理(WinRM)协议,让Python能够像操作本地一样执行远程Windows命令,真正打通了跨平台管理的最后一公里。 在混合IT环境中,Linux机器管理Wi

热心网友
04.07
全网炸了!5亿人用的Axios竟被投毒,你的密钥还保得住吗?
科技数码
全网炸了!5亿人用的Axios竟被投毒,你的密钥还保得住吗?

早些时候,聊过 Python 领域那场惊心动魄的供应链攻击。当时我就感叹,虽然我们 JavaScript 开发者对这类套路烂熟于心,但亲眼目睹这种规模的“投毒”还是头一次。 早些时候,聊过 Pyth

热心网友
04.07
Toga,一个超精简的 Python 项目!
科技数码
Toga,一个超精简的 Python 项目!

Toga 是 BeeWare 家族的核心成员,号称“写一次,跑遍所有平台”,而且用的是系统原生控件,不是那种一看就是网页套壳的界面 。 写了这么多年 Python,你是不是也想过:要是能一套代码跑

热心网友
04.07
Python 异常处理:别再用裸奔的 try 了
科技数码
Python 异常处理:别再用裸奔的 try 了

异常处理的核心:让错误在正确的地方被有效处理。正确的地方,就是别在底层就把异常吞了,也别在顶层还抛裸奔的 Exception。 异常处理写得好,半夜不用起来改 bug。1 你是不是也这么干过?tr

热心网友
04.07
OpenClaw如何自定义SKILL
AI
OpenClaw如何自定义SKILL

1 Skills机制概述 提起OpenClaw的Skills机制,不少人可能会把它想象成传统意义上的可执行插件。其实,它的内涵要更精妙一些。 简单说,Skills本质上是一套基于提示驱动的能力扩展机制。它并不是一个可以独立“跑”起来的程序模块,而是通过一份结构化描述文件(核心就是那个SKILL m

热心网友
04.07

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

美国SEC主席Paul Atkins证实:加密货币安全港提案已送交白宫审查
web3.0
美国SEC主席Paul Atkins证实:加密货币安全港提案已送交白宫审查

加密货币行业翘首以盼的监管里程碑,终于有了实质性进展。美国证券交易委员会(SEC)主席保罗·阿特金斯(Paul Atkins)近日证实,那份允许加密项目在早期获得注册豁免权的“安全港”框架提案,已经正式送抵白宫,进入了最终审查阶段。 在范德堡大学与区块链协会联合举办的数字资产峰会上,阿特金斯透露了这

热心网友
04.08
微策略Strategy报告:第一季录得144.6亿美元浮亏 再斥资约3.3亿美元买进4871枚比特币
web3.0
微策略Strategy报告:第一季录得144.6亿美元浮亏 再斥资约3.3亿美元买进4871枚比特币

微策略Strategy报告:第一季录得144 6亿美元浮亏 再斥资约3 3亿美元买进4871枚比特币 市场震荡的威力有多大?看看Strategy的最新季报就明白了。根据其最新向美国证管会(SEC)提交的8-K报告,受市场剧烈波动影响,这家公司所持的比特币在第一季度录得了一笔惊人的数字——144 6亿

热心网友
04.08
稳定币发行商Tether再扩Web3版图!Paolo Ardoino:正开发去中心化搜索引擎Hypersearch
web3.0
稳定币发行商Tether再扩Web3版图!Paolo Ardoino:正开发去中心化搜索引擎Hypersearch

稳定币巨头Tether的动向,向来是加密世界的风向标。这不,它向Web3基础设施的版图扩张,又迈出了关键一步。公司执行长Paolo Ardoino在社交平台X上透露,其工程团队正在全力“烹制”一个新项目——去中心化搜索引擎 “Hypersearch”。这个消息一出,立刻引发了行业的广泛猜想。 采用D

热心网友
04.08
Base链首个原生DeFi借贷协议Seamless Protocol倒闭 将于2026年6月30日下线
web3.0
Base链首个原生DeFi借贷协议Seamless Protocol倒闭 将于2026年6月30日下线

基地位于Coinbase旗下以太坊Layer2网络Base的Seamless Protocol,日前正式宣告了服务的终结。这个曾经吸引了超过20万用户的原生DeFi借贷协议,在运营不到三年后,终究没能跑赢时间。它主打的核心产品是Integrated Leverage Markets(ILMs)——一

热心网友
04.08
PAAL代币如何参与治理?社区投票能决定哪些事项?
web3.0
PAAL代币如何参与治理?社区投票能决定哪些事项?

PAAL代币揭秘:深度解析Web3社区治理的核心钥匙 在去中心化自治组织的浪潮中,谁真正掌握了项目的话语权?PAAL代币提供了一套系统化的答案。它不仅是生态内流转的价值媒介,更是开启链上治理大门的核心凭证。通过持有并质押PAAL代币,用户能够对协议升级、资金分配乃至战略方向等关键事务投出决定性的一票

热心网友
04.08