Boundry attention: 泛化能力很强的边缘检测模块

原文链接:Boundary attention:: Learning to Find Faint Boundaries at Any Resolution

本文提出的模型泛化性好,即使只在合成的图案简单的图片上训练,在复杂的真实图上做检测也能得到较好的边界。

细节部分:

不同于viT把图片切成小patch,然后映射为token,而是每个像素都有一个token。
(文章说的dense,stride-1的token)

每个像素的token,设计为表达局部几何结构的特征空间,表征以自己为中心的正方形区域内的局部结构。

提出bottleneck:将图像的token映射到低维空间,这里设计这个空间为junction space

junction space:

用一些参数,代表了一些可能的几何边缘结构。比如什么都没有,边,角,T结,Y结。(这些几何结构够了吗?能不能通过kmeans聚类得到最佳的参数空间大小?)
这些参数3.1 包括点位置u=(u,v)点是相对patch中的中心像素的;线的方向theta;线顺时针旋转产生另外两条线,夹角依次为o1、2、3(因为最多产生三条线,所以最多表达三部分,比如T、Y结)。
⁃ 这些参数表达的几何结构种类是有限的,每一种文中叫做
wedge。

f-n代表输入图像
s-nj代表像素x在像素n的领域内,且属于第j个wedge,就=1.(j能离散?)(具体函数在附录,代表)
d-n代表像素x离最近的边界的欧式距离。这里的边界就是jspace中的线。

每个像素的region的大小,设计成自适应的。(这里能用那个blur-scale改,合理吗)用函数window function:w-n表示。这个函数定义为一个凸函数:分三个级别衡量size(D=3,9,17)。如果距离中心像素的大小小于某个size,就加上对应的系数。
⁃ 大小由regionsize决定,同时,结果又决定了region size
boundry attention是neighborhood corss-attetnion:cross-attention的一种变体。

结构:先把token用训练好的线性映射patch FFN变到junction space。

gather operator:对patch进行计算wedge feature。新的fkj=在图f上,patch包括的像素值,每个像素的window function作为权,f作为值的加权平均。
⁃ input:feature图、window function图p、wedge图g。
⁃ output:更新的feature

slice operator:对每个像素进行计算。算包含他的所有region的某个值的mean,variance。这个值有两个:distance map和wedge feature。
在这里对每个patchk要进行加权计算,对他有贡献的是包含这个patch中心点n的所有patches,不只他自己。
⁃ input:distance map d,window function图p,wedge图g;feature map一样的
⁃ output:distance map d的均值、方差;feature map的均值、方差。
这两个operator得到distance map、feature的方差。

期望输出:
期望重叠区(每个pixel又一个region)的边界是一样的。所以让上面得到的两个输出方差很小。

对上面distance map和wedge feature经过attention输出的均值的:
⁃ 像素n的feature mean是对包含他的领域中每个wedge feature的权重求和。(attention是对邻居的不同的注意力)

图片解释:
⁃ 第二行的图,对应选取的区域,颜色都一样,所以他的第一个window function很大?对应window中的边缘(第二张图)是快到花瓣边缘了。

整个网络要迭代g,p表示。迭代window function的系数和junction 空间的表示。为什么不能直接计算?因为直接计算太难了?不是,因为根本无法计算,只能让网络迭代得到最好的g(关注该范围的参数是多少)最好的p(关注多大的范围),以及考虑邻居信息的feature

网络输入像素,经过MLPmix输出hidden state。
然后attention8次迭代g和p(wedge feature和window size参数):

每个boundry attention:

使用跳跃连接;
把hidden state copy两份,一份+window token(pai),林一份+global feature f。分别经过MLP。
window tkoen作为Q,global feature作为KV。
window token(size, 1):前面提到过每个pixel n都作为query。
global feature分割为11大小的patch,两者做cross-ttetnion:每个像素n(query)的考虑了邻居的特征的新特征是什么?

还给global feature的patch加了positional encoding。

attention输出的hidden state得最后8维是window token。他们两个经过线性层,映射回junciton space的参数表示g。得到的g可以进行gather和slice opartor。

训练过程:
一共有一个MLPmix,两个boundry attention。总共进行8次迭代。
第一阶段迭代4次:线MLP-mixer和第一个attention一起训练;在第3,4迭代使用loss
第二阶段在迭代4次:然后再加第二个attention进行端到端的训练。在第7,8迭代使用loss
最后一次迭代的loss比前几次迭代的都权重大。
(一开始输入-MLPmixer,attention-再返回给attention-在返回给attention(此时计算loss1)-在返回给attention(此时计算loss2),加上第二个attetnion,返回头部端到端输出-在返回头部端到端输出-在返回头部端到端输出(此时计算loss3)-在返回头部端到端输出(此时计算loss4),最后loss应该是loss1-4的和)
(可能因为全部端到端训练,太难了?)

loss12是监督loss:包括feature和distance map的GT(这个他怎么得到的?)

每个loss包括像素级和patch级别的feature loss和distance map loss。让输入接近GT。还有他们对应的方差loss,让其尽量为0.

实验细节:
合成有15-20种几何图形的图片,变成灰度图,参见裁剪25*125大小,作为输入。
数据集10^5,90%作为训练。
⁃ 给图片加noise,让网络实现得到和无噪声一样的feature map,distance map。

结果:
1. 验证对噪声的抗干扰性能
和EDTRE、去噪的EDTRE对比
和类似原理但不是深度学习的filed of junction做对比。

2.	验证去噪检测时仍然存在的亚像素精度

在小image上检测,上采样放大边缘也很好。

3.	可视化hidden state,发现确实学到了junction space。而且直接对值进行差值,能得到连续的junction(可视化就是直接把hiddenstate值作为参数进行画?4.	在真实图像上

没和其他网络比较对真实图像的检测,而是比较了加噪声后的表现。

5.	推理时间等等

补充材料:
1. junction space
junction空间的几何表示,可以有M种,本文用的是M=3

参数空间有一些等价表示。
这里没看懂

Mjunction是更大的M‘的子集(训练时还可以提高M试一试)

在Mjucntion参数空间中,能直接计算出central 方向和边界boundary方向

和filed of junction那篇在junction space上的比较:参数空间多了oemga,这样就不用限制fai的范围。

这个参数空间的表示允许线性插值

2.	训练数据

合成数据集Kaleidoshapes

3.	模型细节

输入3通道图像,每个像素映射为64维。
经过一个zero-padding处理(补充边界)。
然后MLPmix:两个neighbor mixing blocks:每个包括空间patch mixer和channelmixer。前者是用两个3*3空间卷积+GELU实现。
channelmixer是每个像素输入的MLP。
最后剪掉包含了原图之外信息的patches。

训练细节:
第一阶段
训练只用kal数据集的简化版(100*100大小,加了高斯噪声,)用等式9,10的loss。让网络学到有意义的hidden state gamma,避免jucntion的collapse。让网络关注边界一致性loss(方差loss-0),学习无边界patch。

数据存在不平衡:只有一部分有边界信息。所以加一个额外的空间importance mask给有边界的区域更多关注。(用过gaussian产生这个mask?)把mask以常数C加在loss上。

第二阶段:
加另一个block,用全部iamge和loss。
也用了空间importance mask

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

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

相关文章

Django框架——第一个Django程序

大家好,在很久之前,我写了一系列关于Flask框架的文章,得到了不错的反馈,这次我打算写一系列关于Django框架的文章,希望大家多多支持,多给一些写作意见。 Django Django是用Python语言编写的开源web应用框…

matlab自定义函数实现图像小波变换

matlab中提供了小波变换函数lwt和ilwt,可以方便地实现提升小波变换。 我们按照小波变换的定义,粗糙地实现一个针对图像的小波变换,如下: % 使用方法: img imread(lena256.bmp); % 假设lena.png是灰度图像 subplot(2…

上门服务系统|如何搭建一款高质量的上门服务软件

预约上门系统源码开发是一项复杂而有挑战性的任务,但也是实现智能化预约服务的关键一步。通过自主开发预约上门系统的源码,企业可以完全定制系统的功能、界面和安全性,从而为用户提供更高效、便捷、个性化的预约体验。本文将带你深入了解预约…

S275智慧煤矿4G物联网网关:矿山开采的未来已来

随着经济发展煤矿需求不断激增,矿山矿井普遍处于偏远山区,生产管理、人员安全、生产效率是每个矿山矿井都需要考虑的问题,利用网关对现场终端设备连接组网,实现智慧煤矿远程管理。 各矿山矿井分布范围比较广泛,户外环…

(学习日记)2024.01.27

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

GNU链接脚本的MEMORY命令解析

1、GUN中对MEMORY指令的描述 《GUN的官网描述》 2、MEMORY命令的格式 MEMORY{name [(attr)] : ORIGIN origin, LENGTH len…}实例: MEMORY {/* 描述设备的内存区域 */rom (rxa) : ORIGIN 0x80000000, LENGTH 512Kram (wxa) : ORIGIN 0x80080000, LENGTH 51…

Vue2中给对象添加新属性界面不刷新?

在 Vue.js 中,如果你在对象上添加新属性而界面没有刷新,这可能是由于Vue的响应性系统的特性所导致的。Vue在初始化时会对数据进行响应式转换,这意味着只有在初始时存在的属性才会被监听,后来添加的属性不会自动触发视图更新。 我…

ElementUI 组件:Container 布局容器实例

ElementUI安装与使用指南 Container 布局容器 点击下载learnelementuispringboot项目源码 效果图 项目里el-container-example.vue代码 <script> export default {name: el_container_example,data() {const item {date: 2024-01-31,name: 国龙,address: 上海市某区…

并网逆变器学习笔记8---平衡桥(独立中线模块)控制

参考文献&#xff1a;《带独立中线模块的三相四线制逆变器中线电压脉动抑制方法》---赵文心 一、独立中线模块的三相四线拓扑 独立中线模块是控制中线电压恒为母线一半&#xff0c;同时为零序电流ineu提供通路。不平衡负载的零序电流会导致中线电压脉动&#xff0c;因此需要控制…

微信小程序引导用户打开定位授权通用模版

在需要使用位置信息的页面&#xff08;例如 onLoad 或 onShow 生命周期函数&#xff09;中调用 wx.getSetting 方法检查用户是否已经授权地理位置权限&#xff1a; Page({onLoad: function() {wx.getSetting({success: res > {if (res.authSetting[scope.userLocation]) {/…

力扣hot100 分割回文串 集合 dfs

Problem: 131. 分割回文串 文章目录 思路Code&#x1f496; DP预处理版 思路 &#x1f468;‍&#x1f3eb; 参考题解 Code import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Deque; import java.util.List;public class Solution {int n;//字符…

卷子怎么扫描成电子版?试试这些软件

卷子怎么扫描成电子版&#xff1f;随着科技的进步&#xff0c;越来越多的纸质文档正在被数字化所取代。如果你手头有一份纸质试卷&#xff0c;想要将其转化为电子版&#xff0c;却不知道该如何操作&#xff0c;那么今天我们将为你介绍5款软件&#xff0c;让你轻松实现这一目标。…

倒计时68天

题单详情 - 蓝桥云课 (lanqiao.cn) 2.2.串门 - 蓝桥云课 (lanqiao.cn) #include<bits/stdc.h> using namespace std; #define int long long const int N2e55; const int inf0x3f3f3f3f; typedef pair<int,int> pii; vector<pii>ve[N]; int dis[N];//记录以…

探索美颜技术:美颜SDK是什么?

今天&#xff0c;笔者将于大家一同探讨美颜技术&#xff0c;重点聚焦于美颜SDK的定义、工作原理以及在不同领域的应用&#xff0c;以期为读者带来一场有关美颜技术背后秘密的深度探索。 一、什么是美颜SDK&#xff1f; 美颜SDK是一套旨在为开发者提供美颜算法和功能的工具包。…

安卓主板_紫光展锐T820安卓主板方案定制

安卓主板采用了性能强劲的紫光展锐T820八核处理器&#xff0c;搭载了Android 13系统&#xff0c;为用户带来更加顺畅的操作体验。该主板不仅采用了6nm工艺&#xff0c;更加强大的算力和优越的性能&#xff0c;能够轻松实现多任务运行&#xff0c;不会出现卡顿现象。 此外&#…

和朋友随时随地玩——幻兽帕鲁服务器极简部署流程

什么是游戏服务器&#xff1f;通俗来说就是一个公共的电脑&#xff0c;玩家可以在任意时刻进入服务器游玩&#xff0c;不需要等待某个玩家创建房间&#xff0c;即可任意在一个世界一起游戏 本文将为您提供极简部署幻兽帕鲁服务器的指引&#xff0c;「仅需轻点三次鼠标&#xff…

C++ 手记

extern关键字 extern 存储类用于提供一个全局变量的引用&#xff0c;全局变量对所有的程序文件都是可见的。 当有多个文件且定义了一个可以在其他文件中使用的全局变量或函数时&#xff0c;可以在其他文件中使用 extern 来得到已定义的变量或函数的引用。通常用于当有两个或多…

大数据学习之Redis,十大数据类型的具体应用(二)

目录 3.5 Redis 集合&#xff08;Set&#xff09; 单值多value&#xff0c;且无重复 sadd / smembers / sismember / srem / scard srandmember / spop smove 集合运算 应用场景 3.6 Redis有序集合Zset&#xff08;sorted set&#xff09; 有序有重复 zadd / zrange …

计算机设计大赛 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…

Kafka 记录

推荐资源 官网http://kafka.apache.org/Githubhttps://github.com/apache/kafka书籍《深入理解Kafka 核心设计与实践原理》 Kafka 架构 Kafka使用ZooKeeper作为其分布式协调框架&#xff0c;其动态扩容是通过ZooKeeper来实现的。Kafka使用Zookeeper保存broker的元数据和消费者信…