【论文解读系列】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在效率和准确性方面的优势。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考《信息系统运行管理员》- 4.1信息系统软件运维概述

4.1信息系统软件运维概述 文章目录 4.1信息系统软件运维概述信息系统软件运维的概念信息系统软件的可维护性及维护类型对软件可维护性的度量可以从以下几个方面进行:软件维护分类: 信息系统软件运维的体系1.**需求驱动**2.**运维流程**3.**运维过程**4.*…

LabVIEW提高开发效率技巧----事件触发模式

事件触发模式在LabVIEW开发中是一种常见且有效的编程方法,适用于需要动态响应外部或内部信号的场景。通过事件结构(Event Structure)和用户自定义事件(User Events),开发者可以设计出高效的事件驱动程序&am…

WPF 为button动态设置不同的模板

有时候需要动态的设置一些按钮的状态模板。使一个button显示不同的内容,比如Button未点击安装显示: 安装后显示: 可以通过设置button的content,通过content来设置不同的模板来实现功能,以下是代码: MainWi…

opencascade鼠标拖拽框选功能

1.首先在OccView中添加用于显示矩形框的类 //! rubber rectangle for the mouse selection.Handle(AIS_RubberBand) mRectBand; 2.设置框选的属性 mRectBand new AIS_RubberBand(); //设置属性 mRectBand->SetLineType(Aspect_TOL_SOLID); //设置变宽线型为实线 mRe…

day11-SpringMVC

一、SpringMVC 1.SpringMVC流程分析 2.各种注解 3.接收请求参数 3.1 简单类型 3.2 对象类型 3.3 数组类型 3.4 集合类型 3.5 日期类型 3.6 json参数类型 3.7 路径参数 二、统一异常处理 三、Restful

tensorflow入门案例手写数字识别人工智能界的helloworld项目落地1

参考 https://tensorflow.google.cn/?hlzh-cn https://tensorflow.google.cn/tutorials/keras/classification?hlzh-cn 项目资源 https://download.csdn.net/download/AnalogElectronic/89872174 文章目录 一、案例学习1、导入测试和训练数据集,定义模型&#xff…

Unreal5从入门到精通之 如何使用事件分发器EventDispather

文章目录 前言1.创建事件分发器设置属性2.创建Bind、Unbind及Unbind All节点在蓝图类中创建在关卡蓝图中创建3.创建事件分发器事件节点4.调用事件分发器在蓝图类中进行调用在关卡蓝图中进行调用前言 事件分发器是 Unreal Engine(UE)中一个重要的概念,它负责在游戏运行时管理…

超GPT3.5性能,无限长文本,超强RAG三件套,MiniCPM3-4B模型分享

MiniCPM3-4B是由面壁智能与清华大学自然语言处理实验室合作开发的一款高性能端侧AI模型,它是MiniCPM系列的第三代产品,具有4亿参数量。 MiniCPM3-4B模型在性能上超过了Phi-3.5-mini-Instruct和GPT-3.5-Turbo-0125,并且与多款70亿至90亿参数的…

基于socket实现客户端与服务器之间TCP通信

我们在算法部署时,通常需要进行算法端与其他服务端的通信,要么接受指令、要么是需要上传算法结果;除了我们常用的gRPC、HTTP、MQ等方式,还可以利用TCP来实现可靠通信;本次我们利用socket来展示如何进行两端的TCP通信。…

SAP SD学习笔记10 - SD出荷传票1 在库转送Order - 补充出荷 详解

上一章学习了受注传票中的不完全Log和Business Partner(取引先机能)的知识。 SAP SD学习笔记09 - 受注传票中的不完全Log 和 Business Partner(取引先机能)-CSDN博客 本章继续学习SD的内容。 - 在库转送Order - 补充出荷 目录 1&#xff0…

HCIP-HarmonyOS Application Developer 习题(九)

(多选) 1、HarmonyOS多窗口交互能力提供了以下哪几种交互方式? A. 全局消息通知 B.平行视界 C.悬浮窗 D.分屏 答案:BCD 分析:系统提供了悬浮窗、分屏、平行视界三种多窗口交互,为用户在大屏幕设备上的多任务并行、便捷的临时任务…

集合框架07:LinkedList使用

1.视频链接:13.14 LinkedList使用_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1zD4y1Q7Fw?spm_id_from333.788.videopod.episodes&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5&p142.LinkedList集合的增删改查操作 package com.yundait.Demo01;im…

CSS @规则(At-rules)系列详解___@charset规则使用方法

CSS 规则(At-rules)系列详解 ___charset规则使用方法 本篇目录: 零、时光宝盒 一、charset规则定义和用法 二、CSS charset语法 三、charset 使用方法例子 1、正确使用方法 2、无效的,错误的使用方法 零、时光宝盒 (https://blog.csd…

Android ViewModel

一问:ViewModel如何保证应用配置变化后能够自动继续存在,其原理是什么,ViewModel的生命周期和谁绑定的? ViewModel 的确能够在应用配置发生变化(例如屏幕旋转)后继续存在,这得益于 Android 系统的 ViewMod…

快速解决urllib3.exceptions.MaxRetryError: HTTPSConnectionPool

正题 使用pip命令查看urllib3版本 pip list发现版本为 1.26.9 urllib3 v1.26.9此时如下报错,无法正常使用(使用了代理) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(hostxxx.xxxxx.com, port443): Max retries exceeded wit…

神经网络模型的“扩散与进化”思想启迪

在上一篇笔记「上交大全华班复现o1旅程式学习下的深思考」中,其中对于上交大提出的旅程学习即system2慢思考认知范式下对于“多步骤的隐式到显式空间状态映射下的细粒度联合概率分布建模”的描述隐喻为“社会心理学或社会经济学两种不同的长程动态系统慢演化现象”。…

AI+视频监控:EasyCVR安防平台赋能火电制造行业的视频智能管理方案

随着信息技术的飞速发展和智能制造的深入推进,火电制造行业作为国民经济的重要组成部分,正面临着智能化转型的迫切需求。为了提升生产效率、保障设备安全、优化管理流程,火电制造企业迫切需要引入先进的视频监控与人工智能技术。EasyCVR安防监…

如何获取 uni-app 应用发布所需的证书、私钥与配置文件

引言 在开发和发布iOS应用时,开发者常常会面临一系列复杂的证书、私钥密码以及配置文件的管理问题。这些配置不仅影响到应用的开发调试,还决定了应用是否能够顺利通过审核并发布到App Store。对于使用uni-app进行开发的开发者来说,自动生成的…

c++基础知识复习(1)

前期知识准备 1 构造函数 (1)默认构造函数:没有参数传入,也没有在类里面声明 (2)手动定义默认构造函数:没有参数传入,但是在类里面进行了声明 可以在类外实现或者类内实现 以下案…

【最新华为OD机试E卷-支持在线评测】考勤信息(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…