jjzjj

2022“航天宏图杯”遥感影像耕地变化检测第四名方案简介

海淀小天 2024-07-29 原文

这个赛题的训练数据其实和去年是一样的,只是是语义分割的评价指标改成了类似实例分割的指标。

1.赛道背景

变化检测对“耕地红线”、土地利用监管等应用具有重要意义。利用多时相遥感数据,采用多种图像处理和模式识别方法提取变化信息,并定量分析和确定地表变化的特征与过程,便是遥感变化检测的本质。传统遥感行业基于人工两期影像标注从而判别地物时相变化的方法受限于效率低、成本高等问题,难以满足实际应用需求,本赛道希望遴选出高效的遥感图像变化检测算法模型,对图像中的变化图斑信息进行高效识别,提高空间信息网络建设中遥感图像快速变化识别能力。

2. 赛道任务

变化检测赛道力求对通过前后两时相的遥感影像,提取出地物发生变化的斑块。选手使用主办方提供的两个时相的遥感图像进行变化判别处理,主办方依据评分标准对结果进行综合评价。依据所述地物变化标准,以耕地-建筑/动土的对象级变化检测为目标,设计赛题如下:

a. 初赛:算法在耕地-建筑/动土的对象级变化检测的能力;

b. 复赛:算法在耕地-建筑/动土的对象级变化检测的能力。进阶考察算法分类的准确性,测试数据尺寸变化的适应性;

c. 决赛:算法在耕地-建筑/动土的对象级变化检测的能力。进阶考察现场答辩评议,嵌入式环境的适应性(模型复杂度及效率),算法分类的准确性,测试数据尺寸变化的适应性,支持统一的接口调用;

其实就是docker提交。

3. 数据简介及赛题分析

数据来源

(1)来源:数据为1米-2米分辨率的高分一号、高分二号图像,由武汉大学测绘遥感信息工程国家重点实验室采集、标注、构建;

(2)规模:6000+张遥感影像变化检测样本数据(按512*512大小折算);

(3)用途:土地利用动态监测,矿产资源开发状况和地质灾害的调查与监测;生态环境监管调查与评价,水环境监测与评估,空气环境监测与评价;耕地数量与质量调查

数据说明

a.原始影像:影像格式为tif,包含R、G、B三个波段,训练集影像尺寸为512512像素,初赛测试集影像尺寸为512512像素,复赛、决赛数据初步确定为大幅面遥感影像。

b.标签数据:标签格式为单通道的png,每个像素的标签值由一个数值表示,使用‘uint8’数据类型存储,该数值表示是否为变化,“0”代表未变化,“1”代表变化。

c.test目录下的instances_test.json 不包含标注信息,仅包含图像的imgId,选手需根据此文件中图片的id推理。

4. 方案简介

基于Siam-ConvNext的遥感影像耕地变化检测

这个比赛后期,方案和PPT主要是队友在做,所以细节上我可能描述的没那么清晰。

4.1 整体网络架构

首先总体架构其实是基于孪生网络的,在经过一系列的backbone的对比后,我们选的是convnext作为主干网络。在解码部分,可以直接类比Siam-FC-Conc的结构。

4.2 训练策略

4.3 数据增强

这块其实做了一些工作

首先是水平、垂直翻转、旋转、多尺度、归一化等常规操作;

其次,采用了双时相的翻转,线上傅里叶变换转换风格,

以及使用测试集的伪标签进行微调模型,

4.4 推理

4.5 Tricks

分割的概率阈值设定为0.05;

以一定的重叠率滑动窗口进行推理;

对于分割的二值结果进行处理时,并行化;

伪标签。

4.6 最终结果

评测指标:

采用AP10作为精度评价指标

最终决赛排名第四,精度12.38第三,速度65秒。

4.6 总结和展望

在这种需要进行速度排名的比赛中,还是需要掌握知识蒸馏这个知识点的。其次,换小模型也比较重要,当时使用的是base模型,参数量确实有点多了。

有关2022“航天宏图杯”遥感影像耕地变化检测第四名方案简介的更多相关文章

  1. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  2. ruby-on-rails - 启用 Rack::Deflater 时 ETag 发生变化 - 2

    在启用Rack::Deflater来gzip我的响应主体时偶然发现了一些奇怪的东西。也许我遗漏了一些东西,但启用此功能后,响应被压缩,但是资源的ETag在每个请求上都会发生变化。这会强制应用程序每次都响应,而不是发送304。这在没有启用Rack::Deflater的情况下有效,我已经验证页面源没有改变。我正在运行一个使用thin作为Web服务器的Rails应用程序。Gemfile.lockhttps://gist.github.com/2510816有没有什么方法可以让我从Rack中间件获得更多的输出,这样我就可以看到发生了什么?提前致谢。 最佳答案

  3. ruby - 检测由 RSpec、Ruby 运行的代码 - 2

    我想知道我的代码是否在rspec下运行。这可能吗?原因是我正在加载一些错误记录器,这些记录器在测试期间会被故意错误(expect{x}.toraise_error)弄得乱七八糟。我查看了我的ENV变量,没有(明显的)测试环境变量的迹象。 最佳答案 在spec_helper.rb的开头添加:ENV['RACK_ENV']='test'现在您可以在代码中检查RACK_ENV是否经过测试。 关于ruby-检测由RSpec、Ruby运行的代码,我们在StackOverflow上找到一个类似的问题

  4. ruby - 使用 Ruby Daemons gem 检测停止 - 2

    我正在使用rubydaemongem。想知道如何向停止操作添加一些额外的步骤?希望我能检测到停止被调用,并向其添加一些额外的代码。任何人都知道我如何才能做到这一点? 最佳答案 查看守护程序gem代码,它似乎没有用于此目的的明显扩展点。但是,我想知道(在守护进程中)您是否可以捕获守护进程在发生“停止”时发送的KILL/TERM信号...?trap("TERM")do#executeyourextracodehereend或者你可以安装一个at_exit钩子(Hook):-at_exitdo#executeyourextracodehe

  5. ruby-on-rails - ruby 中两个哈希之间的变化 - 2

    我有两个具有以下格式的哈希mydetails[x['Id']]=x['Amount']这将包含如下数据hash1={"A"=>"0","B"=>"1","C"=>"0","F"=>"1"}hash2={"A"=>"0","B"=>"3","C"=>"0","E"=>"1"}我期待这样的输出:Differencesinhash:"B,F,E"非常感谢任何帮助。 最佳答案 这个解决方案可能更容易理解:(hash1.keys|hash2.keys).select{|key|hash1[key]!=hash2[key]}Array#|返回2

  6. ruby - Ruby 脚本如何检测到它正在 irb 中运行? - 2

    我有一个定义类的Ruby脚本。我希望脚本执行语句BoolParser.generate:file_base=>'bool_parser'仅当脚本作为可执行文件被调用时,而不是当它被irbrequire(或通过-r在命令行上传递)时。我可以用什么来包装上面的语句,以防止它在我的Ruby文件加载时执行? 最佳答案 条件$0==__FILE__...!/usr/bin/ruby1.8classBoolParserdefself.generate(args)p['BoolParser.generate',args]endendif$0==_

  7. Ruby 无法检测字符串中的换行符 - 2

    我有以下字符串,我想检测那里的换行符。但是Ruby的字符串方法include?检测不到它。我正在运行Ruby1.9.2p290。我哪里出错了?"/'ædres/\nYour".include?('\n')=>false 最佳答案 \n需要在双引号内,否则无法转义。>>"\n".include?'\n'=>false>>"\n".include?"\n"=>true 关于Ruby无法检测字符串中的换行符,我们在StackOverflow上找到一个类似的问题: h

  8. 映宇宙2022年营收63亿元:同比下降三成,毛利率提升4.3个百分点 - 2

    3月26日,映宇宙(HK:03700,即“映客”)发布截至2022年12月31日的2022年度业绩财务报告。财报显示,映宇宙2022年的总营收为63.19亿元,较2021年同期的91.76亿元下降31.1%。2022年,映宇宙的经营亏损为4698.7万元,2021年同期则为净利润4.57亿元;期内亏损(净亏损)为1.68亿元,2021年同期的净利润为4.33亿元;非国际财务报告准则经调整净利润为3.88亿元,2021年同期为4.82亿元,同比下降19.6%。 映宇宙在财报中表示,收入减少主要是由于行业竞争加剧,该集团对旗下产品采取更为谨慎的运营策略以应对市场变化。不过,映宇宙的毛利率则有所提升

  9. 【自动驾驶环境感知项目】——基于Paddle3D的点云障碍物检测 - 2

    文章目录1.自动驾驶实战:基于Paddle3D的点云障碍物检测1.1环境信息1.2准备点云数据1.3安装Paddle3D1.4模型训练1.5模型评估1.6模型导出1.7模型部署效果附录show_lidar_pred_on_image.py1.自动驾驶实战:基于Paddle3D的点云障碍物检测项目地址——自动驾驶实战:基于Paddle3D的点云障碍物检测课程地址——自动驾驶感知系统揭秘1.1环境信息硬件信息CPU:2核AI加速卡:v100总显存:16GB总内存:16GB总硬盘:100GB环境配置Python:3.7.4框架信息框架版本:PaddlePaddle2.4.0(项目默认框架版本为2.3

  10. ruby - 重新连接 tcpsocket(或如何检测已关闭的套接字) - 2

    我有一个连接到服务器的ruby​​tcpsocket客户端。在发送数据之前如何检查套接字是否已连接?我是否尝试“拯救”断开连接的tcpsocket,重新连接然后重新发送?如果是这样,有没有人有一个简单的代码示例,因为我不知道从哪里开始:(我很自豪我设法在rails中获得了一个持久连接的客户端tcpsocket。然后服务器决定杀死客户端,一切都崩溃了;)编辑我已经使用此代码解决了一些问题-如果未连接,它将尝试重新连接,但如果服务器已关闭则不会处理这种情况(它将继续重试)。这是正确方法的开始吗?谢谢defself.write(data)begin@@my_connection.write(

随机推荐