干货!自动驾驶场景下的多目标追踪与实例分割

2023-11-01

点击蓝字

f24daba4eeefe1fa8b6380bba20e6119.jpeg

关注我们

AI TIME欢迎每一位AI爱好者的加入!

e2c5635fbedf6d72ede5c63d5e68fe2f.gif

多目标跟踪和分割 (MOTS) 需要将视频中给定的类别的物体进行检测、分类、跟踪和像素级分割。在其重要的应用场景自动驾驶中,复杂的路况、市区内密集且相似的车辆和行人、以及对低功耗低延时的预测需求又给这一任务带来了新的挑战。

本研究提出了一种简单高效地利用视频时序信息的方法PCAN,通过对目标物体及过去帧的外观特征做高斯混合建模,得到数量较少且低秩的representative mixture prototypes, 实现了对历史信息的压缩。这一操作在降低注意力运算复杂度和内存需求的同时, 也提高了视频物体分割的质量和追踪的稳定性。

本期AI TIME PhD直播间,我们邀请到香港科技大学计算机工程系三年级博士生——柯磊,为我们带来报告分享《自动驾驶场景下的多目标追踪与实例分割》。

b4308d7e431e097404c24de7fb0baf62.jpeg

柯磊:

香港科技大学计算机工程系三年级博士生,导师是Chi-Keung Tang(IEEE Fellow)和Yu-Wing Tai。他目前在苏黎世联邦理工学院计算机视觉实验室(CVL)做访问学者,受Fisher Yu教授和研究员Martin Danelljan的共同指导。他的研究兴趣主要包括视频及图像中的实例分割与目标追踪,希望为机器感知真实世界场景提出更为精确、鲁棒、高效及可泛化的基础算法,并有多篇相关工作以第一作者身份发表于NeurIPS/CVPR/ ICCV/ECCV中。

本文提出了一种在自动驾驶场景下,如何通过高效快速的时序建模从而提升多目标追踪与实例分割性能的方法MOTS——Multiple object tracking and segmentation

多目标跟踪与分割是自动驾驶和视频分析等许多实际应用中的重要问题,该任务需要将给定视频中的所有物体进行检测、分类、跟踪以及像素级别的分割。

在自动驾驶的场景中,复杂的路况、市区内密集且行为相似的行人以及对低功耗、低延迟的预测需求都给这一任务带来了新的挑战。由于引入了大规模数据集BDD100K作为深度学习模型训练和测试的基准,这也给MOTS的研究提供了助力。

11e0a84734443f254e64ba36db49b703.png

MOTS的大多数online方法,主要遵循基于检测的跟踪范式,即Tracking by Detection。这一范式首先在单张图片中检测和分割对象,然后是帧之间的关联尽管这些方法已取得较好的结果,但是在时序建模上仅限于物体的关联阶段,并且还是在相邻两帧之间。

另一方面,时间维度包含着丰富的场景信息,它包含着同一物体在不同时间和角度下的多视图。利用这些多视图,我们可以有效提高物体的分割、定位和对类别的预测质量。

然而,高效的利用历史信息是一个挑战。目前已有的方法都是在视频处理中直接对高分辨率的深度特征图进行操作,长时间序列上密集的注意力操作会产生长度的二次复杂性,进而带来大量的计算负担和内存消耗。同时,也抑制了其实际应用。

ed7e5b899cad16b910ca0b814c8d2e86.png

我们的方法PCAN (Prototypical Cross-Attention Network)首先将历史信息中的高分辨率特征压缩到帧级和实例级的对象,然后通过Prototypical Cross-Attention操提取和利用过去帧中包含的丰富物体appearance、information等。这里是对Prototype的可视化,我们也可以看到不同的Prototype具有不同的focus。

270b80fcb094a5fd7fc25cc03b5f5a9c.png

PCAN使用高斯混合模型来进行无监督的特征训练,并选用1M迭代算法得到的高斯分布的拟合训练中心作为prototypes,其中每一个像素点到prototype中心的距离定义为其L2距离。

这一操作在降低attention复杂度和内存需求的同时,我们发现它有效提高了物体分割的质量和追踪的稳定性。

cc1b505225c14f7fcafde3351a61298f.png

1

Prototypical Cross-Attention Network

PCAN包括帧集Frame-level和实例集Instance-level两个模块。前者着重于重构过去帧的深度特征并与当前帧对齐,而后者聚焦于视频中被追踪的物体并聚合他们的长时序信息。

Frame-level Cross-Attention Module

25b81c5a8d8baa9b29063cde0309a40f.png

对于帧特征,我们首先进行聚类,用高斯分布来拟合获取其k和value的prototypes embedding,并根据当前帧产生的t由Cross-attention Weights将过去历史帧进行低质重建。

重建的特征与当前帧不仅对齐,还利用有限数量的高斯分布拟合去除了其特征中的冗余信息,达到了降噪的目的。保持像素点特征空间差异的同时,像素点之间内部的差异得到进一步的缩小。

随后,重建特征与当前帧进行加权融合产生的新时序特征将用于后续MOTS任务中的分类、检测、分割和追踪等子任务。

Instance-level Cross-Attention Module

8ee7cbe2bba44df7193475bc5a317da4.png

我们进一步根据初始的mask做前后背景的区分,上图中的黄色区域为前景,建模为positive;蓝色区域为背景,建模为negative。

这些instance prototypes随着时间传播而不断更新,我们采用滑动平均机制在第t帧时,这些positive和negative区域分别会产生attention maps。

从中我们也能看到不同的prototype所关注的代表区域,最后我们将初始的目的mask产生的attention map以及融合产生的新时序特征连接到一起,通过一个简单的mc网络,得到最终的mask预测。

值得注意的是,PCAN为了得到物体外观对时间变化的鲁棒性,采取了对比学习的机制使用前景和背景的prototypes来进一步表示每一个对象实例,并且将这些prototypes以在线的方式传播更新。

由于每一个实例或帧集的数量有限,这使得PCAN在视频中具有时间的线性复杂度,能够帮助我们高效的执行远程特征的聚合与传播。接下来是一个对Frame-level prototype的可视化。

Visualization of Prototypes

● Frame-level Attention

从整张图来看,我们随机选取了8个prototypes并显示了他们的注意力分布。显然,每张prototype都学会了图像的一些语义概念。这些都是通过无监督学习聚类产生的。

04dbdd28a0e0cebed671f6f5717742a3.png

Instance-level Attention - car

针对下图红框中车的区域,我们选取了4个前景作为示例。每个prototype都专注于特定的汽车子区域。例如,第一个prototype关注车头区域,并且这一attention随着时间的推移具有隐式无监督的一致性。

6cae6703e7b488371643e3fb4b0d83f6.png

Instance-level Attention - pedestrian

下图展示了我们对行人的可视化。

5e94846782897b6d2fadb301da366e58.png

2

Quantitative Results

Comparison with State-of-the-art

PCAN作为一个online方法,在两个最大规模的MOTS数据集BDD100K和Youtube-VIS上都取得了领先的性能。

500ca97e62e0cec1b992e67d4cf836fd.png

Ablation Results on Youtube-VIS

我们发现PCAN在Youtube-VIS上的性能随着temporal-length和prototype的一个变化规律。随着temporal-length的增长,PCAN的性能也有着稳步提升。这说明越丰富的temporal-length所带来的appearance信息可以帮助最终的性能提升。而prototype的数量在超过60以后出现了一些饱和现象。

6e952b3f6a55188bcb1aacfdd91babe1.png

2

Quantitative Results

74416d12bf3bd595ae41f59f17240e2b.png

eba389034e07710e448ccd9a36e5aa72.png

410d41d82c30b462c30ae034579a2343.png

85d36d0874342212dccf101c15ed28f6.png

cad36d9ed0fdbf18e868da40c3ea33b6.png

1c17ca01b107c8b3dec702fabe42a2e1.png

Results on Youtube-VIS

Thin tail segmentation

4e16d5e1b0c914297ff22d6b7d6b747d.png

Unstable object tracking and wrong detection

6cc4a21ec0b907a32893abf687064b87.png

Fast moving bicycle riders

685fac8f7745a960f08df4e2f80e02d5.png

White tennis racket handle and shirt

118d65f1912836b5af5b55ecf95c6e32.png

Contributions

 我们提出的PCAN主要是是由Frame-level和Instance-level组成,通过对历史帧信息做以高效的聚合时序信息并传播时序内容来用于自动驾驶。值得注意的是,PCAN是一个online方法,因此不能使用未来帧信息,这一点对于自动驾驶尤为重要。

 此外,foreground and background prototypes在减少计算量的同时有效增加了预测质量的稳定性。

BDD100K Segmentation Tracking Challenge

BDD100K数据集是之前最大数据集的6倍,从5000张训练图片扩展到了30000余张并有着超过480K的instance mask 标注,而且包含了更多的自动驾驶场景。

03d2c882534185f5b8f6c9f441ae841c.png

Future Directions

由于在标注数据时的高昂成本,这对于自动驾驶场景而言所需要的安全性是难以接受的。

 那么能否使用自监督的方法从更大的规模且无标注的自动驾驶视频中学习,从而帮助已有模型取得更好效果呢?

 朝着Self-exploring, self-training 和 self-adapting的方向继续发展。

论文题目:

Prototypical Cross-Attention Networks for Multiple Object Tracking and Segmentation

论文链接:

https://papers.nips.cc/paper/2021/file/093f65e080a295f8076b1c5722a46aa2-Paper.pdf

点击“阅读原文”,即可观看本场回放

整理:林  则

作者:柯  磊

往期精彩文章推荐

271d71768b88a7d52574fae0ea7c2c85.jpeg

记得关注我们呀!每天都有新知识!

 关于AI TIME 

AI TIME源起于2019年,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法和场景应用的本质问题进行探索,加强思想碰撞,链接全球AI学者、行业专家和爱好者,希望以辩论的形式,探讨人工智能和人类未来之间的矛盾,探索人工智能领域的未来。

迄今为止,AI TIME已经邀请了700多位海内外讲者,举办了逾350场活动,超280万人次观看。

80c732f852f8f681bf4ea02468615cca.png

我知道你

在看

~

a9d6080842e6541e7e68488017c5e39d.gif

点击 阅读原文 查看回放!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

干货!自动驾驶场景下的多目标追踪与实例分割 的相关文章

  • Python BigQuery 存储。并行读取多个流

    我有以下玩具代码 import pandas as pd from google cloud import bigquery storage v1beta1 import os import google auth os environ G
  • Pycharm Python 控制台不打印输出

    我有一个从 Pycharm python 控制台调用的函数 但没有显示输出 In 2 def problem1 6 for i in range 1 101 2 print i end In 3 problem1 6 In 4 另一方面 像
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9

随机推荐

  • 现在的00后,真是卷死了呀,辞职信已经写好了·····

    谁说00后躺平了 但是有一说一 该卷的还是卷 这不 上个月我们公司来了个00后 工作没两年 跳槽到我们公司起薪22K 都快接近我了 后来才知道人家是个卷王 从早干到晚就差搬张床到工位睡觉了 最近和他聊了一次天 原来这位小老弟家里条件不太好
  • python计算机视觉编程第六章 图像聚类

    图像聚类 图像聚类 什么是聚类 举个简单的例子 给出了左图中的点的数据 对其划分为三类 这个过程就叫做聚类 聚类实际上就是根据数据的特征进行分类 把相似的东西分在一起 难点 聚类是无监督的 如何在无监督的情况下尽可能分出更好的类别来是一个比
  • [管理与领导-63]:IT基层管理者 - 潜技能 - 1 - 职场中的陷阱 - 看清楚职场中的霸凌现象

    目录 前言 1 打击自尊心 2 孤立他人 3 恶意针对 4 当众羞辱 5 持续性否定 前言 职场中 什么样的人都有 害人之心不可有 防人之心不可无 前者教人从善 后者教善人如何保护自己受到 坏人 的伤害 有一种情形 每天上班都陷入抑郁 总是
  • 面向对象练习题-第十三天

    练习1 基础 建立一个学生类 其中成员变量为学号 姓名 及三门课的成绩 数组 另建立一个包含主方法的类 定义2个学生类的对象 1 Student package com hpe java import java util Arrays 建立
  • 【ElementUI】日期选择器时间选择范围限制

    ElementUI 日期选择器时间选择范围限制 根据接口灵活设置可选时间 只能选今天之前的时间 或者是只能选今天之后的时间 今天是否可以选 限制结束日期不能大于开始日期
  • 【计算机操作系统】第八章 网络操作系统

    1 计算机网络概述 ARPA 网 gt Internet 1 1 计算机网络的拓扑结构 1 2 计算机广域网络 计算机网络分为广域网和局域网两类 公用交换电话网 分组交换网 帧中继网 异步传输模式 ATM 1 3 计算机局域网络 基本局域网
  • 华为OD机试 C++ 字符串化繁为简

    描述 给你一串只包含英文字母 无论大写或小写 和小括号的字符 注意 小括号总是成对出现 并且不会互相嵌套 小括号里的英文字母表示它们之间是等价的 比如在 ab 里 a 和 b 是等价的 而在 bc 里 b 和 c 是等价的 因此 a b 和
  • 图像融合算法(像素级)

    图像融合技术可以提取自然光图像和红外图像的互补信息 获得对同一场景描述解释更为准确 全面和可靠的图像 像素级融合是常用于灰度图像与可见光图像的融合 基于源图像的彩色化就是源图像和目标图像的融合过程 使其同时兼有源图像的颜色和目标图像的形状
  • 计算机专业毕设论文题目大全(二)

    这一期为大家整理了计算机专业常见的论文题目 需要参考资料的同学可以直接点击后面链接下载 没有链接的可以添加微信biyezhan007来获取资源 序号 题目 下载链接 101 基于Android的跃动旋律音游app的设计与实现 102 基于A
  • 【开发工具-Guava】新集合类型

    1 概述 转载 新集合类型 Guava引入了很多JDK没有的 但我们发现明显有用的新集合类型 这些新类型是为了和JDK集合框架共存 而没有往JDK集合抽象中硬塞其他概念 作为一般规则 Guava集合非常精准地遵循了JDK接口契约 2 Mul
  • 【学习笔记】深入浅析BIO、NIO、AIO

    BIO NIO AIO Java的I O演进之路 I O模型 就是用什么样的通道或者说是通信模式和架构进行数据的传输和接收 很大程度上决定了程序通信的性能 Java共支持3种网络编程的I O模型 BIO NIO AIO 实际 通行需求下 要
  • electron-vue 使用remote 模块 进行多个子窗口的关闭

    remote 模板在13版本后禁用了 至于我为什么用它 是因为一个功能的原因 多个子窗口可以进行对应的操作事件后单独关闭当前的某一个子窗口 1 先进行下载 npm yarn install save electron remote 2 需要
  • Python 代码执行超时判断

    通过 signal 信号处理函数 import signal 自定义异常类 继承自BaseException 这样Exception就捕获不到 class TimeoutException BaseException pass 超时信号函数
  • PCL 由点云生成深度图像

    前言 在电脑上的pcl1 8 0版本可能是由于版本问题 无法在窗口显示深度图像 但是深度图像确实是生成了的 可以通过一个API将深度图像保存为一个png格式的图片然后查看 该函数如下 save rangeImage 相关的头文件 inclu
  • BDCN论文学习

    1 Dilated Convolutions 图像语义分割最核心的两个地方是用pooling下采样减小图像尺寸增大感受野 另一个是用deconv反卷积上采样增大图像尺寸 是用pooling可以增大感受野但是会带来信息损失 若是不用pooli
  • java正则表达式匹配数字和小数点,快来收藏!

    1 为什么要使用分布式锁 使用分布式锁的目的 无外乎就是保证同一时间只有一个客户端可以对共享资源进行操作 1 1举一个很长的例子 系统 A 是一个电商系统 目前是一台机器部署 系统中有一个用户下订单的接口 但是用户下订单之前一定要去检查一下
  • 扫普通链接二维码打开小程序

    一 启用扫描二维码打开小程序 登录小程序后台 进入 开发 开发设置 扫普通链接二维码打开小程序 启用功能 二 配置流程 二维码规则 指的是放置校验文件的路径 同一个域名可为不同小程序创建不同路径存放校验文件 前缀占用规则 选择占用则其他帐号
  • python的基本语法(命令提示符、赋值、标识符、注释、语法规则、内建函数和python应用领域)

    python交互式命令行提示符 gt gt gt print hello gt gt gt 主要提示符 world 续行符 hello world 次要提示符 表示上一条语句没有结束 python赋值 直接赋值 gt gt gt a 1 连
  • html表单验证数字,iview表单验证数字

    验证输入字符串必须为数字 html js exchangeIntegral required true message 请输入兑换积分 trigger blur type string pattern d message 请输入数字 tri
  • 干货!自动驾驶场景下的多目标追踪与实例分割

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 多目标跟踪和分割 MOTS 需要将视频中给定的类别的物体进行检测 分类 跟踪和像素级分割 在其重要的应用场景自动驾驶中 复杂的路况 市区内密集且相似的车辆和行人 以及对低功耗低延