目录
相关工作
方法描述
实验结果
首页 科技周边 人工智能 抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

Feb 07, 2024 pm 10:12 PM
ai 训练

当前的深度边缘检测网络通常采用编码器-解码器架构,其中包含上下采样模块,以更好地提取多层次的特征。然而,这种结构限制了网络输出准确且细致的边缘检测结果。

针对这一问题,一篇 AAAI 2024 上的论文给出了新的解决方案。

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge


  • 论文题目:DiffusionEdge: Diffusion Probabilistic Model for Crisp Edge Detection
  • 作者:叶云帆(国防科技大学),徐凯(国防科技大学),黄雨行(国防科技大学),易任娇(国防科技大学),蔡志平(国防科技大学)
  • 论文链接: https://arxiv.org/abs/2401.02032
  • 开源代码: https://github.com/GuHuangAI/DiffusionEdge

国防科技大学iGRAPE Lab提出了一种新的方法,用于二维边缘检测任务。该方法利用扩散概率模型,在学习迭代的去噪过程中生成边缘结果图。为了减少计算资源的消耗,该方法采用隐空间训练网络,并引入了不确定性蒸馏模块以优化性能。同时,该方法还采用解耦架构加速去噪过程,并引入自适应傅立叶滤波器来调整特征。通过这些设计,该方法能够用有限的资源进行稳定训练,并以更少的增强策略预测出清晰准确的边缘图。实验结果表明,该方法在四个公共基准数据集上的准确度和精度方面均显著优于其他方法。

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

图 1 基于扩散概率模型的边缘检测过程与优势示例

本文的创新点包括:

提出了针对边缘检测任务的扩散模型DiffusionEdge,该模型无需后处理即可预测出更细、更准确的边缘图。

为了解决扩散模型应用时的难点,我们设计了多种技术来确保方法在隐空间中稳定学习。同时,我们还保留了像素级的不确定性先验知识,并自适应地过滤傅立叶空间中的隐特征。

3、在四个边缘检测公共基准数据集上开展的大量对比实验展示了 DiffusionEdge 在准确度和细度方面均具有卓越的性能优势。

相关工作

基于深度学习的方法通常采用包含上下采样的编解码结构集成多层特征 [1-2],或是整合多个标注的不确定性信息以提升边缘检测的准确度 [3]。然而,天然受限于这样的结构,其生成的边缘结果图对于下游任务来说太过粗厚而严重依赖后处理的问题仍然亟待解决。尽管许多工作已经在损失函数 [4-5] 和标签修正策略 [6] 方面做出了探索以使网络能输出更细的边缘,但本文认为该领域仍然需要一个可以不借助任何额外模块,就能直接满足准确度和细度的边缘检测器,而无需任何后处理步骤。

扩散模型是一类基于马尔可夫链的生成模型,通过学习去噪过程逐渐恢复目标数据样本。扩散模型在计算机视觉、自然语言处理和音频生成等领域都表现出了卓越的性能。不仅如此,通过将图像或是其他模态的输入作为额外条件时,其在感知任务中也表现出了巨大的潜力,例如图像分割 [7]、目标检测 [8] 和姿态估计 [9] 等。

方法描述

本文所提出的 DiffusionEdge 方法总体框架如图 2 所示。受以往工作的启发,该方法在隐空间中训练具有解耦结构的扩散模型,并将图像作为额外的条件线索输入。该方法引入了自适应傅里叶滤波器来进行频率解析,且为了保留来自多个标注者的像素级不确定性信息并减少对计算资源的要求,还以蒸馏的方式直接使用交叉熵损失优化隐空间。

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

图 2 DiffusionEdge 的整体结构示意

针对目前的扩散模型受到采样步数太多,推理时间太长等问题的困扰,本方法受 DDM [10] 的启发,同样使用解耦的扩散模型架构来加速采样推理过程。其中,解耦的前向扩散过程由显式的转移概率和标准 Wiener 过程的组合来控制:

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

其中抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge分别代表初始边缘和噪声边缘,抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge指的是反向边缘梯度的显式转换函数。与 DDM 类似,本文方法默认使用常量函数抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge,则其相应的逆过程可以被表示为:

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

其中抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge。为了训练解耦的扩散模型,该方法需要同时监督数据和噪声分量,因此,训练目标可以被参数化为:

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

其中抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge是去噪网络中的参数。由于扩散模型如果要在原始图像空间中训练的话会占用太多的计算成本,因此参考 [11] 的思路,本文提出的方法将训练过程转移到了具有 4 倍下采样空间大小的隐空间中。

如图 2 所示,该方法首先训练了一对自编码器和解码器的网络,该编码器将边缘标注压缩为一个隐变量,而解码器则用于从这个隐变量中恢复出原来的边缘标注。如此一来,在训练基于 U-Net 结构的去噪网络阶段,该方法便固定这一对自编码和解码器网络的权重,并在隐空间中训练去噪过程,这样可以大幅减少网络对计算资源的消耗,同时维持不错的性能。

为了提升网络最后的性能,本文提出的方法在解耦操作中引入了一种可以自适应地过滤掉不同频率特征的模块。如图 2 左下角所示,该方法将自适应的快速傅立叶变换滤波器(Adaptive FFT-filter)集成到了去噪 Unet 网络中,位置在解耦操作之前,以在频域中自适应过滤并分离出边缘图和噪声分量。具体来说,给定编码器特征 抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge ,该方法首先沿空间维度执行二维的傅里叶变换(FFT),并将变换后的特征表示为 抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge 。紧接着,为了训练这个自适应频谱滤波模块,构造了一个可学习的权重图 抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge 并将其W乘以Fc。频谱滤波器可以全局地调整特定频率,并且学习到的权重可以适应不同数据集目标分布的不同频率情况。通过自适应地滤除无用成分,本方法通过快速傅里叶逆变换(IFFT)操作将特征从频域映射回空间域。最后,通过额外引入了来自的残差连接,避免完全过滤掉了所有有用的信息。上述过程可以由以下公式来描述:

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

其中抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge是输出特征,o表示哈达玛积(Hadamard Product)。

由于边缘和非边缘像素的数量高度不平衡(大多数像素都是非边缘的背景),参考以往的工作,我们同样引入不确定性感知的损失函数进行训练。具体来说,将作为第i个像素的真值边缘概率,对于第j个边缘图中的第i个像素,其值为抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge,则不确定性感知 WCE 损失的计算方式如下:


抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge


其中抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge,其中抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge是决定真值标注中不确定的边缘像素的阈值,如果像素值大于 0 而小于此阈值,则此类模糊的,置信度不够高的像素样本将在后续的优化过程中被忽略(损失函数为 0)。抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge分别表示真值标注边缘图中边缘和非边缘像素的数量。是用来平衡抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge的权重(设为 1.1)。因此,每个边缘图的最终损失函数计算方式为抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

在优化过程中忽略模糊的低置信度的像素可以避免网络混乱,使训练过程更稳定的收敛,并提高模型的表现。然而,将二元交叉熵损失直接应用于在数值和空间上均未对齐的隐空间中是几乎不可能的。尤其是,不确定性感知的交叉熵损失中利用阈值抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge(一般从 0 到 1)来判断像素是否为边缘,这是从图像空间上定义的,而隐变量遵循正态分布并且具有完全不同的范围和实际意义。此外,像素级的不确定性很难与不同大小的编码和下采样的隐特征保持一致,二者是很难直接兼容的。因此,将交叉熵损失直接应用于优化隐变量不可避免地会导致不正确的不确定性感知。

另一方面,人们可以选择将隐变量解码回图像级别,从而可以直接使用不确定性感知交叉熵损失来直接监督预测出的边缘结果图。不幸的是,这种实现让反向传播的参数梯度通过了冗余的自编码器网络,使得梯度很难得到有效的传递。此外,自编码器网络中额外的梯度计算会带来巨大的 GPU 内存消耗成本,这违背了本方法设计一个实用的边缘检测器的初衷,很难推广到实际应用中。因此,本方法提出了不确定性蒸馏损失,可以直接优化隐空间上的梯度,具体来说,设重构出的隐变量为抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge,自编码器网络的解码器是D,解码出的边缘结果是eD,本方法考虑基于链式法则直接计算不确定性感知的二元交叉熵损失抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge的梯度,具体计算方式为:

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

为了消除自编码器网络的负面影响,本方法直接跳过了自编码器抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge传递梯度并将梯度抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge的计算方式修改调整为:

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

这样的实现方式大大降低了计算成本,并允许利用不确定性感知的损失函数直接在隐变量上优化。如此一来,再结合一个随步数t自适应变化的时变损失权重抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge,本方法最终训练优化目标可以被表示为:

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

实验结果

本方法在四个领域内被广泛使用的边缘检测公共标准数据集上进行了实验:BSDS、NYUDv2、Multicue 和 BIPED。由于边缘检测数据标注比较难,标注数据量都比较少,以往的方法通常会使用各种策略来增强数据集。例如说,BSDS 中的图像通过水平翻转 (2×)、缩放 (3×) 和旋转 (16×) 进行增强,能够生成比原始版本扩大了 96 倍的训练集。以往的方法在其他数据集上使用的通用增强策略总结在了表格 1 中,其中 F 代表水平翻转,S 代表缩放,R 代表旋转,C 代表裁剪,G 代表伽马校正。不同的是,本方法仅需要使用随机裁剪的 320320 的图像块来训练所有数据。在 BSDS 数据集中,本方法则仅仅采用随机的翻转和缩放,其定量对比结果展示在了表 2 中。在 NYUDv2、Mu lticue 和 BIPED 数据集中,该方法仅需采用随机翻转训练。在使用更少增强策略的情况下,本方法在各个数据集,各个指标上的表现都优于之前的方法。通过观察图 3-5 的预测结果可以看出,DiffusionEdge 能够学习并预测出跟 gt 分布几乎一样的边缘检测结果图来,预测结果准确而清晰的优势对于有精细化需求的下游任务来说非常重要,也展示了其能直接应用于后续任务的巨大潜力。

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

表 1 以往方法在四个边缘检测数据集上使用的增强策略

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

表 2 不同方法在 BSDS 数据集上的定量对比

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

图 3 不同方法在 BSDS 数据集上的定性对比

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

图 4 不同方法在 NYUDv2 数据集上的定性对比

抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge

图 5 不同方法在 BIPED 数据集上的定性对比

以上是抛弃编码器-解码器架构,用扩散模型做边缘检测效果更好,国防科大提出DiffusionEdge的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SQL 如何添加新列 SQL 如何添加新列 Apr 09, 2025 pm 02:09 PM

SQL 中通过使用 ALTER TABLE 语句为现有表添加新列。具体步骤包括:确定表名称和列信息、编写 ALTER TABLE 语句、执行语句。例如,为 Customers 表添加 email 列(VARCHAR(50)):ALTER TABLE Customers ADD email VARCHAR(50);

SQL 添加列的语法是什么 SQL 添加列的语法是什么 Apr 09, 2025 pm 02:51 PM

SQL 中添加列的语法为 ALTER TABLE table_name ADD column_name data_type [NOT NULL] [DEFAULT default_value]; 其中,table_name 是表名,column_name 是新列名,data_type 是数据类型,NOT NULL 指定是否允许空值,DEFAULT default_value 指定默认值。

SQL 清空表:性能优化技巧 SQL 清空表:性能优化技巧 Apr 09, 2025 pm 02:54 PM

提高 SQL 清空表性能的技巧:使用 TRUNCATE TABLE 代替 DELETE,释放空间并重置标识列。禁用外键约束,防止级联删除。使用事务封装操作,保证数据一致性。批量删除大数据,通过 LIMIT 限制行数。清空后重建索引,提高查询效率。

SQL 添加列时如何设置默认值 SQL 添加列时如何设置默认值 Apr 09, 2025 pm 02:45 PM

为新添加的列设置默认值,使用 ALTER TABLE 语句:指定添加列并设置默认值:ALTER TABLE table_name ADD column_name data_type DEFAULT default_value;使用 CONSTRAINT 子句指定默认值:ALTER TABLE table_name ADD COLUMN column_name data_type CONSTRAINT default_constraint DEFAULT default_value;

使用 DELETE 语句清空 SQL 表 使用 DELETE 语句清空 SQL 表 Apr 09, 2025 pm 03:00 PM

是的,DELETE 语句可用于清空 SQL 表,步骤如下:使用 DELETE 语句:DELETE FROM table_name;替换 table_name 为要清空的表的名称。

phpmyadmin建立数据表 phpmyadmin建立数据表 Apr 10, 2025 pm 11:00 PM

要使用 phpMyAdmin 创建数据表,以下步骤必不可少:连接到数据库并单击“新建”标签。为表命名并选择存储引擎(推荐 InnoDB)。通过单击“添加列”按钮添加列详细信息,包括列名、数据类型、是否允许空值以及其他属性。选择一个或多个列作为主键。单击“保存”按钮创建表和列。

Redis内存碎片如何处理? Redis内存碎片如何处理? Apr 10, 2025 pm 02:24 PM

Redis内存碎片是指分配的内存中存在无法再分配的小块空闲区域。应对策略包括:重启Redis:彻底清空内存,但会中断服务。优化数据结构:使用更适合Redis的结构,减少内存分配和释放次数。调整配置参数:使用策略淘汰最近最少使用的键值对。使用持久化机制:定期备份数据,重启Redis清理碎片。监控内存使用情况:及时发现问题并采取措施。

怎么创建oracle数据库 oracle怎么创建数据库 怎么创建oracle数据库 oracle怎么创建数据库 Apr 11, 2025 pm 02:33 PM

创建Oracle数据库并非易事,需理解底层机制。1. 需了解数据库和Oracle DBMS的概念;2. 掌握SID、CDB(容器数据库)、PDB(可插拔数据库)等核心概念;3. 使用SQL*Plus创建CDB,再创建PDB,需指定大小、数据文件数、路径等参数;4. 高级应用需调整字符集、内存等参数,并进行性能调优;5. 需注意磁盘空间、权限和参数设置,并持续监控和优化数据库性能。 熟练掌握需不断实践,才能真正理解Oracle数据库的创建和管理。

See all articles