SiamRPN、SiamMask、UpdateNet、SiamAttn…你都掌握了吗?一文总结目标追踪必备经典模型(二)
机器之心专栏
本文将分 2 期进行连载,共介绍 10 个在目标追踪任务上曾取得 SOTA 的经典模型。
第 1 期:MDNet、SiamFC、ADNet、CFNet、LSTM(RNN)
第 2 期:SiamRPN、SiamMask、UpdateNet、SiamAttn、SiamGAT
您正在阅读的是其中的第 2 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
第 1 期回顾:MDNet、SiamFC、ADNet、CFNet、LSTM(RNN)…你都掌握了吗?一文总结目标追踪必备经典模型(一)
模型 | SOTA!模型资源站收录情况 | 模型来源论文 |
---|---|---|
SiamRPN | https://sota.jiqizhixin.com/project/siamrpn-2 收录实现数量:3 支持框架:PyTorch、MindSpore | High Performance Visual Tracking with Siamese Region Proposal Network |
SiamMask | https://sota.jiqizhixin.com/project/siammask 收录实现数量:5 支持框架:PyTorch,TensorFlow | Fast Online Object Tracking and Segmentation: A Unifying Approach |
UpdateNet | https://sota.jiqizhixin.com/project/updatenet 收录实现数量:1 支持框架:PyTorch | Learning the Model Update for Siamese Trackers |
SiamAttn | https://sota.jiqizhixin.com/project/siamattn 收录实现数量:1 支持框架:PyTorch | Deformable Siamese Attention Networks for Visual Object Tracking |
SiamGAT | https://sota.jiqizhixin.com/project/siamgat 收录实现数量:11 支持框架:PyTorch,TensorFlow、MindSpore | Graph Attention Tracking |
目标追踪是计算机视觉领域中非常热门且具有挑战性的研究领域之一。目标追踪是指在第一帧图像中给定待追踪目标的情况下,对目标进行特征提取,对感兴趣区域进行分析;然后在后续图像中找到相似的特征和感兴趣区域,并对目标在下一帧中的位置进行预测。目标追踪技术在导弹制导、智能监控系统、视频检索、无人驾驶、人机交互和工业机器人等领域都具有重要的作用。
目标追踪算法主要分为两类:第一类是生成式(generative)目标追踪算法,通过在线学习方式建立目标模型,然后使用模型搜索重建误差最小的图像区域,完成目标定位。这一类方法就是在当前帧对目标区域建模,下一帧寻找与模型最相似的区域并将其确定为预测位置,比较著名的有卡尔曼滤波,粒子滤波,mean-shift等。这类方法的主要问题是没有考虑目标的背景信息,没能有效利用图像信息。第二类是判别式(discrimination)模型,将目标追踪看作是一个二元分类问题,同时提取目标和背景信息(图像特征)来训练分类器,将目标从图像序列背景中分离出来(目标区域为正样本,背景区域为负样本),从而得到当前帧的目标位置。在处理下一帧时则利用训练好的分类器寻找最优区域。这类方法采用机器学习技术,在训练过程中使用背景信息,这样分类器就能专注区分前景和背景,效果较好。
2015年,深度学习技术开始进军目标追踪领域,使用深度学习技术可以更好的提取目标的特征,对目标进行更好的表达。不过,生成式的相关滤波技术在此之后依然不断发展,对边界效应的处理效果越来越好。也就是说,深度学习的模型并未完全取代或是完全胜出于传统的目标追踪方法,这也是这一领域的一大特点。深度学习方法应用于目标追踪任务面临的主要问题是:使用图像分类的大型数据集预训练模型,但是这种数据集与视频追踪所需的实际数据往往存在较大的差异,导致追踪误差较大;另外,随着深度学习网络层数的增加,算法的计算量增大,这会降低追踪过程中的实时性。一般来说,相关滤波技术的处理速度更快,深度学习方法的准确性更高。
本文聚焦于深度学习技术,回顾目标追踪中必备的深度学习TOP模型。本文提到的目标追踪均指单目标追踪SOT(Single Object Tracking)。
1、 SiamRPN
SiamRPN是商汤在2018年发布的工作。与SiamFC相似,SiamRPN同样具有孪生结构,两个分支的权重共享,两个分支分别输入一张图片,提取每张图片的特征。如下图所示,上面的Template Frame相当于模板图像,下面的Detection Frame相当于搜索图像。将两个图像输入CNN网络进行特征提取,然后输入互相关层。SiamRPN的网络结构如下图所示,主要包括Siamese Network和Region Proposal Network(RPN)两部分,Siamese Network用来提取图片特征,RPN用来预测目标的位置和置信度。
图1 SiamRPN的主要框架:左边是用于特征提取的孪生子网络。区域建议子网络RPN位于中间,它有两个分支,一个用于分类,另一个用于回归。采用配对相关法来获得两个分支的输出。这两个输出特征图的细节在右边。在分类分支中,输出特征图有2k个通道,分别对应于k个anchor的前景和背景。在回归分支中,输出的特征图有4k个通道,对应于4个坐标,用于对k个anchor的proposal进行细化
SiamRPN详细的网络结构如下,Siamese Network采用的是Alexnet特征提取网络。如图1所示,左边是孪生网络结构,上下支路的网络结构和参数完全相同,上面是输入第一帧的bounding box,靠此信息检测候选区域中的目标,即模板帧。下面是待检测帧,显然,待检测帧的搜索区域比模板帧的区域大。中间是RPN结构,又分为两部分,上部分是分类支路,模板帧和检测帧的经过孪生网络后的特征再经过一个卷积层,模板帧特征经过卷积层后变为2k×256通道,k是anchor数量,因为分为两类,所以是2k。下面是边界框回归支路,因为有四个量[x, y, w, h],所以是4k。
SiamRPN训练时整个网络的计算流程为:
首先,第一帧图片中截取尺寸为(127, 127, 3)的Template Image,下一帧图片中截取尺寸为(255, 255, 3)的Search Image,将Template和Search分别送入alexnet提取特征;
其次,Teamplate通过Alexnet提取特征后尺寸为(1, 256, 6, 6), Search通过Alexnet提取特征后尺寸为(1, 256, 22, 22);
第三,尺寸为(1, 256, 6, 6)的特征和尺寸为(1, 256, 22, 22)的特征,送入RPN网络的class分支,输出尺寸为(1, 10, 17, 17)的类别预测结果,其中,10表示5个anchor中每个anchor属于背景和目标类别的概率;
第四,尺寸为(1, 256, 6, 6)的特征和尺寸为(1, 256, 22, 22)的特征,送入RPN网络的box分支,输出尺寸为(1, 20, 17, 17)的位置回归结果,其中,20表示5个anchor中每个anchor的[x, y, w, h]偏移量。
为了使单目标检测框架适合于追踪任务,作者提出了两种选择方案的策略。
第一个区域选择策略是丢弃anchors产生的bounding box。由于相邻帧总是没有大的运动,因此丢弃策略可以有效地去除异常值。下图是在分类特征图中选择距离中心不超过7的目标anchors的图示。
图2 RPN特征图中中心大小为7的说明,每个网格代表相应位置上的k个anchor的编码特征。例如,在分类特征图中,有2k个通道代表前景和背景的激活。anchor的中心尺寸表示模型的搜索区域
第二种方案选择策略是使用余弦窗并通过尺度转换惩罚对提出的得分进行重新排序,以获得最佳分数。丢弃异常值后,添加汉明窗以抑制大位移。然后添加惩罚以抑制尺寸和比率的大变化:
SiamRPN的RPN网络中,在每个位置设置了5个anchor,宽高比分别为[3, 2, 1, 1/2, 1/3],由于最后网络的输出特征图尺寸为17*17,则共设置了1445(17x17x5)个anchor。需要注意的是,这些anchor的中心点对应search image中的位置并不是整个search image,只是search image中心128x128的区域,这是由于两帧图片时间间隔短,目标中心点移动后落在search image边界区域的概率较小。
最后,SiamRPN的loss函数包括分类损失cls_losses和坐标损失box_losses,cls_losses采用交叉熵损失函数,box_losses采用的是smooth_L1损失函数。
当前SOTA!平台收录SiamRPN共5个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
SiamRPN | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/siamrpn-2 |
2、 SiamMask
SiamMask是一个对视觉目标追踪和视频目标分割任务的统一框架,其基本思路是在siamese网络架构中额外增加一个Mask分支,如图3(a),同时增强网络的loss,优化网络。一旦网络训练好之后,Siammask完全依赖于单个边界框初始化并在线操作,以每秒55帧的速度生成类别不可知的对象分割Mask和旋转的Bounding Box。
图3 SiamMask变体的示意图:(a)三分支结构(全),(b)两分支结构(头)
但直接预测的Mask分支的精度并不太高。所以作者又提出了如下图所示的Refine Module用来提升分割的精度,refine module采用top-down的结构。
图4 叠加refine module示意图
由此,SiamMask的追踪算法思路为:首先,通过初始帧框定需要追踪的物体图像(记作template),用作后续帧(记作search)的检索依据;其次,将template和search同时输入Siameses Net,输出两个feature map,大小两个feature map做互相关(cross-correlated),得到RoW的feature map;接着,从上一步输出的feature map再送入一个简单的两层(1,1)卷积核的网络得到Two-branch或者Three-branch输出,各个branch主要是输出的通道数不一样,进而影响到任务的不同;最后,mask可以有两种方法生成,一个是base path生成方式,另一个是通过refine path生成。
当前SOTA!平台收录SiamMask共5个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
SiamMask | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/siammask |
3、 UpdateNet
UpdateNet旨在解决Siamese追踪系列一直存在的模板更新难题,提出了用学习更新模板的方式来替代手工更新模板的方式。UpdateNet使用一个卷积神经网络根据初始帧模板、当前帧模板以及上次计算出的模板直接生成下一帧可用的最优模板,通过学习这样一个网络函数来实现模板更新功能。本文提出的UpdateNet策略可以应用在任意的孪生网络追踪器中。
UpdateNet以初始帧模板、先前的累积模板和当前帧模板为网络的输入,通过skip connection将初始帧模板连到UpdateNet的输出以实现残差学习,最终输出对下一帧模板的预测。文章用新的学习更新策略来代替传统的更新策略,更新模板的公式如下所示:
学到的函数ϕ依据初始真值模板T_{0}^{GT}、之前的累积模板{T~}{i-1} 和从当前帧目标预测位置提取的模板T{i}进行计算。本质上,该函数通过融合由当前帧T_{i}给出的新信息来更新先前累积的模板{T~}{i-1} 。因此,基于当前模板和累积模板之间的差异,可以使ϕ 能够适合当前帧的特定更新需求。此外,它还在每帧中考虑初始模板T{0}^{GT},它提供了高度可靠的信息并提高了抵抗模型漂移的鲁棒性。将函数ϕ实现为一个卷积神经网络,它具有强大的表达能力和从大量数据中学习的能力。作者将此神经网络称为UpdateNet。
图5 UpdateNet的追踪框架概述。(左图) 物体模板的在线更新由UpdateNet执行,它接收初始的ground-truth模板、最后的累积模板和当前的预测模板作为输入,并输出更新的累积模板。(右图) 使用下一帧中与ground-truth物体模板的距离来训练UpdateNet
由图5,左边是模板更新的示意图,我们可以看出输入有三个模板,同时还用了残差链接。来自第0帧的模板加上新的模板得到最优的模板用于下一帧的预测。同时下一帧的预测,用到了上一帧的预测结果,把预测结果crop出来,送入提出特征的网络ϕ,得到T_i。
训练过程中的损失函数选择l2 loss ,与SiamFC相同。直接在两个相似图上进行回归即可。
当前SOTA!平台收录UpdateNet共1个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
UpdateNet | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/updatenet |
4、 SiamAttn
本文通过引入一种新的孪生网络注意力机制来计算变形自注意力和交叉注意力,提出了变形孪生注意力网络,称为SiamAttn。此外,还设计了一个区域细化模块,用于计算注意力特征之间的深度交叉相关,以实现更精确的追踪。
图6 SiamAttn概述。它由一个可变形孪生注意力(deformable Siamese attention,DSA)模块、孪生区域建议网络(Siamese region proposal networks,SiamRPN)和一个区域细化模块组成。提取后三个阶段的特征,然后由DSA模块进行调制。它产生的双流注意力特征被送入SiamRPN块,以预测一个单一的追踪区域,由细化模块进一步细化
如图6,SiamAttn整体流程较简单:a. 将模板和搜索区域输入骨干网络(Resnet-50)中提取特征;b. 通过DSA(deformable siamese attention)模块增强Resnet-50的第3-5层特征;c. 将第3-5层特征分别输入SiamRPN中得到响应图;d. 将得到的响应图进行加权融合,得到最终的响应图(与SiamRPN++一致);e. 通过该响应图得到分类得分和回归偏移;f. 根据回归偏移得到proposals;g. 将所有的proposal依次输入Region Refinement,得到一个更好的bbox和mask。
在DSA模块中,作者加入了自注意力模块(包括空间自注意力机制和通道自注意力机制)和交叉注意力模块。图18是其特征融合方式,输入是Resnet-50输出的特征图(包括模板和搜索区域),输出是融合后的特征图(包括模板和搜索区域)。融合流程及维度变换如下:
a. 输入来自骨干网络特定层的特征,记为X(C, H, W);
b. 以搜索区域分支为例,对于空间自注意力机制,对X使用1x1卷积得到query features,记为Q(C’, H, W),通过reshape得到Q‾ ( C ′ , N ) , N = H ∗ W \overline{Q}(C', N),N=H * W;
c. 对X使用1x1卷积得到key features,记为K(C’, H, W),通过reshape得到K‾ ( C ′ , N ) , N = H ∗ W;
d. 空间自注意力特征图如下:
通过矩阵相乘的方式即可得到指定维度的空间自注意力特征图;
e. 对X使用1x1卷积和reshape操作得到value features;
f. 对X使用reshape操作得到X ‾ ( C , N ) ;
g. 空间自注意力机制融合后的特征记为X 1 ( C , N ) = α V ‾ A + X ‾ ,通过reshape操作即可得到空间自注意力模块输出的特征图;
h. 同理可得到通道注意力模块和交叉注意力模块输出的特征图,值得注意的是,该交叉注意力模块将模板和搜索区域的特征融合,这些模块的维度处理方式与空间注意力机制类似;
i. 将这些注意力机制模块输出的特征图相加并使用可变形卷积得到最终的搜索区域特征图。
图7 DSA模块,由两个子模块组成:自注意力子模块和交叉注意力子模块。它将模板特征和搜索特征作为输入,并计算出相应的注意力特征。自注意力可以通过空间注意力学习强大的上下文信息,同时,用通道注意力选择性地强调相互依赖的通道性特征。交叉注意力聚合了目标模板和搜索图像之间丰富的上下文相互依赖关系
SiamAttn使用的损失函数如下:
作者进一步开发了区域细化模块,以提高预测目标区域的定位精度。首先在两个注意力特征之间应用跨多个阶段的深度交叉相关,生成多个相关图。然后,将相关图馈送到融合块,其中具有不同大小的特征图在空间域和信道域中对齐。此外,进一步执行两个额外的操作:(1)将前两个阶段的卷积特征合并到融合特征中,该融合特征编码更丰富的局部细节信息用于掩码预测;(2)应用可变形RoI池化层来更精确地计算目标特征。Bounding box回归和掩码预测通常需要不同级别的卷积特征。因此,生成空间分辨率为64 × 64的卷积特征用于掩码预测,空间分辨率为25 × 25的卷积特征用于Bounding box回归。
当前SOTA!平台收录SiamAttn共1个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
SiamAttn | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/siamattn |
5、 SiamGAT
基于Siamese网络的追踪器把视觉追踪看作是一个相似度匹配问题。几乎所有流行的Siamese追踪器都是通过在目标分支和搜索分支之间的卷积特征互相关实现相似性学习的。然而由于目标特征区域的小大需要预先确定,这些基于互相关的方法会保留大量不利的背景信息或丢失大量的前景信息。此外,目标与搜索区域之间的全局匹配在很大程度上会忽略目标的结构和部分信息。本文提出了一种简单的目标感知Siamese图注意力网络用于一般目标追踪。作者提出了一个用完全二部图建立目标与搜索区域之间的部分与部分的对应关系,并用图注意力机制将信息从模版特征传播到搜索特征。此外研究了一种目标感知的区域选择机制来适应不同对象的大小和长宽比变化,而不是使用预先固定的区域裁剪来进行模版-特征-区域选择。
图8 方法概述。(a) SiamGAT的网络结构。它由三个主要部分组成:用于特征提取的孪生子网络,用于目标信息嵌入的图注意力模块,以及用于目标定位的分类-回归子网络。(b) 图注意力模块说明。每个搜索节点的表示是通过聚合所有相邻的目标节点的信息与注意力机制来重建的。目标节点的数量不是固定的,而是通过目标感知的区域选择机制随不同的目标模板而变化
将feature map中的每个1∗1∗c格点看做一个节点(node),并且通过下式计算两个节点之间的correlation score:
然后计算target graph
中所有点对search graph
中每个点的注意力:
最后根据下式计算得到response map
:
作者对于输入到图注意力网络的target feature
进行了特殊处理:
即只取目标所在bbox中的target feature,而对于bbox之外的设置为0,这样做的目的是可以过滤不必要的背景信息同时不丢失目标信息。最后对于backbone,这篇论文选用了GoogLeNet,GoogleNet能够以更少的参数和更快的推理速度来学习多尺度特征表示。
当前SOTA!平台收录SiamGAT共11个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
SiamGAT | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/siamgat |
前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及API等资源。
网页端访问:在浏览器地址栏输入新版站点地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。
移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID 「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。
微信扫码关注该文公众号作者