《Adjacent-level Feature Cross-Fusion with 3D CNN for Remote Sensing Image Change Detection》论文笔记

2023-10-27

论文:邻接层特征交叉融合与三维CNN用于遥感图像变化检测

作者作者
日期:2023.2.10

贡献点

  1. 提出了一种用于遥感图像变化检测的端到端三维卷积网络。与现有的特征融合策略不同,该网络利用三维卷积的内在融合特性,是变化检测领域的一种创新尝试。
  2. 在编码器和解码器之间设计了邻接级特征交叉融合(AFCF)模块。通过交叉融合相邻层特征,AFCF模块可以实现特征互补和更好的特征表示。
  3. 此外,还引入了密集跳过连接策略,提高了结果的像素级预测能力和变化对象的紧凑性。

总体架构
在这里插入图片描述

AFCF3D-Net采用标准的编解码器架构和一系列特征处理模块,主要包括以下几个部分:

  1. 3D特征编码器,3D特征编码器采用ResNet-50作为骨干,通过3D卷积进行扩展。三维特征编码器的目标是同时提取和融合双时间遥感图像的特征,其输出是双时间融合特征。
  2. AFCF模块,编码器与解码器之间建立AFCF模块,可实现编码器邻接级特征的交叉融合,将有价值的变化信息传递给解码器。此外,我们还引入了挤压激励模块,并对其进行了进一步改进,以适应所提出的变化检测网络。
  3. 解码器,采用密集跳过连接策略聚合多层特征,生成更精确的变化图。

<1> 3D特征编码器
在这里插入图片描述

采用一个膨胀的3D ResNet50作为骨干,用3D卷积取代了传统ResNet中的所有2D卷积。即,我们将大小为 3 * 3 的2D卷积滤波器替换为大小为 3 * 3 * 3 的3D卷积滤波器。此外,为了使三维卷积网络更容易收敛,将三维卷积滤波核分解为独立的空间和时间分量(见图3(a)),其滤波器大小分别为 1 * 3 * 3 和3 * 1 * 1 。前者在空间分量上进行特征提取,后者在时间分量上进行双时间图像的特征融合。

如图3(b)所示为将三维卷积转换为2+1维卷积的特征编码器过程,骨干的三维特征块的输出特征可以写成:
在这里插入图片描述
其中 Fi1 , Fi2 表示双时间图像三维特征切片,w1, w2, w3 表示三维滤波器的三时间维权重,* 表示二维卷积运算。由于三维卷积的内在融合特性,通过上述三维卷积的表述,可以有效地融合双时间图像的特征。双时间图像的不变特征通过共享滤波器 w2 保持其自身的公共属性。同时,在可学习权值分别为 w1 和 w3 的滤波条件下,双时间图像的特征被增强。

<2> 邻接层特征交叉融合
在这里插入图片描述

AFCF的结构如图4所示,AFCF连接编码器和解码器,AFCF的五个模块可以表示为,AFCFi ,0<=i<=4 。为了进一步说明,在 AFCF i , i ∈ {1,2,3 } 中通常有三个分支(即当前、以前和后续)。而 AFCF i, i ∈ {0,4} 只包含两个分支(即一个当前分支和一个相邻分支)。此外,从3D编码器获得的每个输入特征级的通道数首先使用通道缩减(CR)模块减少,将其通道减少到一个固定的更小的数量(即本文中的32),这可以减少计算负载和内存使用。具体来说,CR模块在执行CR时将各个层的初始通道数从{64,256,512,1024,2048}减少到{32,32,32,32}。

在交叉融合步骤中,前一个分支(即低级分支)和后续分支(即高级分支)分别通过下采样和上采样转换为当前分支的分辨率。这个过程可以表示为:
在这里插入图片描述
其中 f i-1, f i+1 分别是前一个分支和后续分支。F i-1 和 Fi+1 分别对应下采样特征和上采样特征。Down(.) 为2 stride的三维卷积下采样操作, UP(.) 为双线性插值实现的2倍上采样。然后它们都通过元素相加的方式合并到当前分支中。然后将得到的初步交叉融合特征输入到核3 * 3 * 3 的三维卷积块中。最后,AFCF中的改进挤压和激励(MSE)操作利用每个特征层上的融合特征,在邻接层特征交叉融合后校准各自的特征映射。此外,引入残差学习策略,将原始的当前分支特征与融合的邻接层特征相结合,增强了变化特征的表示能力。整个过程的表述如下:

在这里插入图片描述
其中 F i-1, F i, F i+1 分别是前一个分支,当前分支和后续分支的特征。F o i为多层次特征交叉融合结果。AFCFF i 表示三个分支的和,sum(.) 表示求和操作。MSE(.) 表示下面介绍的MSE模块。
在这里插入图片描述

本文中的编码器是3D的,特征张量是4D的。因此,一般的注意机制不能直接用于增强特征表示。受最流行的注意力模块挤压和引文(squeeze -and - dexcitation, SE)的启发,本文提出改进的挤压和引文(squeeze -and - dexcitation, MSE)模块来增强特征信息。如图5所示。我们假设特征映射为在这里插入图片描述
其中C、T、H和W分别降低了特征F的通道数、时间、高度和宽度。首先,将维度为C * T * H * W 的特征 F 重塑为维度为 (C * T) * H * W 的特征F’,将时间维度信息合并到信道维度中。随后,特征通过挤压和激励操作,产生通道特征向量1,2{,,,…,}C Tfv fv fv fv与C Tfv R。

然后,将提取的通道特征向量应用于特征映射F’ ,生成改进的特征。最后,将改进后的特征从 (C * T) * H * W 重新塑造为C * T * H * W 。整个过程制定如下:

在这里插入图片描述
其中F表示输入特征向量,Tran和Inv分别表示正变换和反变换操作。CAF表示改进的特性,表示逐元素的乘法。

<3> 采用密集跳过连接策略的特征解码器

密集的跳过连接机制可以聚合来自底层特征图的详细空间信息和来自高层特征图的抽象语义信息,从而保证解码器能够充分挖掘每个不同层次上获得的多尺度特征,增强变化检测的像素级预测能力。
在这里插入图片描述
图2©为了集成由AFCF模块生成的全量程特征图,集成的特征图被命名为F oi ,它是由第i个AFCF模块生成的。

更具体地说,我们以第4级特征解码器为例来说明如何集成特征映射。

首先,对分辨率较高的前3个低层次特征图(即 Fo1,F o2 ,和 Fo3 )分别采用与F o4 相同比例尺的下采样块序列进行下采样,对分辨率较低的高层次特征图(即 F o5)进行上采样,至与 F o4相同比例尺。然后,将下采样和上采样特征与4个 Fo 在时间维度上进行拼接。需要注意的是,对于下采样和上采样操作,每个特征映射在时间维度上的通道号都是相同的。连接的特性被命名为 CF 4 ,它在时间维度上的通道号是之前每个特性的5倍。此外,为了减少内存的使用,便于后续处理,我们设计了一种时间维降块time reduction (TR),可以减少时间维特征的通道数。第4层特征计算的过程可以概括为:
在这里插入图片描述
式中 TCat() 为时间维度上的特征拼接。 D() 和 U() 分别表示下采样和上采样操作。 MSE() 表示上面提到的MSE模块。 TR() 表示时间信道约简操作。 F4是由四级解码器聚合的特性。按照类似的程序,我们可以依次得到 F3、F2 和 F1。得到 F1 后,对1 * 1 * 1 卷积进行滤波,再加上一个sigmoid层,得到变化图。

实验结果
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《Adjacent-level Feature Cross-Fusion with 3D CNN for Remote Sensing Image Change Detection》论文笔记 的相关文章

  • 基于 Q3DScatter 的自定义图表,QCustom3DItem 运行缓慢

    我想制作一个带条形的 3D 图表 条形颜色取决于其大小 两个都Qt 条形图和散点图类型 https doc qt io qt 5 qtdatavisualization overview html接近我正在寻找的东西 我最终创建了一个基于的
  • 编写每个三角形/面具有纯色的 GLSL 片段着色器的方法

    我有顶点和三角形数据 其中包含每个数据的颜色triangle 面 不是每个顶点 即单个顶点由多个面共享 每个面可能具有不同的颜色 我应该如何在 GLSL 中解决这个问题以获得每个的纯色分配face正在渲染 通过平均顶点相邻多边形的颜色来计算
  • 对一系列点重新采样

    我有一个 3d 点数组 想象一下球的轨迹 有 X 个样本 现在 我想对这些点重新采样 以便我有一个新数组 其中包含 y 个样本的位置 y 可以大于或小于 x 但不能小于 1 始终至少有 1 个样本 将原始数组重新采样为新数组的算法会是什么样
  • 尝试理解 Pytorch 的 LSTM 实现

    我有一个包含 1000 个示例的数据集 其中每个示例都有5特征 a b c d e 我想喂7LSTM 的示例 以便它预测第 8 天的特征 a 阅读 nn LSTM 的 Pytorchs 文档 我得出以下结论 input size 5 hid
  • 从打包序列中获取每个序列的最后一项

    我试图通过 GRU 放置打包和填充的序列 并检索每个序列最后一项的输出 当然我的意思不是 1项目 但实际上是最后一个 未填充的项目 我们预先知道序列的长度 因此应该很容易为每个序列提取length 1 item 我尝试了以下方法 impor
  • 下载变压器模型以供离线使用

    我有一个训练有素的 Transformer NER 模型 我想在未连接到互联网的机器上使用它 加载此类模型时 当前会将缓存文件下载到 cache 文件夹 要离线加载并运行模型 需要将 cache 文件夹中的文件复制到离线机器上 然而 这些文
  • 点列表的 3D 轮廓(凹壳)

    我有一个 C 中的 Vector3 点列表 我需要计算这些点的凹轮廓 确实有很多参考资料 特别是对于 凸 分辨率 由于格雷厄姆算法 我已经成功实现了 然而 由于我现在需要有效地计算凹轮廓 所以我迷失了 维基百科确实列出了很多用于凸计算的资源
  • 使 CUDA 内存不足

    我正在尝试训练网络 但我明白了 我将批量大小设置为 300 并收到此错误 但即使我将其减少到 100 我仍然收到此错误 更令人沮丧的是 在 1200 个图像上运行 10 epoch 大约需要 40 分钟 有什么建议吗 错了 我怎样才能加快这
  • OpenGL Z 偏置(多边形偏移)限制

    我有两个共面的多边形 我尝试做 glEnable GL POLYGON OFFSET FILL glPolygonOffset 0 1 并期望其中一个明显 位于 另一个之上 这种情况直到大约 70 75 个单位之外 近剪裁平面为 1 远剪裁
  • 如何将 3D 图像输出到 3D 电视?

    我有一台 3D 电视 如果我不至少尝试让它显示我自己创作的漂亮 3D 图像 我就会逃避我的责任 作为一个极客 我之前已经完成了非常基本的 OpenGL 编程 因此我了解所涉及的概念 假设我可以为自己渲染一个简单的四面体或立方体并使其旋转一点
  • Pytorch Tensor 如何获取元素索引? [复制]

    这个问题在这里已经有答案了 我有 2 个名为x and list它们的定义如下 x torch tensor 3 list torch tensor 1 2 3 4 5 现在我想获取元素的索引x from list 预期输出是一个整数 2
  • 如何使用pytorch构建多任务DNN,例如超过100个任务?

    下面是使用 pytorch 为两个回归任务构建 DNN 的示例代码 这forward函数返回两个输出 x1 x2 用于大量回归 分类任务的网络怎么样 例如 100 或 1000 个输出 对所有输出 例如 x1 x2 x100 进行硬编码绝对
  • torch.stack() 和 torch.cat() 函数有什么区别?

    OpenAI 的强化学习 REINFORCE 和 actor critic 示例具有以下代码 加强 https github com pytorch examples blob master reinforcement learning r
  • OpenGL z轴指向哪里?

    我正在尝试了解 OpenGL 坐标系 我到处都看到它被描述为右撇子 但这与我的经验不符 我尝试绘制一些形状和 3 d 对象 我发现 z 轴显然指向 屏幕 而 x 指向右侧 y 指向上方 这是左手坐标系的描述 我缺少什么 编辑 例如 http
  • 将大块位图转换为 3 维位图

    Problem 我需要这个大量的数据作为输入 对于基于C的arduino 这是上面示例中所需格式的大量数据 const byte bitmap 8 8 0xFF 0x81 0x81 0x81 0x81 0x81 0x81 0xFF 0x81
  • 预期设备类型为 cuda 的对象,但在 Pytorch 中获得了设备类型 cpu

    我有以下计算损失函数的代码 class MSE loss nn Module metric L1 L2 norms or cosine similarity mode training or evaluation mode def init
  • PyTorch 中的连接张量

    我有一个张量叫做data形状的 128 4 150 150 其中 128 是批量大小 4 是通道数 最后 2 个维度是高度和宽度 我有另一个张量叫做fake形状的 128 1 150 150 我想放弃最后一个list array从第 2 维
  • 如何使用 pytorch 同时迭代两个数据加载器?

    我正在尝试实现一个接收两张图像的暹罗网络 我加载这些图像并创建两个单独的数据加载器 在我的循环中 我想同时遍历两个数据加载器 以便我可以在两个图像上训练网络 for i data in enumerate zip dataloaders1
  • 我应该如何格式化 .dat 文件以便制作 3D 矢量图?

    我正在为大学做这个编程任务 我们必须写一个c 计算 3D 空间中某些线圈的磁场矢量的程序 我已经成功编写了这个程序 并且我认为它运行得很好 不过 我想添加一个特殊的东西 这是我的试卷 所以它必须特别好 我想绘制出向量 我习惯打电话gnupl
  • GL_CULL_FACE使所有对象消失

    我正在尝试在 openGL3 3 中创建一些简单的多边形 我有两种类型的对象 具有以下属性 对象 1 10 个顶点 按顺序在下面列出 存储在GL ARRAY BUFFER并使用GL TRIANGLE FAN v x y z w v 0 0

随机推荐

  • 什么是xxl-job?

    xxl job是一款开源的分布式任务调度框架 主要用于解决大规模分布式任务的调度和执行问题 它提供了任务调度中心 执行器和任务日志等组件 可以实现任务的定时调度 动态添加和删除任务 任务执行情况的监控和日志记录等功能 xxl job的作用主
  • HTML <ul> 标签

    实例 无序 HTML 列表 ul li Coffee li li Tea li li Milk li ul ul 标签定义无序列表 浏览器支持 元素 Chrome IE Firefox Safari Opera ul Yes Yes Yes
  • cad汉仪长仿宋体_长仿宋体字体下载 cad工程机械绘图工程制图国标字体下载

    做CAD很多时候要用到国标字体 CAD制图上用的国标字体一般就是长仿宋体 特此小编给大家分享 ttf格式的cad工程机械绘图工程制图国标字体下载 长仿宋体字体一般是专门用来做cad工程机械绘制效果图中使用 希望大家喜欢 界面预览图 在很多专
  • zlib库自定义接口封装

    zlib库自定义接口封装 zlib封装类说明 编译zlib库 编译自定义接口静态库 测试代码 代码 文件链接 zlib封装类说明 实现对文件以及文件夹的压缩解压缩 zip unzip h ifndef ZIP UNZIP H define
  • 《剑指offer》:编程实现字符串到整数的装换,模拟实现函数atoi

    题目描述 编程实现字符串到整数的转换 例如输入字符串 123456 输出整数12345 函数atoi atoi 是把字符串转换成整型数的一个函数 包含在头文件stdlib h中 函数原型 int atoi const char nptr 参
  • 电机控制里的谐波和逆变器非线性探讨

    电机控制里的谐波或逆变器非线性探讨 一 逆变器非线性第一个主要原因是死区时间及器件延迟时间 二 逆变器非线性第二原因是功率管的压降 三 逆变器的非线性会引起零电流箝位现象 导致电流波形不够正旋 增大了谐波干扰 并且在一个周期中会有6次电流畸
  • 诚之和:使用Java+Swing实现医院管理系统的实战练习 附完整实例代码

    本篇文章将和大家分享使用Java的Swing工具类来完成医院管理系统的实战练习 有兴趣的小伙伴们可以一起实操学习一下 本文内容有助于大家对于Java的学习和理解 一 系统介绍 本系统实现的以下功能 管理员功能 登录系统 病人信息的增删改查
  • 写一个手机类,属性:品牌brand,价格price 行为:打电话Call,发短信Message,打游戏Game 要用到this和Private的知识点

    初写手机类 这个程序是初步的程序 还有很多细节没补上 等到学到后面再逐渐完善了 class Demond Phone public static void main String args Phone p1 new Phone p1 set
  • centos8 网卡无法启动,且无ip

    centos8 网卡无法启动 且无ip 1 NetworkManger未运行 错误 网络管理器 NetworkManager 未运行 解决 将NetworkManger设置为开机自启动 systemctl enable NetworkMan
  • 《Stable Diffusion WebUI如何下载模型》

    接上一个教程 现在开始使用Stable Diffusion 自己训练模型太花时间了 直接下载别人训练好的模型可以省很多事 左上面stable Diffusion checkpoint就是我们的模型 现在里面什么都没有 1 点击选择上面的Ci
  • map,filter,some,every,find方法的区别(通俗易懂)

    map filter some every都是原数组不受改变 而foreach是在原数组上改变 map 返回新数组 在原数组上进行数据处理 只会在原有数组上元素内容改变 数组长度不变 filter 返回新数组 在原数组上判断是否满足条件来进
  • 结构体计算大小与位域计算大小

    结构体的大小计算 原则一 结构体的元素按顺序存储 结构体成员的偏移量必须是成员大小的整数倍 原则二 结构体大小是所有成员大小的整数倍 除了内部结构体和数组 看例子比较快理解 以下是自己的理解 指针的占字节数要看是32还是64位 32占4字节
  • 马士兵_JAVA自学之路

    JAVA自学之路 一 学会选择 为了就业 不少同学参加各种各样的培训 决心做软件的 大多数人选的是java 或是 net 也有一些选择了手机 嵌入式 游戏 3G 测试等 那么究竟应该选择什么方向呢 我的意见是 不要太过相信各种培训机构或是抢
  • 解决:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x81 in position 18: illegal multibyte sequence

    意思就是 UnicodeDecodeError gbk 编解码器无法解码位置18中的字节0x81 非法的多字节序列 这是我使用python发送邮件的时候出现的报错信息 我编码格式使用的是utf 8并不是gbk 但是却无法解码 于是我回头看之
  • 计算机win7卡顿如何解决方法,win7卡顿严重解决方法_win7运行卡顿严重最流畅设置方法-win7之家...

    在使用win7系统电脑的时间一长 出现的电脑故障也就会越多 这大多数都是用户自己所造成的 例如有用户的win7系统在运行过程中总是会出现严重卡顿的情况 这让许多用户都感到很难受 那么win7卡顿严重怎么解决呢 下面小编就来告诉大家win7运
  • shineblink ZE08K-CH2O甲醛测量

    甲醛传感器 一 本例程实现功能 二 传感器介绍 三 接线图 四 完整代码 五 代码运行结果 一 本例程实现功能 通过Core连接甲醛传感器 读取传感器的值 并打印输出结果 二 传感器介绍 三 接线图 注意 传感器的 5 引脚也可以不用连接到
  • 师傅领进门之6步教你跑通一个AI程序!

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由云计算基础发表于云 社区专栏 源码下载地址请点击原文查看 初学机器学习 写篇文章mark一下 希望能为将入坑者解点惑 本文介绍一些机器学习的入门知识 从安装环境到跑通机器学习入
  • linux虚拟机web服务器

    在Linux虚拟机中 常见的Web服务器软件有很多 比如Apache Nginx Lighttpd等 其中 Apache是使用最广泛的Web服务器软件 因为它稳定可靠 功能强大 易于配置和扩展 Nginx则是一个高性能 轻量级的Web服务器
  • python快速入门篇1-数据结构与算法(Python)

    原文链接 https blog csdn net wangdingqiaoit article details 77620393 写在前面 python语言以其语法简洁 代码量比java开发的程序少3 5倍 比c 少5 10倍 快速原型开发
  • 《Adjacent-level Feature Cross-Fusion with 3D CNN for Remote Sensing Image Change Detection》论文笔记

    论文 邻接层特征交叉融合与三维CNN用于遥感图像变化检测 作者 日期 2023 2 10 贡献点 提出了一种用于遥感图像变化检测的端到端三维卷积网络 与现有的特征融合策略不同 该网络利用三维卷积的内在融合特性 是变化检测领域的一种创新尝试