MDNet、SiamFC、ADNet、CFNet、LSTM(RNN)…你都掌握了吗?一文总结目标追踪必备经典模型(一)
机器之心专栏
本文将分 2 期进行连载,共介绍 10 个在目标追踪任务上曾取得 SOTA 的经典模型。
第 1 期:MDNet、SiamFC、ADNet、CFNet、LSTM(RNN)
第 2 期:SiamRPN、SiamMask、UpdateNet、SiamAttn、SiamGAT
您正在阅读的是其中的第 1 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
模型 | SOTA!模型资源站收录情况 | 模型来源论文 |
---|---|---|
MDNet | https://sota.jiqizhixin.com/project/mdnet 收录实现数量:1 支持框架:PyTorch | Learning Multi-Domain Convolutional Neural Networks for Visual Tracking |
SiamFC | https://sota.jiqizhixin.com/project/siamfc 收录实现数量:8 支持框架:PyTorch,MindSpore | Fully-Convolutional Siamese Networks for Object Tracking |
ADNet | https://sota.jiqizhixin.com/project/adnet 收录实现数量:1 支持框架:MindSpore | Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning |
CFNet | https://sota.jiqizhixin.com/project/cfnet-2 收录实现数量:3 支持框架:PyTorch | CFNet: Cascade and Fused Cost Volume for Robust Stereo Matching |
LSTM(RNN) | https://sota.jiqizhixin.com/project/lstm-rnn | Tracking the untrackable: Learning to track multiple cues with long-term dependencies |
目标追踪是计算机视觉领域中非常热门且具有挑战性的研究领域之一。目标追踪是指在第一帧图像中给定待追踪目标的情况下,对目标进行特征提取,对感兴趣区域进行分析;然后在后续图像中找到相似的特征和感兴趣区域,并对目标在下一帧中的位置进行预测。目标追踪技术在导弹制导、智能监控系统、视频检索、无人驾驶、人机交互和工业机器人等领域都具有重要的作用。
目标追踪算法主要分为两类:第一类是生成式(generative)目标追踪算法,通过在线学习方式建立目标模型,然后使用模型搜索重建误差最小的图像区域,完成目标定位。这一类方法就是在当前帧对目标区域建模,下一帧寻找与模型最相似的区域并将其确定为预测位置,比较著名的有卡尔曼滤波,粒子滤波,mean-shift等。这类方法的主要问题是没有考虑目标的背景信息,没能有效利用图像信息。第二类是判别式(discrimination)模型,将目标追踪看作是一个二元分类问题,同时提取目标和背景信息(图像特征)来训练分类器,将目标从图像序列背景中分离出来(目标区域为正样本,背景区域为负样本),从而得到当前帧的目标位置。在处理下一帧时则利用训练好的分类器寻找最优区域。这类方法采用机器学习技术,在训练过程中使用背景信息,这样分类器就能专注区分前景和背景,效果较好。
2015年,深度学习技术开始进军目标追踪领域,使用深度学习技术可以更好的提取目标的特征,对目标进行更好的表达。不过,生成式的相关滤波技术在此之后依然不断发展,对边界效应的处理效果越来越好。也就是说,深度学习的模型并未完全取代或是完全胜出于传统的目标追踪方法,这也是这一领域的一大特点。深度学习方法应用于目标追踪任务面临的主要问题是:使用图像分类的大型数据集预训练模型,但是这种数据集与视频追踪所需的实际数据往往存在较大的差异,导致追踪误差较大;另外,随着深度学习网络层数的增加,算法的计算量增大,这会降低追踪过程中的实时性。一般来说,相关滤波技术的处理速度更快,深度学习方法的准确性更高。
本文聚焦于深度学习技术,回顾目标追踪中必备的深度学习TOP模型。本文提到的目标追踪均指单目标追踪SOT(Single Object Tracking)。
1、 MDNet
本文提出了一种新的CNN 框架来处理目标追踪问题。由于CNN依赖于大规模训练数据,所以在目标追踪领域中的应用效果一直有限。本文提出了 Multi-Domain Network (MDNet),从多个标注的视频序列中,来学习物体的共享表示,协助进行追踪,将其中每一个视频都看做是一个单独的域 domain。所提出的网络具有单独的分支,即:domain-specific layers for binary classification。MDNet 上的每一个 domain 都是单独训练的,并且每次都迭代的更新共享层。利用该策略,作者从 domain-specific 得到依赖于 domain 的信息,学习普遍的特征表示用来追踪。
图1 MDNet结构,由共享层和特定域的K个分支组成。黄色和蓝色的边框分别表示每个领域的正、负样本
MDNet的结构如图1所示。它接收107×107的RGB输入,有五个隐藏层,包括三个卷积层(conv1-3)和两个全连接层(fc4-5)。此外,该网络的最后一个全连接层(fc61-fc6K)有K个分支,对应于K个领域。卷积层与VGG-M网络的相应部分相同,只是特征图的大小由输入大小来调整。接下来的两个全连接层有512个输出单元,并与ReLU和dropouts相结合。每一个K分支都包含一个具有softmax交叉熵损失的二元分类层,负责区分每个域的目标和背景。作者把fc61-fc6K称为特定域(domain-specific)的层,把前面所有的层称为共享层。为了获得不同视频序列在追踪中的共同信息,作者采用了如下训练方式,对于K个视频序列,fc6存在着K个batch分支,当训练第K个视频时,使用SGD更新conv1-3、fc4-5和fc6的第K个batch分支,直至网络收敛或者达到训练次数。在测试过程中,作者固定conv1-3的参数,新建fc6,并根据测试序列微调fc4-5、训练fc6。
在应用网络进行目标追踪的过程中,考虑两个互补的特性,即:robustness 和 adaptiveness。Long-term update 是按照常规间隔后进行更新;short-term updates 当出现潜在的追踪失败的时候进行更新,此处潜在的追踪失败是指:预测目标的positive score 小于 0.5。在追踪的过程中保持单独的网络,这两种更新的执行依赖于物体外观变化的速度。为了预测每一帧目标的状态,在前一帧物体周围提取 N 个模板,然后根据网络得到他们的得分,即:正样本得分以及负样本得分。通过找到最大正样本得分作为最优的目标状态:
进一步,作者引入 bounding box regression技术来改善定位的准确度。给定测试视频的第一帧,使用conv3的特征训练一个简单线性回归模型来预测目标物体的位置。在随后的视频帧中,如果预测的目标是可靠的,那么可以调整从上式中得到的目标位置。文章仅仅用第一帧进行 bounding box 回归预测。完整的目标追踪流程如下:
当前SOTA!平台收录MDNet共1个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
MDNet | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/mdnet |
2、 SiamFC
考虑追踪视频中任意对象的问题,一般来说,初始获取的目标对象为第一帧中的矩形标识,仅凭当前视频的数据仅能学习简单的模型。这种监督数据的稀缺和实时操作的限制影响了深度学习在这种每视频学习一个目标追踪器的范式中的应用。本文提出了一种替代方法,在初始离线阶段训练深度卷积网络以解决更一般的相似性学习问题,然后在追踪期间简单地在线评估此功能。本文的主要贡献在于证明该方法在现代追踪基准测试中以远超帧速率要求的速度获得了非常有竞争力的性能。具体来说,训练了一个孪生网络以在更大的搜索图像中定位示例图像。此外,提出了一个全卷积的孪生体系结构:通过计算两个输入的互相关性的双线性层实现了密集而有效的滑动窗口评估。
本文使用相似性学习的方法学习追踪任意目标。作者提出学习函数f(x,z) ,将示例图像z与相同大小的候选图像x 进行比较,如果两个图像描绘相同的对象则返回高分,否则返回低分。为了在新图像中找到对象位置,我们可以穷尽地测试所有可能的位置并选择与对象过去的外观具有最大相似性的候选者。在实验中,作者简单地使用对象的初始外观作为示例,从具有标记的对象轨迹的视频数据集中学习函数f。作者使用深度卷积网络作为函数f,使用Siamese(孪生)架构解决了使用深度卷积网络进行相似性学习的问题。
Siamese网络是指网络的主体结构分上下两支,这两支像双胞胎一样共享卷积层的权值。上面一支(z)称为模板分支(template),用来提取模板帧的特征。φ表示特征提取方法,文中提取的是深度特征,经过全卷积网络后得到一个6×6×128的feature map φ(z)。下面一支(x)称为检测分支(search),是根据上一帧的结果在当前帧上crop出search region。同样提取了深度特征之后得到一个22×22×128的feature map φ(x)。模版分支的feature map在当前帧的检测区域的feature map上做匹配操作,可以看成是φ(z)在φ(x)上滑动搜索,最后得到一个响应图,图上响应最大的点就是对应这一帧目标的位置。
图2 全卷积孪生Siamese结构。该架构对于搜索图像x来说是全卷积的。其输出是一个标量值的分数图,其维度取决于搜索图像的大小。这使得相似性函数可以在一次评估中对搜索图像中的所有翻译子窗口进行计算。在这个示例中,分数图中的红色和蓝色像素包含了相应子窗口的相似度
全卷积网络的优点是我们可以提供更大的搜索图像作为网络的输入,而不是相同大小的候选图像,它将在一次评估中计算密集网格上所有转化的子窗的相似性。为了实现这一点,作者使用卷积嵌入函数φ并使用互相关层组合得到的特征图:
在追踪期间,使用以目标的先前位置为中心的搜索图像。将最大分数相对于分数图中心的位置乘以网络中设定的步长,可以得到目标在帧与帧之间的位移。通过组装小批量的缩放图像,在单个前向通道中搜索多个标度。使用互相关组合特征图并在较大的搜索图像上对网络进行评估,在数学上等同于使用内积去组合特征图并且独立地评估每个在转换的子窗上的网络。作者采用判别方法,在正负对上训练网络。采用logistic损失函数:
在训练过程中,通过使用包含示例图像和更大搜索图像组成的对,来利用网络的全卷积性质。生成一个分数v:D−>R的映射,有效地为每对生成许多示例。将分数图的损失定义为个体损失的平均值:
对于得分图的每个位置u ∈ D,都要求有一个真实的标签y[u]∈{+1,−1},利用随机梯度下降法(SGD)求解卷积神经网络θ的参数:
通过抽取以目标为中心的样本和搜索图像,从带注释的视频数据集中获得成对。图像是从视频的两帧中提取出来的,这两帧都包含目标,并且最多间隔T帧。在训练时忽略对象的类别。对每个图像内的对象比例进行归一化,而不破坏图像的宽高比。如果得分图的元素位于中心半径R内(考虑到网络的步幅k),则认为它们属于一个正样本。
在训练期间,采用127 x 127的示例图像,并搜索255 x 255像素的图像。加上附加边缘,使得图像缩放后边界框(Bounding Box)具有固定的区域。更确切地说,如果紧密边界框(tight bounding box)具有大小(w,h)并且上下文边距是p,则选择比例因子s使得缩放矩形的面积等于常数:
作者使用示例图像A=127^2的区域并将上下文的量设置为平均维度的一半p=(w+h)/4。提取每帧的示例和搜索图像以避免在训练期间调整图像大小。
本文目的是证明在ImageNet Video上训练时全卷积孪生网络的有效性及其泛化能力,因此作者使用了一种极其简单的算法来执行追踪。与更复杂的追踪器不同,不会更新模型或保留过去的记忆,不会合并其他线索,例如光流或颜色直方图,并且不会使用边界框回归来改进预测。然而,尽管这种方法非常简单,根据本文的离线学习相似度指标,追踪算法仍获得了非常好的效果。
当前SOTA!平台收录SiamFC共8个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
SiamFC | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/siamfc |
3、 ADNet
本文引入强化学习来做目标追踪,即通过强化学习生成动作序列(对bbox进行移动or尺度变换)来进行追踪。控制动作的深度网络需要用各种训练序列进行预训练,并且在追踪的过程中进行fine-tune,以在线适应目标和背景的变化。预训练通过深度强化学习和监督学习来实现。强化学习的使用可以实现部分带标签数据的半监督学习。
本文工作通过所提出的Action-Decision 网络(ADNet)控制的重复性行动来追踪目标变化。图3描述了视觉追踪的基本概念。使用ADNet来生成动作,以寻找新帧中目标物体的位置和大小。ADNet学习策略,从目标物的当前位置状态中选择最佳行动来追踪目标物。在ADNet中,策略网络是用卷积神经网络设计的。其中,输入是在前一个状态的位置裁剪的图像patch,输出是包括翻译和比例变化的行动的概率分布。此外,由于ADNet可以通过选择动作来精确地定位目标,因此不需要进行bounding box回归等后处理。作者还提出了一种监督学习(supervised learning,SL)和强化学习( reinforcement learning,RL)的组合学习算法来训练ADNet。在监督学习阶段,训练网络选择行动,使用从训练视频中提取的样本来追踪目标的位置。在这个步骤中,网络学会了在没有顺序信息的情况下追踪一般物体。在RL阶段,SL阶段的预训练网络被用作初始网络。通过使用由采样状态、行动和奖励组成的训练序列,通过追踪模拟进行RL。网络的训练是基于策略梯度的深度强化学习,使用在追踪模拟中获得的奖励。即使在训练帧被部分标记的情况下(半监督情况),所提出的框架通过根据追踪模拟的结果分配奖励成功地学习了未标记的帧。
图3 本文提出的由顺序动作控制的视觉追踪的概念。第一列显示了目标的初始位置,第二和第三列显示了在每一帧中寻找目标边界框的迭代动作流程
ADNet完整的网络架构如下图:
图4 网络结构。虚线表示状态转换。在这个例子中,选择 "向右移动 "的动作来捕捉目标物体。这个动作决定过程不断重复,直到最后确定每一帧中目标的位置
首先分析强化学习部分。
(1)状态。状态s_t分为p_t和d_t两部分。其中,p_t代表正在追踪的bbox(当前图片信息),d_t则是一个11x10=110维的向量,存储的是前10个动作,其中11代表的是11种不同的action,使用独热编码表示。
(2)动作。动作分为3类共11种。第一类是move,包括上下左右和快速上下左右;第二类是scale,包括放大和缩小;第三类是stop,即终止操作。
(3)状态转移。定义一个差值如下:
对于上下左右action(以此类推):
对于快速上下左右action(以此类推):
对于尺度变换action:
(4)奖励函数。假设动作序列action sequence的长度为T,则reward定义如下:
动作的终止有两种触发情况:①.选择了stop action;②.action sequence产生了波动(eg: {left, right, left})。
然后分析训练部分。
(1)训练监督学习部分
这部分训练{w1,w2,...,w7},训练部分的action lable通过以下方法获得:
class lable的判断如下:
损失函数如下:
(2)训练强化学习部分。这部分就是使用SGD最大化:
本框架可以训练ADNet,即使ground-truth{Gl}是部分给定的,也就是图5中所示的半监督设置。监督学习框架不能学习未标记的帧的信息,但是,强化学习可以以半监督的方式利用未标记的帧。为了在RL中训练ADNet,应该确定追踪分数{z_t,l},然而,在未标记的序列中的追踪分数不能立即确定。相反,我们将追踪分数分配给从追踪模拟结果中获得的奖励。在其他工作中,如果在无标签序列中追踪模拟的结果在有标签的帧上被评价为成功,那么无标签帧的追踪分数由z_t,l = +1给出。如果不成功,则z_t,l被赋予-1,如图5所示。
图5 半监督情况下对Walking2序列的追踪模拟说明。红框和蓝框分别表示ground-truth和预测的目标位置。在这个例子中,只有#160、#190和#220帧被注释了。通过连续的行动,agent在#190帧获得+1奖励,在#220帧获得-1奖励。因此,从#161到#190帧的追踪得分将是+1,#191和#220之间的追踪得分是-1
(3)在线自适应。在线更新的时候,只对{w1,w2,...,w7}进行更新。每帧使用前面帧中置信分数大于0.5的样本进行微调。如果当前的置信分数小于-0.5,说明“跟丢了”,需要进行re-detection。
当前SOTA!平台收录ADNet共1个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
ADNet | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/adnet |
4、 CFNet
不同数据集间场景(域)差异较大(large domain differences)且视差分布不平衡,这极大地限制了现有深度立体匹配模型在现实生活的应用。为提高立体匹配网络的鲁棒性,文中提出一种基于级联和融合的代价量网络:CFNet。具体来说,作者基于SiamseFC的结构引入CF层(Correlation Filter),网络通过端到端训练,证明可以用较少网络的卷积层数而不降低准确度。CFNet整体结构如图6 所示:
图6 CFNet整体结构,网络由3部分组成:金字塔特征提取网络、融合代价体和级联代价体
CFNet网络由三部分组成:金字塔特征提取网络 — pyramid feature extraction;融合代价体 — fused cost volume;级联代价体 — cascade cost volume。
金字塔特征提取网络。该网络是带有跳跃连接的编码器解码器结构,由 5 个残差块组成,提取多尺度图像特征。后面紧接一个SPP(Spatial Pyramid Pooling,空间金字塔池化)模块,用以更好的合并多尺度特征的上下文信息。SPP模块就是对特征进行不同Size的池化,然后进行信息融合。
融合代价体。文中提出融合多个低分辨率密集代价体(小于原始输入图像分辨率的1/4的代价体,代码中是1/8,1/16,1/32),以减少初始视差估计中不同数据集之间的域差异 (domain shifts)。很多工作都意识到多尺度代价体的重要性,但这些工作通常都认为低分辨率的代价体特征信息不足,无法生成准确的视差图,所以弃之不用。但文中认为不同尺度的低分辨率代价体可以融合在一起提取全局结构化表示,其生成的初始视差图更加准确(鲁棒)。具体的,在每个尺度上分别构建低分辨率成本体积,文中同时使用特征拼接(feature concatenation)和组相关(group-wise correlation)来生成融合代价体,公式如下:
接下来对代价体进行融合。如图7,首先对每个 cost volume 使用 4 个具有skip connection的 3D 卷积层(每个分支的前四个蓝色块)。使用stride = 2 的 3D 卷积将 scale3 的分辨率从 1/8 降到 1/16。然后将下采样后的 scale3 和 scale4 拼接再通过一个额外的 3D 卷积将特征通道缩放。继续采取类似的操作来逐步将 scale3 的 cost volume 下采样到原始输入图像分辨率的 1/32与 scale5进行信息融合 ,最后采用 3D 转置卷积对 cost volume上采样并对上采样后的 cost volume 利用特征信息进行细化。对细化后的 cost volume 进行视差回归(soft argmin operation)就可以得到初始视差图:
图7 成本代价体融合模块结构。三个低分辨率的成本代价体(i∈(3, 4, 5))被融合以生成初始差异图
级联代价体。有了初始化视差下一步就是构建高分辨率的cost volume,细化视差图。理想的视差概率分布应该是单峰的,即该位置属于某个视差的概率非常高、属于其它视差的概率非常低。然而视差的实际的概率分布主要是多峰,即对某个位置的视差不是很确定,这种情况常出现于遮挡、无纹理区域。文中提出定义一个不确定性估计来量化视差概率分布趋向于多峰分布的程度:
文中根据当前阶段的不确定性来计算下一阶段的视差搜索范围,具体公式如下:
根据均匀采样,得到下一阶段离散的平面假设深度:
当前SOTA!平台收录CFNet共3个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
CFNet | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/cfnet-2 |
5、 LSTM(RNN)
本文提出了一种对长时间存在的多线索依赖关系进行编码的在线追踪方法。其中,为了解决不能很好地对发生遮挡或具有相似外观环绕的目标进行区分追踪的问题,本文提出使用RNN架构、结合一定时间窗内的多线索来进行追踪的方法。通过该方法,我们可以修正数据关联的错误,以及从被遮挡状态中恢复原目标观测。本文证明了使用目标的外观、运动以及交互这三个方面来进行数据驱动的追踪算法的鲁棒性。
首先介绍外观模型(A)。外观模型主要用于解决重识别问题,同时还要能够处理遮挡和其他视觉问题。外观模型是一个基于CNN和LSTM结构的RNN,首先将不同帧数的轨迹目标图像传入CNN,得到500维的特征向量,然后将序列所有特征向量传入LSTM得到H维特征向量,接着将当前目标检测也传入CNN得到H维特征向量,连接两个H维特征向量并传入FC层得到k维判别外观的特征向量。最后的ϕA特征包含的信息是:基于target i 的长时外观特征以及detection j 的外观特征,判断两者是否属于同一目标。外观模型如图9:
图9 外观模型。输入是目标i从时间1到t的bounding box,以及我们希望比较的时间t+1的检测j。输出是一个特征向量φA,它编码了时间t+1的bounding box是否与时间1、2、...的特定目标i相对应。使用一个CNN作为外观特征提取器
其次介绍运动模型(M)。运动模型主要用于判断目标是否被遮挡或产生其他状况,其主要面临问题在于在遇到干扰的目标检测时会有不好的结果,因此本文使用LSTM来处理这类问题。除了CNN外,运动模型和外观模型的结构类似,唯有输入从图像变成了运动向量,该向量主要包括x,y两个方向的速率变化,其余输出的维度以及预训练的操作都保持不变。如图10。运动特征提取器(Motion feature extractor)所提取的2维速度特征v_{i}^{t}通过下式计算:
图10 运动模型,输入是目标的二维速度(在图像平面上)。输出是一个特征向量φM,用于编码速度v_{j}^{t+1}是否对应于真实轨迹v_{i}^{1}, v_{i}^{2}, .... , v_{i}^{t}
最后是交互模型(I)。交互模型主要用于处理目标与其周围事物的作用力关系。由于目标附近的其他目标数量是会发生变化的,为了使网络模型使用相同的输入大小,本文将每个目标的周围都建模成固定的"占有块"。和运动模型的结构相同,只有输入变成了"占有块图",其余皆不变。把每个目标的周围区域建模为一个固定大小的occupancy grid(可被占用的网格图,0/1)。交互特征提取器对以目标target为网格中心,生成一张网格图,并转化为向量表达。如果周围某物体的bbox中心落在网格(m,n)处,则网格(m,n)位置处标为1,不被占用的网格位置为0。网络结构如图11。数学公式表达为:
图11 交互模型,输入是跨时间的占用图(在图像平面上)。输出是一个特征向量φI,它编码了时间t+1的占用图是否对应于时间1、2、...t的占用图的真实轨迹
当外观模型、运动模型、交互模型分别提取出k维特征向量后,将这些特征向量拼接后作为target RNN(O)的输入。整个训练过程可以分为两步:
首先,分别独立预训练 A/M/I 三个子模块RNN模型,以及外观特征特征提取器CNN。外观特征提取器CNN先使用VGG-16的预训练权重 ,移除最后一个全连接层,添加一个500维的全连接层。然后用这个结构构造一个Siamese网络,在re-identification数据集上进行训练。最后再将这个训练完的CNN网络单独拿来用作特征提取,可以得到500维具有强区分度的外观特征。三个子模块RNN都用Softmax分类器进行0/1分类的预训练,即在RNN输出的k维特征上再加一个Softmax层,输出正类/负类的概率。这里我们定义,正类指输入的target i 和 detection j 属于同一物体,负类反之。
其次,联合训练 target RNN(O) 和前面提到的三个子模块RNN,即同时更新它们的网络参数,但CNN不再更新。这是一个端到端的训练过程,target RNN要求输出detection和target的相似度,使用Softmax分类器和交叉熵损失进行训练。
项目 | SOTA!平台项目详情页 |
---|---|
LSTM(RNN) | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/lstm-rnn |
前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及API等资源。
网页端访问:在浏览器地址栏输入新版站点地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。
移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID 「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。
微信扫码关注该文公众号作者