使用目标之间的先验关系提升目标检测器性能

今天跟大家分享阿姆斯特丹大学等提出的用于提升目标检测和实例分割性能的新方法RP-FEM,该方法将目标之间位置的先验关系融入到feature中。

  • 论文标题:Relational Prior Knowledge Graphs for Detection and Instance Segmentation
  • 机构:阿姆斯特丹大学、TomTom
  • 论文地址:https://arxiv.org/pdf/2310.07573.pdf
  • 开源代码(即将开源):https://github.com/ozzyou/RP-FEM
  • 关键词:目标检测、实例分割

1.动机

在认知心理学中,人类通过理解物体之间的关系来感知世界。通过认识物体之间的关联,建立对环境的心理表征,对可能的行为进行推断,实现对这些行为结果的预测。从简单的日常活动(如过马路)到更复杂的任务(如理解自然语言、计划和决策)。

同样,在计算机视觉领域,物体之间的关系已经成为一个重要的研究方向。利用对象间的关系,计算机视觉系统可以增强图像中目标检测和分割的能力,推理它们之间的关系,构建更复杂的应用程序实现对视觉信息的深入理解。

作者提出通过建模目标之间的关系增强目标检测性能。作者引入了一个基于关系先验的特征增强模型(Relational Prior-based Feature Enhancement Model,简称RP-FEM),使用了多头注意机制来选择相关的先验,使用graph transformer model对其进行聚合。图像被表示为场景图(scene graph),使用图节点表示proposal的特征,目标关系的先验知识构成图的边。使用RPKG(Relational Prior Knowledge Graph)描述目标之间的关系,RPKG可从场景图数据集Visual Genome中获取。

将RP-FEM应用于目标检测中,可以从目标关系的角度滤除不合理的目标检测框,还能减少小目标的重复检测框。

2.方法

总体结构如下:

Relation Head通过关注场景图中的相邻节点(表示proposal)和RPKG(表示类嵌入)的相邻节点,用关系先验知识更新场景图中的每条边。原始proposal特征和预测的边输入 Graph Transformer,得到更新的场景图,从更新后的场景图中预测box和mask。

2.1 Relational Prior Knowledge Graph(RPKG)

作者利用Visual Genome数据集构造了3个不同的Relational Prior Knowledge Graph(RPKG)。将训练好的Faster R-CNN模型中倒数第二层的特征(记作 d d d)作为RPKG的节点,使用Visual Genome数据集中的场景图标注统计目标之间的关系,将其作为RPKG的边。作者统计了3种目标之间的关系:

(1)共同出现(Co-occurrence):两个类别的目标在整个数据集中一起出现的频率。

(2)相对位置(Relative Orientation):两个类别目标的相对位置,比如A在B的中间、上侧、下侧、左侧、右侧。可以存在多个选项同时出现,比如A在B的左侧和上侧。

(3)相对距离(Relative Distance):图片中同时出现的两个目标之间的平均距离和平均标准差。

综上可构造RPKG,记作 R = ⟨ D , K ⟩ \mathbf{R}=\langle\mathbf{D}, \mathbf{K}\rangle R=D,K,其中 K ∈ R C × C × R \mathbf{K} \in \mathbb{R}^{C \times C \times R} KRC×C×R R R R的值取决于构造RPKG时要使用的关系。

当Visual Genome数据集中的类别与COCO数据集类别名字不一致时,需要手动构造两个数据集中类别名的映射关系。

2.2 使用RPKG增强特征

利用RPKG中的先验知识增强特征,基于潜在目标的特征,从 R \mathbf{R} R中检索目标的关联信息,使得关联信息在proposal特征空间中表达。

首先构造场景图 S = ⟨ P , E ⟩ \mathbf{S}=\langle\mathbf{P}, \mathbf{E}\rangle S=P,E,使用proposal特征表示节点,即 { p i , … , p N } = P ∈ R N × F p \left\{p_i, \ldots, p_{\mathcal{N}}\right\}=\mathbf{P} \in \mathbb{R}^{\mathcal{N} \times \mathcal{F}_{\mathrm{p}}} {pi,,pN}=PRN×Fp,图的边表示为 { e i i , e i j , … , e N N } = E ∈ R N × N × F e \left\{e_{i i}, e_{i j}, \ldots, e_{\mathcal{N N}}\right\}=\mathbf{E} \in \mathbb{R}^{\mathcal{N} \times \mathcal{N} \times \mathcal{F}_{\mathrm{e}}} {eii,eij,,eNN}=ERN×N×Fe

然后使用 P \mathbf{P} P R \mathbf{R} R的值计算 E \mathbf{E} E,即计算 S \mathbf{S} S中节点特征对和 R \mathbf{R} R中节点特征对的相似度。根据两个相邻节点之间的相似度进行加权,对 R \mathbf{R} R中的边值进行聚合。使用 S \mathbf{S} S中的每对儿节点 [ p i , p j ] ∈ P \left[p_i, p_j\right] \in \mathbf{P} [pi,pj]P作为query, R \mathbf{R} R中所有的节点 [ d u , d v ] ∈ D \left[d_u, d_v\right] \in \mathbf{D} [du,dv]D作为key,计算注意力系数 α ( i j ) , ( u v ) \alpha_{(i j),(u v)} α(ij),(uv)。对节点邻域的特征进行堆叠,利用共享权重矩阵进行线性变换,分别为 S \mathbf{S} S R \mathbf{R} R构造局部潜在邻域表示 p ^ i j ∈ R F p + F p \hat{p}_{i j} \in \mathbb{R}^{\mathcal{F}_{\mathrm{p}}+\mathcal{F}_{\mathrm{p}}} p^ijRFp+Fp d ^ u v ∈ R F r + F r \hat{d}_{u v} \in \mathbb{R}^{\mathcal{F}_{\mathrm{r}}+\mathcal{F}_{\mathrm{r}}} d^uvRFr+Fr。为计算 S \mathbf{S} S中的边 E \mathbf{E} E,对 R \mathbf{R} R中经过线性变换的边(作为value)乘以相应的注意权值。公式表示如下:

α ( i j ) , ( u v ) = exp ⁡ ( att ⁡ ( W q [ p i , p j ] , W k [ d u , d v ] ) ) ∑ u = 0 C ∑ v = 0 C exp ⁡ ( att ⁡ ( W q [ p i , p j ] , W k [ d u , d v ] ) ) \alpha_{(i j),(u v)}=\frac{\exp \left(\operatorname{att}\left(\mathbf{W}_q\left[p_i, p_j\right], \mathbf{W}_k\left[d_u, d_v\right]\right)\right)}{\sum_{u=0}^C \sum_{v=0}^C \exp \left(\operatorname{att}\left(\mathbf{W}_q\left[p_i, p_j\right], \mathbf{W}_k\left[d_u, d_v\right]\right)\right)} α(ij),(uv)=u=0Cv=0Cexp(att(Wq[pi,pj],Wk[du,dv]))exp(att(Wq[pi,pj],Wk[du,dv]))

= exp ⁡ ( att ⁡ ( p ^ i j , d ^ u v ) ) ∑ u = 0 C ∑ v = 0 C exp ⁡ ( att ⁡ ( p ^ i j , d ^ u v ) ) =\frac{\exp \left(\operatorname{att}\left(\hat{p}_{i j}, \hat{d}_{u v}\right)\right)}{\sum_{u=0}^C \sum_{v=0}^C \exp \left(\operatorname{att}\left(\hat{p}_{i j}, \hat{d}_{u v}\right)\right)} =u=0Cv=0Cexp(att(p^ij,d^uv))exp(att(p^ij,d^uv))

e ( i j ) , ( k l ) = α ( i j ) , ( k l ) ) W v R k l \left.e_{(i j),(k l)}=\alpha_{(i j),(k l)}\right) \mathbf{W}_v \mathbf{R}_{k l} e(ij),(kl)=α(ij),(kl))WvRkl

E i j = W E ∑ k = 0 C ∑ l = 0 C e ( i j ) , ( k l ) \mathbf{E}_{i j}=\mathbf{W}_{\mathrm{E}} \sum_{k=0}^C \sum_{l=0}^C e_{(i j),(k l)} Eij=WEk=0Cl=0Ce(ij),(kl)

上式中 W q \mathbf{W}_q Wq W k \mathbf{W}_k Wk W v \mathbf{W}_v Wv W E \mathbf{W}_{\mathbf{E}} WE为计算query、key、value和边的值时用到的的权重。矩阵 E \mathbf{E} E根据先验知识图中出现的目标组合关系的先验知识来权衡proposal目标对场景图中其他目标的重要性。

2.3 上下文更新

在得到了场景图 S \mathbf{S} S的边 E \mathbf{E} E的值以后,作者使用multi-layered Graph Transformer实现上下文更新操作。上下文更新确保 S \mathbf{S} S中的节点特征在图中聚合,为每个节点提供更多关于整个场景的上下文以及与上下文中其他节点之间基于先验知识的关系。

在此过程中,每个节点通过消息 m m m获得其相邻节点的信息,并通过边矩阵 E \mathbf{E} E进行加权,得到上下文感知的节点 { z i , … , z N } = Z ∈ R N × F z \left\{\mathbf{z}_i, \ldots, \mathbf{z}_{\mathcal{N}}\right\}=\mathbf{Z} \in \mathbb{R}^{\mathcal{N} \times \mathcal{F}_{\mathrm{z}}} {zi,,zN}=ZRN×Fz。表示如下:

f i j ( l ) = E ( δ i j ) ) δ i j = { E i j if  l = 0 A i j ( l − 1 ) if  l > 0 \left.\mathbf{f}_{i j}^{(l)}=\mathcal{E}\left(\delta_{i j}\right)\right) \quad \quad \delta_{i j}= \begin{cases}\mathbf{E}_{i j} & \text { if } l=0 \\ \mathbf{A}_{i j}^{(l-1)} & \text { if } l>0\end{cases} fij(l)=E(δij))δij={EijAij(l1) if l=0 if l>0

n i ( l ) = γ i j γ i j = { p i if  l = 0 z i ( l − 1 ) if  l > 0 \mathbf{n}_i^{(l)}=\gamma_{i j} \quad \quad \gamma_{i j}= \begin{cases}p_i & \text { if } l=0 \\ \mathbf{z}_i^{(l-1)} & \text { if } l>0\end{cases} ni(l)=γijγij={pizi(l1) if l=0 if l>0

α i j ( l ) = σ ( LReLU ⁡ ( [ f i j ( l ) ⊕ n i ( l ) ] ) ) \alpha_{i j}^{(l)}=\sigma\left(\operatorname{LReLU}\left(\left[\mathbf{f}_{i j}^{(l)} \oplus \mathbf{n}_i^{(l)}\right]\right)\right) αij(l)=σ(LReLU([fij(l)ni(l)]))

m i ( l ) = ∑ j ∈ I α i j ( l ) f i j ( l ) \mathbf{m}_i^{(l)}=\sum_{j \in \mathcal{I}} \alpha_{i j}^{(l)} \mathbf{f}_{i j}^{(l)} mi(l)=jIαij(l)fij(l)

z ^ i ( l ) = L N ( n i ( l ) + m i ( l ) , head  + m i ( l ) , tail  ) \hat{\mathbf{z}}_i^{(l)}=\mathbf{L N}\left(\mathbf{n}_i^{(l)}+\mathbf{m}_i^{(l), \text { head }}+\mathbf{m}_i^{(l), \text { tail }}\right) z^i(l)=LN(ni(l)+mi(l), head +mi(l), tail )

z i ( l ) = L N ( z ^ i ( l ) + f ( z ^ i ( l ) ) ) \mathbf{z}_i^{(l)}=\mathbf{L} \mathbf{N}\left(\hat{\mathbf{z}}_i^{(l)}+f\left(\hat{\mathbf{z}}_i^{(l)}\right)\right) zi(l)=LN(z^i(l)+f(z^i(l)))

上式中 F z \mathcal{F}_{\mathrm{z}} Fz表示输出特征的维度, l l l表示第 l l l个Graph Transformer层, E \mathcal{E} E为应用于边特征的transformer function, σ ( ⋅ ) \sigma(\cdot) σ()表示softmax函数,LReLU表示Leaky ReLU激活函数, ⊕ \oplus 表示concat操作,LN表示LayerNorm, f ( ⋅ ) f(\cdot) f()表示2个包含Leaky ReLU的线性层。

第一个Graph Transformer使用了原始的边矩阵 E \mathbf{E} E,在后面的层中边矩阵会更新为 A \mathbf{A} A:

h i ( l ) , head  = H ( n i ( l ) ) h i ( l ) , tail  = T ( n i ( l ) ) \mathbf{h}_i^{(l), \text { head }}=\mathcal{H}\left(\mathbf{n}_i^{(l)}\right) \quad \mathbf{h}_i^{(l), \text { tail }}=\mathcal{T}\left(\mathbf{n}_i^{(l)}\right) hi(l), head =H(ni(l))hi(l), tail =T(ni(l))

α i ( l ) , head  = LReLU ⁡ ( A ( [ δ i head  ⊕ h i ( l ) , head  ] ) ) α i ( l ) , tail  = LReLU ⁡ ( A ( [ δ i tail  ⊕ h i ( l ) , tail  ] ) ) \begin{aligned} \alpha_i^{(l), \text { head }} & =\operatorname{LReLU}\left(\mathcal{A}\left(\left[\delta_i^{\text {head }} \oplus \mathbf{h}_i^{(l), \text { head }}\right]\right)\right) \\ \alpha_i^{(l), \text { tail }} & =\operatorname{LReLU}\left(\mathcal{A}\left(\left[\delta_i^{\text {tail }} \oplus \mathbf{h}_i^{(l), \text { tail }}\right]\right)\right) \end{aligned} αi(l), head αi(l), tail =LReLU(A([δihead hi(l), head ]))=LReLU(A([δitail hi(l), tail ]))

δ i = { E i if  l = 0 A i ( l − 1 ) if  l > 0 \quad \delta_i= \begin{cases}\mathbf{E}_i & \text { if } l=0 \\ \mathbf{A}_i^{(l-1)} & \text { if } l>0\end{cases} δi={EiAi(l1) if l=0 if l>0

α i ( l ) , head+tail  = σ ( [ α i ( l ) , head  ⊕ α i ( l ) , tail  ] ) \alpha_i^{(l), \text { head+tail }}=\sigma\left(\left[\alpha_i^{(l), \text { head }} \oplus \alpha_i^{(l), \text { tail }}\right]\right) αi(l), head+tail =σ([αi(l), head αi(l), tail ])

A i ( l ) = α i ( l ) , head+tail  ⊙ [ h i ( l ) , head  ⊕ h i ( l ) , tail  ] \mathbf{A}_i^{(l)}=\alpha_i^{(l), \text { head+tail }} \odot\left[\mathbf{h}_i^{(l), \text { head }} \oplus \mathbf{h}_i^{(l), \text { tail }}\right] Ai(l)=αi(l), head+tail [hi(l), head hi(l), tail ]

上式中的 H \mathcal{H} H T \mathcal{T} T为分别应用于head indices或tail indices的proposal特征的transformer function, A \mathcal{A} A为应用于concat后的节点和边特征的transformer function, ⊙ \odot 表示元素乘法。

2.4 mask的预测

经过上下文更新的 L L L次迭代后,丢弃边矩阵,将最终第 L L L个节点特征 Z ( L ) \mathbf{Z}^{(L)} Z(L)与原始proposal特征 P b o x P^{box} Pbox进行concat得到用于box预测的输出特征 O b o x O^{box} Obox。用于掩码预测的输出特征 O m a s k O^{mask} Omask通过包含前景目标的proposal特征 P m a s k P^{mask} Pmask Z ( L ) \mathbf{Z}^{(L)} Z(L)进行concat得到的。表示如下:

O b o x = [ P b o x ⊕ Z ] O mask  = [ P B ( O b b ) mask  ⊕ Z ] = [ P f g mask  ⊕ Z ] \begin{aligned} & \mathbf{O}^{b o x}=\left[\mathbf{P}^{b o x} \oplus \mathbf{Z}\right] \\ & \mathbf{O}^{\text {mask }}=\left[\mathbf{P}_{\mathcal{B}\left(\mathbf{O}_{b b}\right)}^{\text {mask }} \oplus \mathbf{Z}\right]=\left[\mathbf{P}_{f g}^{\text {mask }} \oplus \mathbf{Z}\right] \\ & \end{aligned} Obox=[PboxZ]Omask =[PB(Obb)mask Z]=[Pfgmask Z]

通过调整box head和mask head的输入大小,确保Mask R-CNN适应由于连接而导致的形状的增加。由于先验知识图是固定的,所以它没有梯度,因此没有经过训练,只需要单独对图像数据(COCO)进行训练。最终的预测结果由MaskR-CNN的原始损失函数监督,总体损失函数为:

L = L c l s + L box  + L mask  \mathcal{L}=\mathcal{L}_{c l s}+\mathcal{L}_{\text {box }}+\mathcal{L}_{\text {mask }} L=Lcls+Lbox +Lmask 

3.实验

(1)实验设置

(2)实验结果

推荐阅读:

如何优雅地读取网络的中间特征?

港科大提出适用于夜间场景语义分割的无监督域自适应新方法

EViT:借鉴鹰眼视觉结构,南开大学等提出ViT新骨干架构,在多个任务上涨点

HSN:微调预训练ViT用于目标检测和语义分割,华南理工和阿里巴巴联合提出

CV计算机视觉每日开源代码Paper with code速览-2023.10.17

CV计算机视觉每日开源代码Paper with code速览-2023.10.16

CV计算机视觉每日开源代码Paper with code速览-2023.10.13

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

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

相关文章

RabbitMQ 安装和使用Demo

同步是阻塞 MQ:消息队列,基础数据结构中"先进先出"的数据结构。用来解决应用解耦,异步消息,流量消峰等问题。 RabbitMQ、RocketMQ、Kafka RocketMQ 是阿里的 应用层开发使用RabbitMQ 大数据开发Kafka MQ是不是微服务都…

「爱嗨游」发布会剧透|应用出海十大难题,全景方案一次解决

融云“融云出海 & 全球化通信方案发布会”(👈 点击报名)开幕在即,一波宝藏产品、惊喜方案、创意玩法即将喷薄而出。关注【融云全球互联网通信云】了解更多 ❤ Global IM UIKit,社交 全场景解决方案,北极…

oracle 错题汇总

在Oracle数据库中,如果你在GROUP BY子句中指定了列,那么SELECT子句中除了聚合函数外的每个列都必须在GROUP BY子句中列出。 1.查询出每个部门的编号、名称、位置、部门人数、平均工资。 SELECT d.deptno AS "部门编号", d.dname AS &…

Vue3+ElementPlus el-date-picker时间选择器,设置最多选择60天区间内,必须选择大于今天

Vue3ElementPlus el-date-picker时间选择设置&#xff0c; 必须选择大于今天&#xff1b;最多选择60天区间内&#xff1b; 使用disabled-date&#xff1a; 具体实现代码&#xff1a; <el-date-pickerv-model"state.queryParams.dateTime":editable"false&q…

基础课5——语音合成技术

TTS是语音合成技术的简称&#xff0c;也称为文语转换或语音到文本。它是指将文本转换为语音信号&#xff0c;并通过语音合成器生成可听的语音。TTS技术可以用于多种应用&#xff0c;例如智能语音助手、语音邮件、语音新闻、有声读物等。 TTS技术通常包括以下步骤&#xff1a; …

Bootstrap的媒体对象组件(图文展示组件),挺有用的一个组件。

Bootstrap的.media类是用于创建媒体对象的&#xff0c;媒体对象通常用于展示图像&#xff08;图片&#xff09;和文本内容的组合&#xff0c;这种布局在展示新闻文章、博客帖子等方面非常常见。.media类使得创建这样的媒体对象非常简单&#xff0c;通常包含一个图像和相关的文本…

竞赛选题 深度学习YOLO抽烟行为检测 - python opencv

文章目录 1 前言1 课题背景2 实现效果3 Yolov5算法3.1 简介3.2 相关技术 4 数据集处理及实验5 部分核心代码6 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习YOLO抽烟行为检测 该项目较为新颖&#xff0c;适合作为竞赛课…

液压泵马达试验台比例阀控制器

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 液压泵马达试验台主要应用于液压元件性能测试、故障诊断、产品研发等领域。 液压泵马达试验台主要功能包括排量验证试验、容积效率试验、总效率试验、变量特性试验、超载试验、冲击性能试验、启动效率试验…

Flink的算子列表状态的使用

背景 算子的列表状态是平时比较常见的一种状态&#xff0c;本文通过官方的例子来看一下怎么使用算子列表状态 算子列表状态 算子列表状态支持应用的并行度扩缩容&#xff0c;如下所示: 使用方法参见官方示例&#xff0c;我加了几个注解&#xff1a; public class Bufferin…

MySQL的ACID和并发事务带来的问题简单总结

拓跋阿秀 ACID 原子性&#xff1a;一个事务&#xff08;transaction&#xff09;中的所有操作&#xff0c;要么全部完成&#xff0c;要么全部不完成&#xff0c;不会结束在中间某个环节。事务在执行过程中发生错误&#xff0c;会被恢复&#xff08;Rollback&#xff09;到事务…

动手实现H5仿原生app前进后退切换效果

动手实现H5仿原生app前进后退切换效果 前言 最近在优化H5页面&#xff0c;我注意到当开发完成的移动端H5页面嵌入到微信小程序或者原生app中时&#xff0c;当触发页面路由切换会与原生app看上去有点格格不入&#xff0c;因为H5页面<router-view>切换路由时是直接替换了…

【视觉大模型SAM系列】PerSAM:Personalize Segment Anything Model with One Shot

【版权声明】 本文为博主原创文章&#xff0c;未经博主允许严禁转载&#xff0c;我们会定期进行侵权检索。 更多算法总结请关注我的博客&#xff1a;https://blog.csdn.net/suiyingy&#xff0c;或”乐乐感知学堂“公众号。 本文章来自于专栏《大模型》的系列文章&#xff0c;专…