草庐IT

2022年 change detection遥感图像变化检测 论文附代码

Candy 晔 2023-11-20 原文

1.Remote Sensing Change Detection using Denoising Diffusion Probabilistic Models
论文 代码 22-6

动机: 可用于训练CD模型的标注训练图像较少,应该注重从数百万免费可用的、无标记的、无策展的遥感图像中挖掘尽可能多的信息,以提高CD的准确性和鲁棒性。
目前的预训练方法要么需要航空场景分类数据集进行监督预训练,要么需要配对的多时间图像进行自我监督预训练,这限制了他们利用数百万现成的未标记遥感图像信息的能力。

介绍: 提出了一种新的方法,通过去噪扩散概率模型,将通过不同的地球观测计划获得的数百万现成的、未标记的遥感图像合并到训练过程中。
在数百万现成的遥感图像上训练扩散模型,以学习航空图像的关键语义,然后使用扩散解码器的多尺度特征作为输入,在有限的像素级标签可用性下训练CD分类器。

由于扩散模型可以得到给定提取图像的更好的语义,也能够提取输入图像的层次特征表示。文章利用扩散模型的多尺度语义(即深度特征表示)作为输入,然后通道-空间注意模块,然后通过卷积分类器得到最终的变化预测图。

与其他深度学习架构不同的是还可以通过改变添加到输入中的噪声量来获得不同的特征表示的增强版本,进一步在有限的像素级变化标签下训练一个健壮的广义CD模型。

2.IDET: Iterative Difference-Enhanced Transformers for High-Quality Change Detection
论文 代码 2022-7

动机: 现有的工作大多集中在设计先进的网络架构,将特征差异映射到最终的变更图,而忽略了特征差异质量的影响。

介绍: 本文从不同的角度对CD进行研究,如何优化特征差异来突出变化和抑制不变区域。

IDET设计了三个变压器,两个变压器用于提取两幅图像的远程信息,第三种变压器采用前两种变压器的输出来迭代指导特征差的增强。
为了实现更有效的细化,进一步提出了基于多尺度idet的变化检测,使用UNet提取多尺度卷积特征进行多个特征差异细化,并用 粗-细融合策略 来结合所有细化后的特征差异。

3.Transition Is a Process: Pair-to-Video Change Detection Networks for Very High Resolution Remote Sensing Images
论文 代码 IEEE Transactions on Image Processing 2022-7

动机: 1)时间建模不完整,2)时空耦合使得网络很难一次集中在一个方面。

介绍: 提出一种更明确、更复杂的时间建模方法,并据此建立了一个对视频的变化检测(P2V-CD)框架。

受视频识别分为帧和光流可以在时间和空间上进行操作的启发,文章将CD解释为视频理解问题。根据输入图像对构造为一个携带丰富时间信息的伪过渡视频,作为时间编码器的输入。

在空间方面,双时间图像的拼接被用作输入,用一系列空间块(s - block)构建空间编码器,来捕获有助于定位变化区域的空间上下文。

在时间方面,构造一个伪视频帧序列,以获得更精细的时间数据视图。然后,指定一个由一个茎和四个时间块(t - block)组成的时间编码器来挖掘关于变化的时间信息。

在主干中,构建的视频在空间上进行了下采样,以减少空间信息,这样时间编码器可以更专注于时间维度。对第四个t块的输出进行深度监督,以增强时间特征的识别能力。

4.TINYCD A (Not So) Deep Learning Model For Change Detection
论文 代码 2022-7

动机: 现有基于深度学习的变化检测模型都过于复杂和庞大,难以应用于工业场景,边缘应用。

介绍: 提出了一种新的模型TinyCD,证明了它既轻便又有效,能够在参数减少13-150倍的情况下实现与当前技术水平相当甚至更好的性能。

使用PW-MLP(像素级掩码生成器)来处理这些信息,并生成一个作为时空注意力的分数。设计为产生一个掩模张量Mk∈RH×W。
跳过连接通过乘以掩码Mk,我们重新加权每个像素,以减轻向上采样产生的误导性信息。

5.A Transformer-Based Siamese Network for Change Detection
IGARSS 2022-7
论文 代码

动机: 最新的CD研究主要集中在增加CD模型的接受域上, Transformer 网络比深层 ConvNets 具有相对更大的有效接受场。

介绍: 该方法将分层结构的 transformer 编码器与多层感知(MLP)解码器在Siamese网络架构中统一起来,以有效地呈现精确CD所需的多尺度远程细节。

6.Fully Transformer Network for Change Detection of Remote Sensing Images
ACCV 2022-12 论文 代码

动机: 由于提取的视觉特征表征能力有限,目前的方法通常只能得到不完整的CD区域和不规则的CD边界。已有的这些方法并没有充分发挥 transformer 在多层次特征学习方面的能力。
1)随着遥感图像分辨率的提高,高分辨率图像中包含的丰富语义信息没有得到充分利用。
2)复杂遥感图像中边界信息经常缺失。
3)双相位遥感图像所包含的时间信息没有得到充分利用。

介绍: 本文提出了一种全新的遥感图像CD学习框架——全变网络(FTN),该框架改进了全局视角下的特征提取,并以金字塔方式组合了多层次的视觉特征。

框架包括三个关键部分,即暹罗特征提取(SFE)、深度特征增强(DFE)和渐进变化预测(PCP)。
1)SFE以双相位遥感图像为输入,首先通过两个共享的Swin变压器提取多级视觉特征。
在原始Swin变形金刚的每个阶段,特征分辨率减半,而通道维度翻倍。更具体地说,特征分辨率从(H/4) × (W/4)降低到(H/32) × (W/32),信道尺寸从C增加到8C。此外,为了减少计算量,我们将信道维数统一降为C。
高级特征捕获更多的全局语义信息,而低级特征保留更多的局部细节信息。它们都有助于检测变化区域。
它可以帮助学习更多具有判别性的全局级特征,获得完整的CD区域。
为了利用全局级信息,我们引入了一个额外的Swin Transformer块来扩大特征映射的接受域。
2)利用多层次的视觉特征生成总和特征和差异特征,利用时间信息突出变化区域。
3)通过整合上述特征,引入了一个嫁接了渐进注意模块(PAM)的金字塔结构,通过通道注意提高特征表示能力,用于最终的CD预测。
4)为了更好地训练框架,我们利用了具有多个边界感知损失函数的深度监督学习。

7.SARAS-Net Scale and Relation Aware Siamese Network for Change Detection
2022-12 论文 代码

动机: 深度学习模型这些方法忽略了对象之间的空间信息和缩放变化,导致边界模糊或错误,性能较低。除此之外,还忽略了两个不同图像之间的交互信息。

介绍: 我们提出了一种暹罗网络,对两个输入图像进行特征减法前后的操作,以检测变化区域,并获得在遥感数据集上的最新性能。

网络在特征减法之前和之后分别执行两个操作,在减法之前使用关系感知模块,在减法之后使用尺度感知模块和交叉变压器模块。
1)resnet骨干网络分别提取N层特征。
2)关系感知模块对每层提取到的特征进行交叉注意力和交叉自我注意力操作,目标是增强从两个输入图像中提取的特征映射之间的交互关系,提高特征识别变化检测的能力。
3)特征减法。
4)特征减法后,感知比例的注意模块在减法图上计算交叉缩放的注意,以处理多个大小的物体引起的场景变化问题。
感知比例模块不仅计算相同比例尺特征图上的注意,还计算其他比例尺上的注意,以解决变化检测中的尺度感知问题。
5)最后,交叉变压器模块融合了多层次特征,旨在更加关注空间信息,容易分离前景和背景,从而减少误报。

有关2022年 change detection遥感图像变化检测 论文附代码的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby-on-rails - Rails 源代码 : initialize hash in a weird way? - 2

    在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has

  3. 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("

  4. ruby-on-rails - 浏览 Ruby 源代码 - 2

    我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru

  5. ruby - 模块嵌套代码风格偏好 - 2

    我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的

  6. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  7. ruby - Net::HTTP 获取源代码和状态 - 2

    我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur

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

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

  9. 程序员如何提高代码能力? - 2

    前言作为一名程序员,自己的本质工作就是做程序开发,那么程序开发的时候最直接的体现就是代码,检验一个程序员技术水平的一个核心环节就是开发时候的代码能力。众所周知,程序开发的水平提升是一个循序渐进的过程,每一位程序员都是从“菜鸟”变成“大神”的,所以程序员在程序开发过程中的代码能力也是根据平时开发中的业务实践来积累和提升的。提高代码能力核心要素程序员要想提高自身代码能力,尤其是新晋程序员的代码能力有很大的提升空间的时候,需要针对性的去提高自己的代码能力。提高代码能力其实有几个比较关键的点,只要把握住这些方面,就能很好的、快速的提高自己的一部分代码能力。1、多去阅读开源项目,如有机会可以亲自参与开源

  10. 7个大一C语言必学的程序 / C语言经典代码大全 - 2

    嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来

随机推荐