【论文解读系列】EdgeNAT: 高效边缘检测的 Transformer

  • 代码: https://github.com/jhjie/edgenat

  • 论文: https://arxiv.org/abs/2408.10527v1

论文 EdgeNAT: Transformer for Efficient Edge Detection 介绍了一种名为EdgeNAT的基于Transformer的边缘检测方法。

1. 背景与动机

图片

EdgeNAT预测结果示例。(a, b):来自BSDS500的数据集的输入图像。(c, d):对应的真实标签。(e, f):由EdgeNAT检测到的边缘。(e)显示了由于颜色变化剧烈,EdgeNAT没有提取出鹿颈部区域的边缘。(f)显示了EdgeNAT准确提取出了远处模糊物体的边缘。

边缘检测是许多计算机视觉任务的基础,旨在从输入图像中精确提取物体边界和视觉显著的边缘。然而,由于图像中存在远距离物体、复杂背景中的模糊边界以及物体内部的颜色变化等挑战,边缘检测任务变得十分困难。传统的边缘检测方法主要依赖于颜色和纹理等局部信息,而基于卷积神经网络(CNN)的深度学习方法虽然可以扩展感受野以捕捉全局特征,但容易丢失细节信息。

近年来,Transformer在视觉任务中展示出了强大的特征提取能力,特别是具有层次结构的Dilated Neighborhood Attention Transformer (DiNAT)在有效捕捉全局和局部特征方面表现出色。然而,Transformer在边缘检测中的应用尚未得到充分开发。为了解决这一问题,论文提出了一种基于DiNAT的单阶段边缘检测模型——EdgeNAT,以期在精确提取物体边界和重要边缘的同时,提升检测效率。

2. EdgeNAT的模型设计

图片

我们提出的EdgeNAT的整体框架。

图片

(a) SCAFM的详细架构。(b) 空间注意力模块(SAM)。(c) 通道注意力模块(CAM)。

2.1 编码器:DiNAT

EdgeNAT的编码器采用了Dilated Neighborhood Attention Transformer (DiNAT),该模型能够同时保留局部信息的翻译等变性,并通过扩展感受野来捕捉长距离的特征依赖。DiNAT的结构通过在每个层次之间使用3x3卷积进行下采样,逐层减小空间分辨率,同时增加通道数。这种设计使得DiNAT在保持局部性和扩展感受野方面表现优异,从而适用于边缘检测任务。

2.2 解码器:SCAF-MLA

为了充分利用Transformer编码器生成的丰富特征,论文提出了一种新的解码器结构——空间和通道注意力融合多级聚合(SCAF-MLA)。这个解码器的核心组件是SCAF模块,它结合了空间注意力模块(SAM)和通道注意力模块(CAM),以同时计算特征图的空间和通道权重。这种设计能够在保持当前层次特征的独特性的同时,捕捉更高级别的特征,有助于在更高层次提取全局语义信息,同时在低层次保留细致的局部信息。

此外,解码器还通过一种称为预融合的技术来进一步提高性能,即在融合操作之前,将每一层的特征通道减少到与编码器第一层相同的数量,而不是直接减少到1。这种方法能够更好地集成不同层次的特征,提高边缘检测的精度。

3. 实验与结果

3.1 数据集与训练

论文在两个主流数据集上对EdgeNAT进行了评估:BSDS500和NYUDv2。BSDS500包含500张RGB图像,通过数据增强扩展到28,800张图像,模型在PASCAL VOC Context数据集上预训练后,使用BSDS500数据集进行微调并评估。NYUDv2数据集包含1449对RGB和深度图像,模型在经过扩展的训练和验证集上训练,并在测试集上进行评估。

图片

对BSDS500测试集中三个具有挑战性的样本进行了定性比较。有趣的是,在第三个示例中,尽管帽子的边缘即使对于人眼也难以分辨,但我们的L模型仍然能够完整地检测出右侧帽子的边缘。这个前所未有的现象表明,我们的模型在全局语义理解方面优于之前的工作。

图片

BSDS500测试集上的结果。最佳的两个结果分别用红色和蓝色标出,其他表格中也是如此。†表示使用额外的PASCAL VOC数据进行训练,‡表示多尺度测试。

3.2 消融实验

消融实验验证了不同设计对模型性能的影响。结果表明,预融合比最终融合对性能提升更大,而底部路径(Bottom-up Path)对DiNAT编码器的边缘检测效果反而有负面影响。此外,实验还验证了SCAF模块的有效性,相比于PPM模块,SCAF模块能够在不增加计算复杂度的情况下显著提升边缘检测的性能。

3.3 模型可扩展性

为了适应不同的应用场景,论文设计了五个不同参数规模的EdgeNAT模型(L、S0、S1、S2、S3),其中L模型拥有最多的参数。实验结果表明,随着模型规模的减小,边缘检测的性能略有下降,但推理速度显著提升,特别是S0模型,由于其第三层只有6层,处理速度远高于其他模型。

3.4 与现有方法的比较

在BSDS500数据集上,EdgeNAT-L模型在单尺度输入情况下取得了84.3%的ODS,超过了所有现有的边缘检测方法。在多尺度输入情况下,EdgeNAT-L模型的ODS达到了86.0%,进一步证明了其在准确性和效率方面的优越性。相比于传统的Canny和gPb-UCM方法,EdgeNAT在精度和召回率上均有显著提高。同时,EdgeNAT的推理速度在RTX 4090 GPU上达到20.87 FPS,远高于EDTER的2.2 FPS,展示了Transformer在边缘检测任务中的巨大潜力。

在NYUDv2数据集上,EdgeNAT-L模型在RGB、HHA和RGB-HHA三种输入类型下的ODS分别为78.9%、72.6%和79.4%,同样超过了现有的最佳方法,展示了模型的广泛适用性。

4. 结论

论文总结了EdgeNAT的主要贡献:通过引入DiNAT作为编码器,不仅提升了边缘检测的精度,还显著提高了计算效率;提出了SCAF模块,用于生成更丰富、更准确的特征表示;设计了适应不同应用场景的五个模型版本,并在BSDS500和NYUDv2数据集上进行了广泛的实验,证明了EdgeNAT在效率和准确性方面的优势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/896449.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c语言基础程序——经典100道实例。

c语言基础程序——经典100道实例 001, 组无重复数字的数002,企业发放的奖金根据利润提成003,完全平方数004,判断当天是这一年的第几天005,三个数由小到大输出006,输出字母C图案007,特殊图案008&…

【Petri网导论学习笔记】Petri网导论入门学习(七) —— 1.5 并发与冲突

导航 1.5 并发与冲突1.5.1 并发定义 1.14定义 1.15 1.5.2 冲突定义 1.17 1.5.3 一般Petri网系统中的并发与冲突定义 1.18一般网系统中无冲撞概念阻塞(有容量函数K的P/T系统,类似于冲撞)一般Petri网中并发与冲突共存情况 1.5 并发与冲突 Petr…

lstm基础知识

lstm前言 LSTM(Long short-term memory)通过刻意的设计来避免长期依赖问题,是一种特殊的RNN。长时间记住信息实际上是 LSTM 的默认行为,而不是需要努力学习的东西! 在标准的RNN中,这个重复模块具有非常简单的结构,例…

路由器原理和静态路由配置

一、路由器的工作原理 根据路由表转发数据 接收数据包→查看目的地址→与路由表进行匹配找到转发端口→转发到该端口 二、路由表的形成 它是路由器中维护的路由条目的集合,路由器根据路由表做路径选择,里面记录了网段ip地址和对应下一跳接口的接口号。…

【C语言备课课件】(下)指针pointer

目录 定义type *var_name;初始化int *p &a; // p指向变量a的地址 空指针NULL,野指针,指针悬挂 解引用指针的算术运算指针与数组 数组名—首指针二维数组指针 行指针列指针 多级指针(进阶)数组指针,指针数组(进阶&#xff09…

如何利用 Python抓取网页数据 其他方式抓取网页数据列举

在 Python 中可以使用多种方法抓取网页数据,以下是一种常见的方法,使用requests和BeautifulSoup库。 一、安装所需库 在命令提示符或终端中执行以下命令安装requests和BeautifulSoup库: pip install requests pip install beautifulsoup4二…

python——类

问:小编为什么突然开始发python?难道C语言你不行了? 废话少说,让我们进入python中的类的学习!! (一)基本知识 (1)掌握类的概念 1、类的定义: 即…

python安装transformer教程

本章教程,记录在Windows中如何使用python安装transformer。 一、安装依赖 pip install transformers推荐使用国内镜像源,速度会快很多。 二、测试代码 from transformers import pipeline# 加载一个文本生成模型 text_generator = pipe

LCWLAN设备的实际使用案例

我们的LCWLAN设备在实际使用中以裸板的形式放在客户的智能总线控制器中,客户的 智能总线刀片灯,柔性灯货架,柔性感应钢网柜以及智能电子料架等设备都是接到总线控制 器中,然后总控制器通过CAN总线和我们的LCWLAN设备连接&#xff…

Linux DEADLINE调度算法详解

介绍 在实时系统中,调度算法的选择对于任务的及时执行至关重要。为了满足实时性需求,Linux内核引入了不同的调度算法,其中 DEADLINE 调度算法是为硬实时任务而设计的。DEADLINE 调度算法的目标是在多任务的情况下确保任务在其指定的最后期限…

Cpp::STL—容器适配器Stack和Queue的讲解和模拟实现(15)

文章目录 前言一、适配器模式概念分类 二、Stack核心作用代码实现 三、Queue核心作用代码实现 四、deque双端队列貌似兼收并蓄?实则也难以兼得~ 总结 前言 适配器也是STL六大组件之一,请跟我一起领悟它的智慧!   正文开始! 一、…

如何实现简单的 WinCC 项目分屏?

说明: 本文主要介绍了在不使用分屏器的情况下,通过 WinCC 项目中的设置,实现简单的分屏操作。两台显示器分别显示不同的 WinCC 画面,独自操作,互不影响。 试验环境 : 本文试验时所用硬件及软件环境…

案例分享—国外优秀UI设计作品赏析

国外UI界面设计之所以出色,首要原因在于其注重用户体验。设计师们深入洞察用户需求,通过细致的用户调研和数据分析,确保界面布局、色彩搭配及交互方式都能贴合用户习惯,从而提供流畅、直观的操作体验,增强用户满意度和…

【MySQL】数据库基础、库的操作、表的操作、数据类型

目录 1. 数据库基础1.1 MySQL是什么1.2 使用案例1.3 服务器,数据库,表关系 2. 库的操作2.1 字符集和校验规则2.1.1 查看系统默认字符集以及校验规则2.1.2 查看数据库的字符集和校验规则2.1.3 修改数据库的字符集和校验规则 2.2 库的操作2.2.1 创建数据库…

c++算法第4天

本篇文章包含三道算法题&#xff0c;难度由浅入深&#xff0c;适合新手练习哟 第一题 题目链接 牛牛的快递_牛客题霸_牛客网 题目解析 <1kg -------> 20元 大于1kg&#xff1a;超出部分每千克1元 加急 5元 代码原理 代码编写 #include …

QT 实现自定义水波进度条

1.界面实现效果 以下是具体的项目需要用到的效果展示。 2.简介 原理:随着进度的改变,在我们的绘制图像void paintEvent(QPaintEvent *) override;事件中绘制图形。 使用QPainter来绘制正弦波,通过定时器,不断的更新我们绘制的图形,动态改变正弦波的参数来创建动画效果…

【从零开始的LeetCode-算法】3099. 哈沙德数

如果一个整数能够被其各个数位上的数字之和整除&#xff0c;则称之为 哈沙德数&#xff08;Harshad number&#xff09;。给你一个整数 x 。如果 x 是 哈沙德数 &#xff0c;则返回 x 各个数位上的数字之和&#xff0c;否则&#xff0c;返回 -1 。 示例 1&#xff1a; 输入&am…

提高阅读效率:三种读书笔记方法的实践

你是否曾经感到&#xff0c;尽管阅读了大量书籍&#xff0c;却很少有几本能够留下持久的印象&#xff0c;甚至书中的人物也逐渐从记忆中消失。实际上&#xff0c;这种阅读方式可能并没有太大的价值。要想真正从阅读中获益&#xff0c;培养良好的阅读习惯至关重要&#xff0c;而…

IDEA下lombok安装及找不到get,set的问题的解决方法

在IDEA中使用Lombok,但是在编译时&#xff0c;提示找不到set()和get()方法&#xff0c;明明在javabean中使用了Data注解&#xff0c;但是编译器就是找不到。 Idea下安装Lombok(需要二步) 第一步&#xff1a; pom.xml中加入lombok依赖包 1 2 3 4 5 6 7 <!-- https://mvnre…

Linux的开发工具gcc Makefile gdb的学习

一&#xff1a;gcc/g 1. 1 背景知识 1. 预处理&#xff08;进行宏替换) 预处理 ( 进行宏替换 ) 预处理功能主要包括宏定义,文件包含,条件编译,去注释等。 预处理指令是以#号开头的代码行。 实例: gcc –E hello.c –o hello.i 选项“-E”,该选项的作用是让 gcc 在预处理结…