FairMOT 论文学习

news2024/12/23 22:55:53

1. 解决了什么问题?

现有的多目标跟踪方案将目标检测和 reID 任务放在一个网络里面优化学习,计算效率高。目标检测首先在每一帧中检测出兴趣目标,要么将其与现有的轨迹关联起来,要么创建一个新的轨迹。这两个任务会相互竞争,现有的方法都将 reID 任务列为次优先级任务,而检测任务为主优先级,reID 的准确率受检测影响很大,这对 reID 不公平。当场景中目标很多时,先检测再跟踪的方式无法取得实时的效果,因为这两个模型并不共享特征,需要对每个目标框分别使用 reID 模型。

对于现有的方法,提出了三点问题:

  • Anchors 常用于目标检测,不适合提取 reID 特征。因为基于 anchors 的跟踪器会先在 RPN 中使用 anchors 检测目标,然后根据检测结果提取 reID 特征。如果检测结果错了,则 reID 特征没意义。因此当两个任务相互竞争时,它会偏向检测任务。训练 reID 特征时,anchors 会造成不少歧义:一个 anchor 可能对应多个 ID,一个 ID 可能对应多个 anchors。
  • 第二个问题就是检测和 reID 任务是完全不同的,它们需要不同的特征。reID 需要的是更低层级的特征,来区分同类别的不同实例;而对于检测任务来说,不同实例的特征要更加相近。特征共享会造成特征间的冲突,使每个任务的表现受损。
  • 第三个问题就是特征维度。reID 特征的维度通常设为 512 或 1024,要远高于目标检测需要的维度。这也会降低两个任务的表现。

2. 提出了什么方法?

提出了一个基于 CenterNet 目标检测的方法 FairMOT,同等对待检测和 reID 任务,与之前的“先检测再 reID” 的框架不同。检测分支是 anchor-free 的,用位敏图表征目标的中心点和大小。对于每个目标的中心点,reID 分支预测其所表征目标的 reID 特征。这俩分支几乎一样,而以前的方法是先检测再 reID 的双阶段级联方式。FairMOT 可以学习高质量的 reID 特征,平衡检测任务和 reID 任务。

2.1 Unfairness issues in one-shot trackers

现有的 one-shot 跟踪方案主要有三个问题,造成表现变差。

2.1.1 Unfairness Caused by Anchors

基于 anchors 的设计并不适合学习 reID 特征,造成大量的 ID 切换问题。

  • 忽略了 reID 任务:Track RCNN 首先预测一组目标候选框,然后从它们中提取特征,预测出相应的 reID 特征。训练时,reID 特征质量严重依赖于候选框的质量。这样训练时,模型就会努力去预测准确的目标候选框,而不是学习高质量的 reID 特征。因此,这种先检测再 reID 的方案并不能让 one-shot 跟踪器公平地学习。
  • 一个 anchor 对应多个 IDs:基于 anchors 的方法通常使用 ROI-Align 从候选框提取特征。ROI-Align 中大多数的采样点可能属于其它干扰实例或背景,这样提取的特征就无法最优地表示目标物体。作者发现,只使用一个点提取特征效果更好,即预测目标的中心点。
  • 一个 ID 对应多个 anchors:多个相邻的 anchors 可能被迫去预测相同的 ID,只要它们的 IOU 足够大。这会引起一定的歧义。另一方面,当图像发生一定的扰动时,同一个 anchor 可能会预测不同的 ID。目标检测通常使用 8/16/32 倍下采样提取特征图,平衡速度和准确率。这对 reID 特征学习来说太粗糙了,anchors 的特征与目标中心点有可能不对齐。

2.1.2 Unfairness Caused by Features

对于 one-shot 跟踪器,目标检测和 reID 特征是共享的。目标检测需要深度特征来预测目标类别和位置,而 reID 特征需要浅层特征来区分同类别的不同实例。在损失函数中,这俩优化目标是冲突的。

在这里插入图片描述

上图(a) 中 Track RCNN 将 re-ID 看作为次要任务,而检测是主要任务。Track RCNN 和 JDE 都是基于 anchors 的。红框表示 positive anchors,绿框表示目标框。Track RCNN 使用 ROI-Align 提取所有 positive anchors 的 reID 特征。JDE 提取所有 positive anchors 中心点的 reID 特征。FairMOT 只提取中心点的 reID 特征。(b) 红色 anchor 包含两个不同的实例,会导致预测两个冲突类别。© 不同的 anchors 对应着同一个 ID。(d) FairMOT 只提取目标中心点的 reID 特征,缓解了 © 与 (d) 的问题。

2.1.3 Unfairness Caused by Feature Dimension

现有的 reID 方法通常学习高维度特征,作者发现对于 one-shot MOT 任务,学习低维度特征更好。因为,

  • 高维度 reID 特征对目标检测表现不利,因为这俩任务会相互竞争。考虑到目标检测的特征维度比较低(类别数+边框坐标),学习低维特征能平衡这俩任务。
  • MOT 任务和 reID 任务不同,MOT 任务只需在连续两帧之间进行少量的 one-to-one 匹配。reID 任务则需要将 query 和大量候选样本进行匹配,需要更高维度的 reID 特征。因此,MOT 并不需要高维度特征。
  • 低维度 reID 特征能够提升推理速度。

2.2 FairMOT

在这里插入图片描述

2.2.1 Backbone

主干网络是 ResNet-34,平衡速度和准确率。上图主干使用的是 DLA,融合多层特征。与原始 DLA 相比,它在低层级和高层级特征之间增加了短路连接,与 FPN 相似。此外,所有上采样模块中的卷积层替换为了可变形卷积,根据目标尺度和姿态动态调整感受野。这样得到的模型就是 DLA-34。输入图像记做 H i m a g e × W i m a g e H_{image}\times W_{image} Himage×Wimage,输出特征图形状为 C × H × W , H = H i m a g e 4 , W = W i m a g e 4 C\times H\times W, H=\frac{H_{image}}{4},W=\frac{W_{image}}{4} C×H×W,H=4Himage,W=4Wimage

2.2.2 检测分支

构建于 CenterNet 基础上。在 DLA-34 上面是 3 个并行的 heads,预测热力图、目标中心偏移量和边框大小。每个 head 使用 256 256 256通道的 3 × 3 3\times 3 3×3卷积计算 DLA-34 的输出特征,然后是 1 × 1 1\times 1 1×1卷积层输出最终结果。

2.2.2.1 Heatmap Head

负责预测每个目标中心点的位置。基于热力图的表征是预测关键点任务的标准做法。热力图维度是 1 × H × W 1\times H\times W 1×H×W,如果一个位置与 ground-truth 目标的中心点重合,则该位置的响应值为 1 1 1。该响应值会随着坐标与目标中心点的距离疏远而呈指数级降低。

对于每个 GT 框 b i = ( x 1 i , y 1 i , x 2 i , y 2 i ) \mathbf{b}^i=(x_1^i, y_1^i, x_2^i, y_2^i) bi=(x1i,y1i,x2i,y2i),通过 c x i = x 1 i + x 2 i 2 c_x^i=\frac{x_1^i+x_2^i}{2} cxi=2x1i+x2i c y i = y 1 i + y 2 i 2 c_y^i=\frac{y_1^i+y_2^i}{2} cyi=2y1i+y2i计算目标中心点 ( c x i , c y i ) (c_x^i, c_y^i) (cxi,cyi)。然后它在特征图上的位置是: ( c ~ x i , c ~ y i ) = ( ⌊ c x i 4 ⌋ , ⌊ c y i 4 ⌋ ) (\tilde{c}_x^i,\tilde{c}_y^i)=(\lfloor \frac{c_x^i}{4}\rfloor,\lfloor \frac{c_y^i}{4}\rfloor) (c~xi,c~yi)=(⌊4cxi,4cyi⌋)。位置 ( x , y ) (x,y) (x,y)的响应值是 M x y = ∑ i = 1 N exp ⁡ [ − ( x − c ‾ x i ) 2 + ( y − c ‾ y i ) 2 2 σ c 2 ] M_{xy}=\sum_{i=1}^N \exp \left[-\frac{(x-\overline{c}_x^i)^2 + (y-\overline{c}_y^i)^2}{2\sigma_c^2}\right] Mxy=i=1Nexp[2σc2(xcxi)2+(ycyi)2] N N N表示目标个数, σ c \sigma_c σc是标准方差。损失函数基于 Focal loss:

L heat = − 1 N ∑ x y { ( 1 − M ^ x y ) α log ⁡ ( M ^ x y ) , M x y = 1 ( 1 − M x y ) β ( M ^ x y ) α log ⁡ ( 1 − M ^ x y ) , otherwise \begin{align} L_{\text{heat}}=-\frac{1}{N}\sum_{xy}\begin{cases} (1-\hat{M}_{xy})^{\alpha}\log(\hat{M}_{xy}),&\quad M_{xy}=1\\ (1-{M}_{xy})^{\beta}(\hat{M}_{xy})^{\alpha}\log(1-\hat{M}_{xy}),&\quad\text{otherwise} \end{cases} \nonumber \end{align} Lheat=N1xy{(1M^xy)αlog(M^xy),(1Mxy)β(M^xy)αlog(1M^xy),Mxy=1otherwise

M ^ \hat{M} M^是预测的热力图, α , β \alpha,\beta α,β是 focal loss 的超参数。

2.2.2.2 Box Offset and Size Heads

边框偏移 head 让目标定位更加准确。最终特征图的步长是 4,会引入至多为 4 个像素的量化误差。对于每个像素点,该分支预测关于目标中心点的连续的偏移量,缓解下采样的影响。Box size head 预测每个位置目标框的高度和宽度。

Size head 的输出记做 S ^ ∈ R 2 × H × W \hat{S}\in \mathbb{R}^{2\times H\times W} S^R2×H×W,offset head 的输出记做 O ^ ∈ R 2 × H × W \hat{O}\in\mathbb{R}^{2\times H\times W} O^R2×H×W。对于图中每个 GT 框 b i = ( x 1 i , y 1 i , x 2 i , y 2 i ) \mathbf{b}^i=(x_1^i, y_1^i, x_2^i, y_2^i) bi=(x1i,y1i,x2i,y2i),计算 GT size 为 s i = ( x 2 i − x 1 i , y 2 i − y 1 i ) \mathbf{s}^i=(x_2^i-x_1^i, y_2^i-y_1^i) si=(x2ix1i,y2iy1i)。GT offset 计算为 o i = ( c x i 4 , c y i 4 ) − ( ⌊ c x i 4 ⌋ , ⌊ c y i 4 ⌋ ) \mathbf{o}^i=(\frac{c_x^i}{4},\frac{c_y^i}{4})-(\lfloor\frac{c_x^i}{4}\rfloor,\lfloor\frac{c_y^i}{4}\rfloor) oi=(4cxi,4cyi)(⌊4cxi,4cyi⌋)。将相应位置预测的 size 和 offset 记做 s ^ i , o ^ i \hat{\mathbf{s}}^i,\hat{\mathbf{o}}^i s^i,o^i。对这两个 heads 使用 l 1 l_1 l1损失:

L box = ∑ i = 1 N ∥ o i − o ^ i ∥ 1 + λ s ∥ s i − s ^ i ∥ 1 L_{\text{box}}=\sum_{i=1}^N \left\| \mathbf{o}^i - \hat{\mathbf{o}}^i\right\|_1 + \lambda_s \left\|\mathbf{s}^i - \hat{\mathbf{s}}^i\right\|_1 Lbox=i=1N oio^i 1+λs sis^i 1

λ s \lambda_s λs是加权系数,设为 0.1 0.1 0.1

2.2.3 Re-ID 分支

Re-ID 分支输出的特征能区分不同的目标。不同目标的相似度应该低于相同的目标之间的相似度。作者在主干网络上使用了一个 128 维的卷积层,提取每个位置的 ReID 特征。将该特征图记做 E ∈ R 128 × H × W \mathbf{E}\in \mathbb{R}^{128\times H\times W} ER128×H×W。特征图上位置 ( x , y ) (x,y) (x,y)的 ReID 特征是 E x y ∈ R 128 \mathbf{E}_{xy}\in \mathbb{R}^{128} ExyR128

2.2.4 Re-ID Loss

通过分类任务学习 re-ID 特征。训练集中,同一 ID 的所有目标实例被认为属于同一类别。对于每个 GT 框 b i = ( x 1 i , y 1 i , x 2 i , y 2 i ) \mathbf{b}^i=(x_1^i,y_1^i,x_2^i,y_2^i) bi=(x1i,y1i,x2i,y2i),获取热力图上目标的中心点 ( c ~ x i , c ~ y i ) (\tilde{c}_x^i,\tilde{c}_y^i) (c~xi,c~yi)。提取 re-ID 特征向量 E c ~ x i , c ~ y i \mathbf{E}_{\tilde{c}_x^i,\tilde{c}_y^i} Ec~xi,c~yi,用全连接层和 softmax 操作将其映射为一个类别分布向量 P = { p ( k ) , k ∈ [ 1 , K ] } \mathbf{P}=\lbrace \text{p}(k),k\in \left[1,K\right]\rbrace P={p(k),k[1,K]}。将 GT 类别标签用 one-hot 表示为 L i ( k ) \mathbf{L}^i(k) Li(k)。这样 re-ID 损失为:

L identity = − ∑ i = 1 N ∑ k = 1 K L i ( k ) log ⁡ ( p ( k ) ) L_{\text{identity}}=-\sum_{i=1}^N\sum_{k=1}^K \mathbf{L}^i(k)\log(\mathbf{p}(k)) Lidentity=i=1Nk=1KLi(k)log(p(k))

K K K是训练集中 ID 的个数。训练过程中,只会使用目标中心点的 ID 特征向量。

2.3 训练

联合训练检测分支和 re-ID 分支。使用 uncertainty loss 自动平衡检测和 re-ID 任务:

L detection = L heat + L box L_{\text{detection}}=L_{\text{heat}}+L_{\text{box}} Ldetection=Lheat+Lbox

L total = 1 2 ( 1 e w 1 L detection + 1 e w 2 L identity + w 1 + w 2 ) L_{\text{total}}=\frac{1}{2}(\frac{1}{e^{w_1}}L_{\text{detection}}+\frac{1}{e^{w_2}}L_{\text{identity}}+w_1+w_2) Ltotal=21(ew11Ldetection+ew21Lidentity+w1+w2)

w 1 , w 2 w_1,w_2 w1,w2是平衡两个任务的可学习参数。给定一张图像和若干个目标,以及它们的 IDs,生成热力图、box offset 和 size maps,以及目标的 one-hot 类别表征。

FairMOT 提出了单张图像的训练方法。CenterTrack 使用两个连续帧图像作为输入,FairMOT 只使用单张图像作为输入。每个边框有唯一的 ID,因此每个目标实例都是单独的一类。对整张图像做各种变换,包括 HSV 增广、旋转、缩放、平移和裁剪。单张图像的训练策略有多个重要意义。

2.4 在线推理

2.4.1 网络推理

输入帧大小是 1088 × 608 1088\times 608 1088×608。对预测的热力图,使用 NMS 提取峰值关键点。用一个简单的 3 × 3 3\times 3 3×3最大池化操作实现 NMS。若关键点的热力图分数高于阈值,保留它。然后根据预测的偏移量和边框大小,计算相应的边框。提取预测目标中心点的 ID 特征。

2.4.2 在线关联

使用了一个启发式在线数据关联的方法。首先,根据第一帧的检测框初始化一组 tracklets,然后在后续帧,通过双阶段的匹配策略将检测框和现有的 tracklets 关联起来。在第一个阶段,使用 Kalman filter 和 reID 特征得到初始的跟踪结果。使用 Kalman filter 预测后续帧的 tracklet 位置,计算预测框和检测框的 Mahalanobis 距离 D m D_m Dm。将 D m D_m Dm融合到 reID 特征的余弦距离中: D = λ D r + ( 1 − λ ) D m , λ = 0.98 D=\lambda D_r + (1-\lambda)D_m,\quad \lambda=0.98 D=λDr+(1λ)Dm,λ=0.98。如果 D m D_m Dm大于某阈值,则设为无穷大。使用 Hungarian 算法(匹配阈值为 τ 1 = 0.4 \tau_1=0.4 τ1=0.4)完成第一阶段的匹配。

在第二阶段,对于未匹配的检测框和 tracklets,根据它们边框的 IoU 来匹配。匹配阈值设为 τ 2 = 0.5 \tau_2=0.5 τ2=0.5。在每个时间步骤,更新 tracklets 的外观特征,以解决外观变动。最后将未匹配的检测框初始化为新的 tracks,将未能匹配的检测框保留 30 帧以防止再次出现。

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

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

相关文章

ElasticSearch - 基于 JavaRestClient 操作索引库和文档

目录 一、RestClient操作索引库 1.1、RestClient是什么? 1.2、JavaRestClient 实现创建、删除索引库 1.2.1、前言 1.2.1、初始化 JavaRestClient 1.2.2、创建索引库 1.2.3、判断索引库是否存在 1.2.4、删除索引库 1.3、JavaRestClient 实现文档的 CRUD 1.3…

简单理解三极管导通条件(从电压角度考虑)

1、本文仅描述三极管如何使用,不对三极管的原理做讲解。 2、本文内容如有错误,欢迎交流指正。 3、本文仅作为本人学习笔记,部分内容来源于网络、书籍,如涉及侵权,请联系删除。 三极管的分类:NPN型、PNP型。…

2023中国国际缝制设备展,正运动助力智能缝纫设备“更快更准”更智能!

■展会名称: 2023中国国际缝制设备展览会 ■展会日期 2023年9月25日-28日 ■展馆地点 上海新国际博览中心E6馆 ■展位号 E6-N09 正运动技术,作为国内领先的运动控制企业,将于9月25日参展2023中国国际缝制设备展。展会将在上海新国际博…

【校招VIP】专业课考点之进程同步

考点介绍: 进程同步是指在多个进程之间进行协调,以确保它们在访问共享资源时能够正确、有序地执行。其中最常见的同步机制是互斥锁和信号量 专业课考点之进程同步-相关题目及解析内容可点击文章末尾链接查看! 一、考点试题 1.从执行状态挂…

商品秒杀系统思路

1、使用CAS乐观锁解决秒杀超卖问题。 一开始使用库存,但是发现库存,结果发现没卖完。然后就通过CAS判断库存大于0。 2、又发现问题,一个用户可以下好几单,所以想到用商品id和用户id做个唯一索引,解决了,但…

【剑指Offer】76.删除链表中重复的结点

题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5 数据范围:链表长度满…

二、浏览器--事件循环(也叫事件环,也叫event loop)--任务队列(等待执行的任务(存放的定时器,http,事件等进程))--渲染三者的关系

引用B站视频,搜索标题:【事件循环】【前端】事件原理讲解,超级硬核,忍不住转载 本视频总结: 超级复杂的JS底层。事件循环和事件队列的关系。宏任务、微任务和raf回调这3个事件队列的关系。任务队列和执行栈的关系。d…

LeetCode 第113 双周赛补题

使数组成为递增数组的最少右移次数3 class Solution { public:int minimumRightShifts(vector<int>& nums) {int n nums.size();int j -1;for (int i 0;i < nums.size()-1;i ) {if (nums[i1] < nums[i]) {j i1;break;}}int k j1;if (j -1) return 0;for…

Vue 05 MVVM模型

MVVM模型 M&#xff1a;模型(Model) &#xff1a;data中的数据V&#xff1a;视图(View) &#xff1a;模板代码VM&#xff1a;视图模型(ViewModel)&#xff1a;Vue实例 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>理…

accesskey_tools AWS红队利用工具:强大的云安全评估和渗透测试工具

一、简介 accesskey_tools是一款专为云环境渗透设计的红队利用工具。本文将介绍accesskey_tools的功能和用途&#xff0c;并探索其在安全评估和渗透测试中的价值和实际应用。 二、工具下载 【点击下载工具】 三、安装依赖 cd aws/aliyun/tencentcloud #进入相应的云服务平…

MySQL数据库描述以及安装使用

一&#xff1a;数据库介绍 数据库 数据库就是用来存储数据的一种特殊文件。 数据库类别 数据库主要分为两种&#xff1a; 关系型数据库RDBMS 非关系型数据库 关系型数据库的主要产品&#xff1a; oracle&#xff1a;在以前的大型项目中使用,银行,电信等项目 mysql&#xff1a;…

工业通讯Modbus简介(一)

写在前面&#xff1a; 昨日雨&#xff0c;在床上睡觉许久&#xff0c;放空身体精神。至傍晚&#xff0c;雨仍淅淅沥沥&#xff0c;拆半年前行李&#xff0c;取煮水锅&#xff0c;欲食火锅。与老王一起&#xff0c;美哉。 今日团建&#xff0c;我队共10个老铁&#xff0c;拔河获…

ES6-匿名函数

匿名函数 没有名字的函数&#xff0c;无法直接使用。 使用方式&#xff1a; 1&#xff09;函数表达式 将匿名函数赋值给一个变量&#xff0c;并且通过变量名称进行调用&#xff0c;我们将这个称为函数表达式 let fn function () {console.log(我是函数表达式)} console.l…

Linux:冯诺依曼系统和操作系统的概念

文章目录 冯诺依曼体系结构冯诺依曼体系的理解 操作系统操作系统的基本定位操作系统的理解1 操作系统的理解2总结 本篇主要总结的是操作系统的基本认知和一些概念 冯诺依曼体系结构 那么上图表示的就是冯诺依曼体系结构&#xff0c;那这个体系结构是什么&#xff1f;为什么要先…

【从0学习Solidity】28. Hash函数解析

【从0学习Solidity】28. Hash函数解析 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#xff0c;探索…

Purple-Pi-OH Linux SDK编译手册

一、 SDK下载 1.1 源码下载 在官网下载Purple-Pi-OH的的相关资料以及Linux SDK&#xff1a; 链接&#xff1a;Purple Pi OH-深圳触觉智能科技有限公司 1.2 源码解压 由于SDK打包后体积较大&#xff0c;我们在上传到百度云盘前把SDK包按照4GB大小分割了&#xff0c;因此下载…

【LRU缓存机制】+ 双向链表一些基础操作

文章目录 Tag题目来源题目解读解题方法方法一&#xff1a;哈希表双向链表 知识回顾双向链表的几个基本操作 写在最后 Tag 【哈希表】【双向链表】【设计数据结构】【2023-09-24】 题目来源 146. LRU 缓存 题目解读 LRU 是Least Recently Used的缩写&#xff0c;即最近最少使…

C语言每日一题(4):打印二进制的奇数位和小数位

文章主题&#xff1a;打印二进制的奇数位和小数位&#x1f525;所属专栏&#xff1a;C语言每日一题&#x1f4d7;作者简介&#xff1a;每天不定时更新C语言的小白一枚&#xff0c;记录分享自己每天的所思所想&#x1f604;&#x1f3b6;个人主页&#xff1a;[₽]的个人主页&…

干洗店收银管理软件,洗鞋店收银系统干洗app

干洗店收银管理软件&#xff0c;洗鞋店收银系统干洗app&#xff0c;支持上门取衣服干洗&#xff0c;在手机上下单&#xff0c;预约合适的时间&#xff0c;就会有专员来上门取&#xff0c;当然&#xff0c;送衣服务也是有的&#xff0c;一些价格都标注清楚&#xff0c;有更多的参…

YOLOv5改进系列(24)——替换主干网络之MobileViTv3(移动端轻量化网络的进一步升级)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制 YOLOv5改进系列(2)——添加CBAM注意力机制