[论文阅读笔记31] Object-Centric Multiple Object Tracking (ICCV2023)

news2024/11/23 19:58:49

最近Object centric learning比较火, 其借助了心理学的概念, 旨在将注意力集中在图像或视频中的独立对象(objects)上,而不是整个图像。这个方法与传统的基于像素或区域的方法有所不同,它试图通过识别和分离图像中的各个对象来进行学习和理解。

这个任务和跟踪有着异曲同工之处,跟踪也是需要在时序中定位感兴趣的目标。那么object centric learning能否用于无监督的MOT呢?在应用的过程中,会不会有什么问题呢?这就是这篇文章的主要内容。

论文:论文

代码:代码


0. 摘要

无监督的object-centric learning(OCL)可以将场景划分为多个object,而无需进行先验的定位(例如pretrain的detector)。这正好可以解决MOT标注信息繁多、困难的问题。然而,直接应用OCL的效果不好,主要有两个原因:

  1. 空间上,OCL没有正确认识整个物体的语义信息,导致物体往往被划分成了很多parts
  2. 时间上,OCL也无法准确地维护帧间连续性

所以,为了解决以上这两个问题,本文提出了以下的改进措施:

  1. 对于物体碎片化的问题,提出了一个index merge module,将OCL模块输出的slots中同属于一个object的几个碎片结合,变成准确的detection outputs。
  2. 对于时序连续性的问题,搞了一个memory module存储完整的object信息,来应对遮挡。
  3. 此外,还提出了一个EM算法指导的优化loss,从而实现完全的自监督。

上面讲的问题如Fig. 1中所示:
在这里插入图片描述

1. Related Work

我们先直接看Related Work。

1.1 无监督的OCL

与传统的网络学习整个图像的特征不同,OCL旨在从场景中直接学习目标的特征,换句话说,就是直接将输入的视觉信号(例如图像等)与object直接“绑定”在一起,这样比较符合人类的认知习惯。自然,无监督的OCL就是用无监督的方式来完成这一过程。

这样说有点抽象。我们以nips2020的文章Object-Centric Learning with Slot Attention为例。

插曲:Object-Centric Learning with Slot Attention

我们先来看DETR:DETR首先通过CNN backbone提取图像特征,然后将特征打成patch输入Transformer Encoder,随后在Decoder一端,我们输入可能代表目标的query,并与Encoder的输出作Cross attention,最后对每个query进行FFN,得到回归的边界框和类别等等。其实这就有一点object centric的意思在了,我们用一个预先的query来代表目标。

在这里插入图片描述

而Slot Attention,实际上发挥的作用和Decoder类似,就正如文章中所说: an architectural component that interfaces with perceptual representations such as the output of a convolutional neural network.

什么是Slot? 原文中说a set of task-dependent abstract representations which we call slots.,实际上就像一个未知的object的先验,和query类似。

Slot Attention的说明如下:

在这里插入图片描述
为什么要沿着slot维做softmax? softmax会将每个元素视为logits然后求概率,实际上可以让slots产生竞争(compete) 表达同一个input的part。

我有一个困惑,如果真的要达到竞争的效果,为什么只在1维上用softmax约束?应该让理想的attention matrix是分配矩阵的感觉才对,类似于:
[ 0 , 1 , 0 ] [ 0 , 0 , 1 ] [0, 1, 0] \\ [0, 0, 1] [0,1,0][0,0,1]
然后我在网上看到了一个网友的困惑,是否证明其实这种处理方式有可能直接让模型摆烂,输出同样的weight?
在这里插入图片描述

这个Slot Attention就是一个接口(interface),作者将其嵌入到Encoder-Decoder结构做了两个任务:1. 无监督的物体发现;2. 有监督的集合预测问题,如下图所示:

在这里插入图片描述
我们先只说object discovery任务。对于Encoder,采用位置编码增强的CNN backbone,并使用slot attention获得slot的embedding。对于Decoder,首先将每个slot广播成2D的,也通过位置编码增强。对于每个2D的slot,用CNN解码成 H × W × [ R G B + α ] H \times W \times [RGB + \alpha] H×W×[RGB+α]的张量,其中 α \alpha α表示这一块的mask,然后将若干个slot叠加,最理想的情况就是恢复出原图像的样子。

插曲结束

因此,我们初步对什么是OCL有了一个例子上的概念。回归到这篇MOT的文章上来,其实这篇文章想借助OCL对于object discovery的用处,对于摘要里提出的两个问题,通过object merge处理碎片,以及memory module进行时序信息传输,来改善其在MOT上的性能。

1.2 自监督MOT

为了减少手工标记注释,最近的一些方法利用自监督信号从广泛可用的未标记视频中学习关联。例如,CRW和JSTG通过应用cycle-consistent loss来学习视频对应关系。在没有微调的情况下,这些模型可以通过从第一帧传播注释来跟踪。

这篇工作还是类似于传统的TBD,也就是假定有一个好的detector了。

1.3 Memory Models

Memory的策略在动作识别等领域已经有了很广泛的应用了。在MOT中,也有一些工作,例如MeMOTR、MeMOT等等。但是,这些无一例外都是有监督的,仍然面临着ID标注昂贵的问题。

2. Method

整个模型由三部分组成,一个是类似于detector作用的Object-centric Grouping,其输入图像,输出对应的slots,这里作者直接采用了前面咱们介绍的Object-Centric Learning with Slot Attention,并且权重是frozen的,没有参与训练。

比较关键的点是Memory Module和Index Merge,前者用来传播帧间信息应对遮挡,后者用来将碎片化的slots对应成一个object。

2.1 Memory Module

对于 M M M个目标(轨迹), 存储时间长度为 T T T, 特征维度为 d d d, Memory buffer的维度是 M ∈ M × T × d \mathcal{M}\in M \times T\times d MM×T×d.

Memory rollout. 这个Buffer采用FIFO的策略, 在每一帧更新时, 预测当前的状态. rollout过程将多视图目标表示集成在一起, 并在遮挡场景中处理部分-整体匹配. (存疑.)

M ~ t = R o l l o u t ( M < t ) \tilde{\mathcal{M}}_t = Rollout(\mathcal{M}_{<t}) M~t=Rollout(M<t)

技术上, 作者用自回归模型GPT2-mini实现从历史状态到当前的预测.

2.2 Index merge module

2.2.1 slot to memory

多个slots往往是同一个物体的多个碎片, 无法直接和memory buffer中的object一一对应起来. 为了解决这个问题, 我们需要预测出到底哪些slots是属于同一个物体的.

假设slots有 N N N个. 本质上, 要解决这个问题, 就是要计算一个 I ∈ N × M \mathcal{I} \in N \times M IN×M的映射. 作者直接让多头注意力的注意力分数矩阵充当了 I \mathcal{I} I的角色.

具体来说, 我们以slots为query, 以更新的 M ~ t \tilde{\mathcal{M}}_t M~t为key和value, 取多头注意力的注意力分数:

I t = MHA ⁡ ( k , v = M ~ t , q = S t ) . a t t n w e i g h t \mathcal{I}_t=\operatorname{MHA}\left(k, v=\tilde{\mathcal{M}}_t, q=\mathcal{S}_t\right).attn weight It=MHA(k,v=M~t,q=St).attnweight

2.2.2 memory to slot

我们的目标是通过聚合属于同一个物体的slots来确保其表达buffer中的物体,同时处理哪些重复和表示parts的slots. 因此, 又用一个多头注意力模块, 以上面得到的 I t \mathcal{I}_t It为mask, 从而从buffer中聚合信息.

m t = MHA ⁡ ( k , v = S t , q = M ~ t , a t t n m a s k = I t ) m_t=\operatorname{MHA}\left(k, v=\mathcal{S}_t, q=\tilde{\mathcal{M}}_t\right., attnmask \left.=\mathcal{I}_t\right) mt=MHA(k,v=St,q=M~t,attnmask=It)

实际上slot to memory和memory to slot就是把一次注意力计算分成了两步.
首先, 索引步, 计算哪些slot对应哪些buffer, 得到一个权重矩阵
之后, 聚合步, 为了用这个权重聚合特征, 作为一个强约束(attention weight) 来防止不正确的slot被聚合成一个. 作者举了一个例子: 例如,如果有三个slot,其中两个与一个buffer匹配,注意力权重可以是 [0.8, 0.2, 0],表明第3个slot不属于这个buffer。

上面的流程如下图所示:

在这里插入图片描述

2.3 训练

训练的关键在于我们如何无监督地计算assignment损失.

我们有三种选择来计算分配成本:

  1. 在解码的掩码上使用二进制交叉熵损失来提高对象属性(如形状)的一致性
  2. 对对象重建(像素重建乘以对象掩模)使用逐像素平方的重建损失来学习颜色信息;有点像Object-Centric Learning with Slot Attention
  3. 使用与2)相同的损耗,但直接应用于特征空间。

L assign  ( S t i , M t j ) = λ 1 B C E Loss ⁡ ( Dec ⁡ ( S t i ) , Dec ⁡ ( M t j ) ) + λ 2 ∥ Dec ⁡ ( S t i ) − Dec ⁡ ( M t j ) ∥ 2 + λ 3 ∥ S t i − M t j ∥ 2 \begin{aligned} & \mathcal{L}_{\text {assign }}\left(\mathcal{S}_t^i, \mathcal{M}_t^j\right)=\lambda_1 B C E \operatorname{Loss}\left(\operatorname{Dec}\left(\mathcal{S}_t^i\right), \operatorname{Dec}\left(\mathcal{M}_t^j\right)\right) \\ & +\lambda_2\left\|\operatorname{Dec}\left(\mathcal{S}_t^i\right)-\operatorname{Dec}\left(\mathcal{M}_t^j\right)\right\|^2+\lambda_3\left\|\mathcal{S}_t^i-\mathcal{M}_t^j\right\|^2\end{aligned} Lassign (Sti,Mtj)=λ1BCELoss(Dec(Sti),Dec(Mtj))+λ2 Dec(Sti)Dec(Mtj) 2+λ3 StiMtj 2

其中 D e c Dec Dec表示解码器,估计结构和slot attention中的相似。

最终的loss为:

L = ∑ t = 1 T ∑ i = 1 N ∑ j = 1 M I t [ i , j ] L assign  ( S t i , M t j ) \mathcal{L}=\sum_{t=1}^T \sum_{i=1}^N \sum_{j=1}^M \mathcal{I}_t[i, j] \mathcal{L}_{\text {assign }}\left(\mathcal{S}_t^i, \mathcal{M}_t^j\right) L=t=1Ti=1Nj=1MIt[i,j]Lassign (Sti,Mtj)

整个模型的流程如下图所示:

在这里插入图片描述

3. 实验

作者只用了比较少的标签,在CATER和fishbowl数据集上达到了比较好的效果

在这里插入图片描述

但是在更通用的数据集,比如KITTI,效果就一般了:

在这里插入图片描述
作者认为是分辨率下采样过大的原因。

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

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

相关文章

推出一系列GaN功率放大器: QPA2211、QPA2211D、QPA2212、QPA2212D、QPA2212T,支持卫星通信和5G基础设施。

推出用于支持支持卫星通信和5G基础设施的GaN功率放大器&#xff1a; QPA2211 QPA2211D QPA2212 QPA2212D QPA2212T QPA2211 10W GaN功率放大器是一款Ka波段功率放大器&#xff0c;采用0.15m碳化硅基氮化镓工艺 (QGaN15) 制造而成。该放大器的工作频率范围为27.5GHz至31GHz&…

Linux_内核缓冲区

目录 1、用户缓冲区概念 2、用户缓冲区刷新策略 3、用户缓冲区的好处 4、内核缓冲区 5、验证内核缓冲区 6、用户缓冲区存放的位置 7、全缓冲 结语 前言&#xff1a; Linux下的内核缓冲区存在于系统中&#xff0c;该缓冲区和用户层面的缓冲区不过同一个概念&#x…

【并发程序设计】总篇集 Linux下 C语言 实现并发程序

11_Concurrent_Programing 文章目录 11_Concurrent_Programing1.进程概念进程内容进程类型进程状态 2.进程常用命令进程信息命令top 命令进程信息表 进程优先级命令nice 命令renice 命令 后台进程命令 3.子进程创建子进程fork 函数 结束进程exit 函数_exit 函数 回收子进程wait…

MySQL性能问题诊断方法和常用工具

作者介绍&#xff1a;老苏&#xff0c;10余年DBA工作运维经验&#xff0c;擅长Oracle、MySQL、PG数据库运维&#xff08;如安装迁移&#xff0c;性能优化、故障应急处理等&#xff09; 公众号&#xff1a;老苏畅谈运维 欢迎关注本人公众号&#xff0c;更多精彩与您分享。MySQL运…

如何监控巨量千川的违规行为

在这个瞬息万变的数字营销时代&#xff0c;每一分数据都蕴含着无限价值&#xff0c;尤其在电商领域&#xff0c;精准洞察与高效决策力已成为致胜关键。然而&#xff0c;面对巨量千川这一电商一体化智能营销平台的广阔天地&#xff0c;如何在海量信息中准确捕捉投放违规信息&…

如何避免vue的url中使用hash符号?

目录 1. 安装 Vue Router 2. 配置 Vue Router 使用 history 模式 3. 更新 main.js 4. 配置服务器以支持 history 模式&#xff08;此处需要仔细测试&#xff09; a. Nginx 配置 b. Apache 配置 5. 部署并测试 总结 在 Vue.js 项目中&#xff0c;避免 URL 中出现 # 符号的…

用 Rust 实现一个替代 WebSocket 的协议

很久之前我就对websocket颇有微词&#xff0c;它的确满足了很多情境下的需求&#xff0c;但是仍然有不少问题。对我来说&#xff0c;最大的一个问题是websocket的数据是明文传输的&#xff0c;这使得websocket的数据很容易遭到劫持和攻击。同时&#xff0c;WebSocket继承自HTTP…

yocto系列讲解[实战篇]94 - 添加libhybris库和测试示例

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 1. 概述2. 添加libhybris的recipe3.libhybris编译4.libhybris测试5.自制Android C++动态库6.自制Android C++动态库编译7.创建testhyb…

spring源码环境的搭建

为什么要编译spring源码 为了高效调试Spring源码、验证个人猜想&#xff0c;并从开发者的视角深化理解&#xff0c;编译自定义的Spring源码版本显得尤为重要。这样可以避免因缺乏预编译版本而带来的不便&#xff0c;并允许直接在源码上进行注释或修改&#xff0c;以记录学习心…

【Java毕业设计】基于JavaWeb的服务出租系统

本科毕业设计论文 题目&#xff1a;房屋交易平台设计与实现 系 别&#xff1a; XX系&#xff08;全称&#xff09; 专 业&#xff1a; 软件工程 班 级&#xff1a; 软件工程15201 学生姓名&#xff1a; 学生学号&#xff1a; 指导教师&#xff1a; 导师1 导师2 文章目录 摘…

基于AT89C52单片机的超声波测距设计—数码管显示

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/89456475?spm=1001.2014.3001.5503 C 源码+仿真图+毕业设计+实物制作步骤+10 在这里插入图片描述 题 目: 基于52的超声波测距汽车防撞系统 学生姓名 [姓名] 学 号 [学号…

毕业季带给我的五个启示

每到毕业季&#xff0c;校园里总是充满了复杂的情绪。有人欢笑&#xff0c;有人落泪。同样的四年大学生活&#xff0c;为何结局如此不同&#xff1f;本文将从多个角度探讨如何实现综合改变&#xff0c;解释在交友、机会和心态上的关键因素&#xff0c;揭示“慢就是快”的真理。…

工作实践:11种API性能优化方法

一、索引优化 接口性能优化时&#xff0c;大家第一个想到的通常是&#xff1a;优化索引。 确实&#xff0c;优化索引的成本是最小的。 你可以通过查看线上日志或监控报告&#xff0c;发现某个接口使用的某条SQL语句耗时较长。 此时&#xff0c;你可能会有以下疑问&#xff…

别再滥用std::async了,strace命令暴露了一个乱开线程问题

用strace查看进程的系统调用后&#xff0c;发现一个std::async滥用问题 问题现象 进程的系统调用clone次数持续增加 使用工具strace发现进程clone系统调用过多且一直在增加 strace -c -p PID问题分析 clone在做什么&#xff1a;创建进程&#xff08;线程&#xff09; 查看…

Redis入门篇

目录 传送门一、前言二、NoSQL1、ont only sql&#xff0c;特点&#xff1a;2、NoSQL的四大分类&#xff1a; 三、Redis概念四、五大数据类型: 传送门 SpringMVC的源码解析&#xff08;精品&#xff09; Spring6的源码解析&#xff08;精品&#xff09; SpringBoot3框架&#…

大数据学习-环境准备

VMware 部分 网络设置 下载好 CentOS 7 的镜像文件 修改 VMware 的网络 把子网 ip 修改为 192.168.88.0&#xff0c;然后点击 NAT 设置&#xff0c;修改网关 IP 为 192.168.88.2 之后就确定即可 虚拟机安装 选择镜像文件&#xff0c;使用 VMware 的典型安装方法即可&#…

Prompt 提示词工程:翻译提示

近期在对计算机学习时&#xff0c;许多内容需要看原始的英文论文&#xff0c;对于我这种学渣来说特别不友好&#xff0c;&#x1f937;&#x1f3fb;‍♀️无奈只能一边看翻译&#xff0c;一边学习。 之前有搜到过专门的翻译工具&#xff0c;无奈都是按照字数算费用的&#xf…

【Java毕业设计】基于JavaWeb的礼服租赁系统

文章目录 摘 要Abstract目录1 绪论1.1 课题背景和意义1.2 国内外研究现状1.2.1 国外研究现状 1.3 课题主要内容 2 开发相关技术介绍2.1 Spring Boot框架2.2 Vue框架2.3 MySQL数据库2.4 Redis数据库 3 系统分析3.1 需求分析3.1.1 用户需求分析3.1.2 功能需求分析 3.2 可行性分析…

「动态规划」如何求子数组中等差数列的个数?

413. 等差数列划分https://leetcode.cn/problems/arithmetic-slices/description/ 如果一个数列至少有三个元素&#xff0c;并且任意两个相邻元素之差相同&#xff0c;则称该数列为等差数列。例如&#xff0c;[1,3,5,7,9]、[7,7,7,7]和[3,-1,-5,-9]都是等差数列。给你一个整数…

c++中从父类继承的属性在子类内存中如何显示?

目录 一、继承概念 二、示例 三、结论 一、继承概念 在C中&#xff0c;继承是面向对象编程的一个重要特性&#xff0c;它允许一个类&#xff08;称为派生类或子类&#xff09;继承另一个类&#xff08;称为基类或父类&#xff09;的成员&#xff08;包括数据成员和成员函数…