I Can Find You! Boundary-Guided Separated Attention Network for Camouflaged Object Detection

本文主要是介绍I Can Find You! Boundary-Guided Separated Attention Network for Camouflaged Object Detection,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

Abstract

提出:边界引导分离注意网络BSA-Net

  1. 双分支:反向注意力分支,消除伪装对象的内部,关注背景;正向注意力分支,关注前景
  2. 边界引导模块

1. Introduction

目前COD面临的问题:伪装对象与背景边界模糊
BSA-Net是一种由粗到精的学习模型,利用三个模块:

  1. 残差多尺度特征提取器RMFE:捕获上下文信息
  2. 分离注意力机制SEA:处理敏感-不变性困境,建立正常注意力分支与反向注意力分支,关注前景与背景,相结合工作
  3. 边界引导器BG:构建(突出)伪装对象的边界,增强了SEA边缘检测的能力

3. Methodology

在这里插入图片描述

3.1 Network Architecture

  • 输入: I ∈ R W × H × 3 I\in R^{W\times H\times 3} IRW×H×3
  • 获得多尺度特征 F i , i ∈ { 1 , 2 , 3 , 4 , 5 } F_i,i\in \{1,2,3,4,5\} Fi,i{1,2,3,4,5}:使用Res2Net作为骨干网络
  • F 2 , F 3 , F 4 , F 5 F_2,F_3,F_4,F_5 F2,F3,F4,F5输入残差多尺度特征提取器中,获得不同感受野的特征
  • 利用正向注意力流与反向注意力流的分离注意力模块对前景与背景进行聚焦。粗略图 C i , i ∈ { 1 , 2 , 3 , 4 } C_i,i\in \{1,2,3,4\} Ci,i{1,2,3,4}由反向注意力流得到(由Ground Truth监督)
  • 利用边缘检测网络获取边界图BM,应用于SEA模块中
  • 利用shuffle attention处理信息通道
  • 得到第一轮预测的4个精细化地图,标记为 R i , i ∈ { 1 , 2 , 3 , 4 } R_i,i\in \{1,2,3,4\} Ri,i{1,2,3,4},并选择 R 1 R_1 R1作为推理阶段的最终输出

3.2 Residual Multi-scale Feature Extractor

前提:由于ResNet进行串行卷积运算,无法提取丰富的上下文信息;使用 3 × 3 3\times 3 3×3的卷积核难以在一个阶段获取多尺度特征,不利于图像的理解和分割
启发Inception模块和Res2Net
提出:残差多尺度特征提取器RMFE

细节
RMFE采用并行的卷积(卷积核 3 × 3 3\times 3 3×3),利用残差块逐次放大感受野,其公式定义为:
B o u t k i = { C o n v r ( F i ) , k = 1 C o n v r ( F i ⨁ B o u t k − 1 ) , k = 2 , 3 , 4 Bout_k^i=\begin{cases} Conv_r(F_i),k=1 \\ Conv_r(F_i\bigoplus Bout_{k-1}),k=2,3,4 \end{cases} Boutki={Convr(Fi),k=1Convr(FiBoutk1),k=2,3,4
R M F E i = C o n v ( F i ) ⨁ C o n v ( C a t k = 1 4 ( B o u t k i ) ) RMFE_i=Conv(F_i)\bigoplus Conv(Cat^4_{k=1}(Bout^i_k)) RMFEi=Conv(Fi)Conv(Catk=14(Boutki))

3.3 Separated Attention

引入Separated Attention,其中包含MS-CAM

细节
该模块中包含两个流。第一个流,擦除伪装对象的内部细节以聚焦背景;第二个流,恢复伪装对象中的内部信息以聚焦前景。通过背景与前景信息的协同作用,突出其分界线,即伪装对象的边界。
i i i层的前景注意力图是第 i + 1 i+1 i+1层粗略图 C i + 1 C_{i+1} Ci+1上采样的结果,记为 W f a i = σ ( C i + 1 ) W_{fai}=\sigma(C_{i+1}) Wfai=σ(Ci+1),其中 σ \sigma σ s i g m o i d sigmoid sigmoid函数。
i i i层的背景注意力图是 1 1 1减去前景注意力图,记为 W b a i = 1 − σ ( C i + 1 ) W_{bai}=1-\sigma(C_{i+1}) Wbai=1σ(Ci+1)
注意,在元素乘法前,将所有注意力图的通道扩张为 64 64 64,其公式定义为:
B a i = O u t i = C o n v s ( R M F E i ⨂ e x p a n d ( W b a i ) ) Ba_i=Out_i=Conv_s(RMFE_i\bigotimes expand(W_{bai})) Bai=Outi=Convs(RMFEiexpand(Wbai))
F a i = C o n v s ( R M F E i ⨂ e x p a n d ( W f a i ) ) Fa_i=Conv_s(RMFE_i\bigotimes expand(W_{fai})) Fai=Convs(RMFEiexpand(Wfai))
其中, C o n v s Conv_s Convs 1 × 1 1\times 1 1×1的卷积, O u t i Out_i Outi是第 i i i层的粗略输出图 C i C_i Ci,由Ground Truth监督。
为挖掘每个流对SEA的贡献,采用多尺度通道注意力模块MS-CAM,一个双分支块来获得全局和局部尺度的特征映射的权重,其权重矩阵 W W W记为 W ( X ) = G ( σ ( G ( X ) ) ) + G ( σ ( L ( X ) ) ) W(X)=G(\sigma(G(X)))+G(\sigma(L(X))) W(X)=G(σ(G(X)))+G(σ(L(X))) G ( X ) G(X) G(X)采用全局平均池化层挖掘全局信息, L ( X ) L(X) L(X)采用逐点卷积挖掘局部信息。
采用 B a i Ba_i Bai F a i Fa_i Fai作为MS-CAM的输入。在每个注意力模块之后,增加一个边界引导模块BG,增强模型对边界的理解能力,突出边界。此处忽略BG模块的实现方式,SEA模块的公式定义为:
S E A F i = B G i ( W ( B a i + F a i ) ⨂ B a i , B m a p ) SEAF_i=BG_i(W(Ba_i+Fa_i)\bigotimes Ba_i,Bmap) SEAFi=BGi(W(Bai+Fai)Bai,Bmap)
S E A B i = B G i ( 1 − W ( B a i + F a i ) ⨂ f a i , B m a p ) SEAB_i=BG_i(1-W(Ba_i+Fa_i)\bigotimes fa_i,Bmap) SEABi=BGi(1W(Bai+Fai)fai,Bmap)
S E A i = S E A F i ⨁ S E A B i , i = 2 , 3 , 4 SEA_i=SEAF_i\bigoplus SEAB_i,i=2,3,4 SEAi=SEAFiSEABi,i=2,3,4
其中, S E A F i SEAF_i SEAFi S E A B i SEAB_i SEABi前景流和背景流的输出结果。

3.4 Boundary Guider

前提:预测对象的边界是复杂的,造成这种情况的主要原因有两个:其一是边界周围的像素分布异常,其二是SOD是高分辨率任务,需要像素级分类。因为使用很多卷积层和池化层提取特征,所以需要很多上采样和插值操作恢复分辨率,这在一定程度上造成空间信息的丢失。此问题在COD中更加明显,因为伪装对象被隐藏合并在背景中,使得边界更加模糊。
提出:尝试将边界信息整合到特征空间中,以增强模型对边界的敏感性

边界检测网络将来自骨干网络的的四层特征连接起来,并利用卷积得到由Ground Truth边界图监督的边界图。
边缘预测图 B M BM BMSEA模块生成的特征图 A S M ASM ASM一同传递给条件批归一化模块BG。在一般的批归一化中,仿射参数 γ \gamma γ β \beta β在没有先验知识的情况下无法学习到足够的信息,为处理这个问题,采用边界图学习这些仿射参数。作者将边界预测作为条件,该模块将空间信息嵌入到特征映射中,使得原始特征映射能够更好地学习到边界特征,其公式定义为:
B G M i = C B ( A S M i ) ⨂ γ ( B M ) ⨁ β ( B M ) BGM_i=CB(ASM_i)\bigotimes \gamma (BM) \bigoplus \beta(BM) BGMi=CB(ASMi)γ(BM)β(BM)
其中, C B CB CB 3 × 3 3\times 3 3×3的卷积和批处理归一化。

3.5 Loss Function

二值交叉熵被广泛应用于SODCOD任务中,但二值交叉熵有明显的缺点,即当前景像素的数量远远少于背景像素的数量时模型会严重偏向背景,导致性能不佳。为解决此缺点,本文为每个像素分配一个权重因子,记为 ω = σ ∣ P n − G n ∣ \omega=\sigma|P_n-G_n| ω=σPnGn。带权重的二值交叉熵BCE定义为:
L W b c e = − ∑ n = 1 N ω [ G n l n ( P n ) − ( 1 − G n ) l n ( 1 − P n ) ] \mathcal{L}_{W_{bce}}=-\sum_{n=1}^N \omega[G_nln(P_n)-(1-G_n)ln(1-P_n)] LWbce=n=1Nω[Gnln(Pn)(1Gn)ln(1Pn)]
其中, P n P_n Pn G n G_n Gn是预测图和Ground Truth的像素值。
除此之外,作者还使用IOU损失,综合损失公式定义为:
L t = L W b c e + L I O U \mathcal{L}_t=\mathcal{L}_{W_{bce}}+\mathcal{L}_{IOU} Lt=LWbce+LIOU
模型包含9个监督输出,包括4张粗略图 ( C 1 , C 2 , C 3 , C 4 ) (C_1,C_2,C_3,C_4) C1,C2,C3,C4、4张精修图 ( R 1 , R 2 , R 3 , R 4 ) (R_1,R_2,R_3,R_4) R1,R2,R3,R4和1张边界图 B B B。最终损失函数表示为:
L = ∑ i = 1 4 [ L t ( C i , G ) + L t ( R i , G ) ] + L b c e ( B , B G ) \mathcal{L}=\sum_{i=1}^4[\mathcal{L}_t(C_i,G)+\mathcal{L}_t(R_i,G)]+\mathcal{L}_{bce}(B,BG) L=i=14[Lt(Ci,G)+Lt(Ri,G)]+Lbce(B,BG)
其中, B G BG BG是边界Ground Truth标签。

这篇关于I Can Find You! Boundary-Guided Separated Attention Network for Camouflaged Object Detection的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/425319

相关文章

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D

什么是 Flash Attention

Flash Attention 是 由 Tri Dao 和 Dan Fu 等人在2022年的论文 FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness 中 提出的, 论文可以从 https://arxiv.org/abs/2205.14135 页面下载,点击 View PDF 就可以下载。 下面我

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

时间序列|change point detection

change point detection 被称为变点检测,其基本定义是在一个序列或过程中,当某个统计特性(分布类型、分布参数)在某时间点受系统性因素而非偶然因素影响发生变化,我们就称该时间点为变点。变点识别即利用统计量或统计方法或机器学习方法将该变点位置估计出来。 Change Point Detection的类型 online 指连续观察某一随机过程,监测到变点时停止检验,不运用到

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

MongoDB学习—(6)MongoDB的find查询比较符

首先,先通过以下函数向BookList集合中插入10000条数据 function insertN(obj,n){var i=0;while(i<n){obj.insert({id:i,name:"bookNumber"+i,publishTime:i+2000})i++;}}var BookList=db.getCollection("BookList")调用函数,这样,BookList

深度学习--对抗生成网络(GAN, Generative Adversarial Network)

对抗生成网络(GAN, Generative Adversarial Network)是一种深度学习模型,由Ian Goodfellow等人在2014年提出。GAN主要用于生成数据,通过两个神经网络相互对抗,来生成以假乱真的新数据。以下是对GAN的详细阐述,包括其概念、作用、核心要点、实现过程、代码实现和适用场景。 1. 概念 GAN由两个神经网络组成:生成器(Generator)和判别器(D

error while loading shared libraries: libnuma.so.1: cannot open shared object file:

腾讯云CentOS,安装Mysql时: 1.yum remove libnuma.so.1 2.yum install numactl.x86_64

【NodeJS】Error: Cannot find module 'ms'

转载自:http://blog.csdn.net/echo_ae/article/details/75097004 问题: Error: Cannot find module 'ms'at Function.Module._resolveFilename (module.js:469:15)at Function.Module._load (module.js:417:25)at Module

leetCode#448. Find All Numbers Disappeared in an Array

Description Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this