本文主要是介绍【图文详解】SiamFC++与图注意力的强强联合:单目标追踪系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.研究背景与意义
随着计算机视觉技术的不断发展,单目标追踪(Single Object Tracking, SOT)作为计算机视觉领域的一个重要研究方向,已经在许多实际应用中得到了广泛的应用。单目标追踪系统可以通过分析视频序列中的目标运动,实时地跟踪目标的位置和形状变化,从而在许多领域中发挥重要作用,如智能监控、交通管理、无人驾驶等。
然而,由于目标在视频序列中的外观变化、遮挡、光照变化等因素的影响,单目标追踪任务仍然面临许多挑战。为了解决这些问题,研究者们提出了许多不同的方法和算法。其中,基于深度学习的方法在单目标追踪任务中取得了显著的进展。
SiamFC(Siamese Fully Convolutional Networks)是一种基于孪生网络的单目标追踪方法,它通过将目标和背景分别编码为两个特征图,并通过计算它们之间的相似度来实现目标的跟踪。然而,SiamFC在处理复杂场景和目标变化时仍然存在一些问题,如目标遮挡、光照变化等。
为了进一步提高SiamFC的性能,许多研究者提出了各种改进方法。其中,图注意力单元(Graph Attention Unit)是一种有效的注意力机制,可以在图结构数据上学习目标的相关性和重要性。将图注意力单元引入SiamFC模型中,可以提高模型对目标的关注度,从而提高单目标追踪的准确性和鲁棒性。
因此,本研究的主要目标是基于图注意力单元的改进SiamFC++的单目标追踪系统。通过引入图注意力单元,我们希望能够提高SiamFC模型在复杂场景和目标变化下的追踪性能。具体来说,我们将设计一种新的网络结构,将图注意力单元嵌入到SiamFC模型中,以提高模型对目标的关注度和区分度。同时,我们还将探索不同的注意力机制和损失函数,以进一步提高模型的性能。
本研究的意义主要体现在以下几个方面:
-
提高单目标追踪的准确性和鲁棒性:通过引入图注意力单元,我们希望能够提高SiamFC模型在复杂场景和目标变化下的追踪性能。这将有助于提高单目标追踪系统在实际应用中的准确性和鲁棒性。
-
探索图注意力单元在单目标追踪中的应用:图注意力单元是一种有效的注意力机制,可以在图结构数据上学习目标的相关性和重要性。通过将图注意力单元引入SiamFC模型中,我们可以探索其在单目标追踪任务中的应用,为后续的研究提供新的思路和方法。
-
推动深度学习在单目标追踪中的发展:深度学习在计算机视觉领域取得了巨大的成功,但在单目标追踪任务中仍然存在一些挑战。本研究将探索基于图注意力单元的改进SiamFC++的单目标追踪系统,有助于推动深度学习在单目标追踪中的发展,提高其在实际应用中的效果和性能。
总之,本研究的目标是基于图注意力单元的改进SiamFC++的单目标追踪系统。通过引入图注意力单元,我们希望能够提高SiamFC模型在复杂场景和目标变化下的追踪性能,推动深度学习在单目标追踪中的发展,为实际应用提供更准确、鲁棒的单目标追踪解决方案。
2.图片演示
3.视频演示
基于图注意力单元的改进SiamFC++的单目标追踪系统_哔哩哔哩_bilibili
4.基于多特征融合的实时单目标追踪算法
近年来,随着计算机技术和光学成像技术的快速发展,计算机视觉引起学界的广泛关注。日益增长的社会需求也对计算机视觉的现实应用提出了更高的要求。单目标追踪作为计算机视觉的重要研究方向之一,在研究过程中除了追求准确性之外也要保证实时性,才能有效提高现实适用性。本章针对实时单目标追踪问题,利用双边加权最小二乘模糊支持向量机,提出了基于多特征融合的实时追踪算法FSCFI4]。在所提算法中,针对基于局部HOG特征的分类器,利用相关滤波框架克服计算复杂度高的矩阵求逆运算,并通过多基样本扩充训练数据和背景信息;针对基于全局颜色特征的分类器,利用独热编码的数值化优点实现快速计算。在公开数据集上的实验结果表明:与已有的高性能单目标追踪算法相比,所提FSCF算法在形变、快速运动、运动模糊等多个方面均表现出了更优的追踪性能。
本章的结构如下:在第3.1节中,首先简要介绍了基于双边加权最小二乘模糊支持向量机的FST算法;在第3.2节和第3.3节中,分别详细介绍了所提的基于局部HOG特征和全局颜色特征训练的双边加权最小二乘模糊支持向量机;在第3.4节中,介绍了所提两个分类器的融合方法;第3.5节是实验设计及结果分析;第3.6节是全章工作的小结。
双通道网络
图像相似度计算是计算机视觉和图像分析中最基本的任务之一,在诸多视觉任务中发挥着尤为重要的作用[2-4]。在CVPR2015上,Zagoruyko等在一篇关于计算图像相似度的论文中提出双通道网络(2-channel network),其核心思想在于把孪生网络的双分支合并在一起[5]。孪生网络和双通道网络的网络架构图如图所示。孪生网络,又称为双分支网络(2-branches network),其网络结构是由两个共享参数的分支组成。与孪生网络不同,双通道网络的体系结构中没有直接的特征描述符概念。Zagoruyko 等是把孪生网络的双分支合并在一起,将输入的两张单通道的灰色图像合并为一张双通道图像,例如,原本输入的patch1、patch2的维度均为(127,127,1),合成后的双通道图像维度则为(127,127,2)。然后,将双通道图像经过特征提取器得到特征向量。特征提取器在底层网络中,由一系列卷积、ReLU和最大池化层组成。最后,将这部分的输出作为输入提供给线性决策层。该线性决策层仅由具有1个输出神经元的全连接层组成,输出值表示输入图像对的相似度。
5.核心代码讲解
5.1 Graph_Attention_Union.py
class Graph_Attention_Union(nn.Module):def __init__(self, in_channel, out_channel):super(Graph_Attention_Union, self).__init__()self.support = nn.Conv2d(in_channel, in_channel, 1, 1)self.query = nn.Conv2d(in_channel, in_channel, 1, 1)self.g = nn.Sequential(nn.Conv2d(in_channel, in_channel, 1, 1),nn.BatchNorm2d(in_channel),nn.ReLU(inplace=True),)self.fi = nn.Sequential(nn.Conv2d(in_channel * 2, out_channel, 1, 1),nn.BatchNorm2d(out_channel),nn.ReLU(inplace=True),)def forward(self, zf, xf):xf_trans = self.query(xf)zf_trans = self.support(zf)xf_g = self.g(xf)zf_g = self.g(zf)shape_x = xf_trans.shapeshape_z = zf_trans.shapezf_trans_plain = zf_trans.view(-1, shape_z[1], shape_z[2] * shape_z[3])zf_g_plain = zf_g.view(-1, shape_z[1], shape_z[2] * shape_z[3]).permute(0, 2, 1)xf_trans_plain = xf_trans.view(-1, shape_x[1], shape_x[2] * shape_x[3]).permute(0, 2, 1)similar = torch.matmul(xf_trans_plain, zf_trans_plain)similar = F.softmax(similar, dim=2)embedding = torch.matmul(similar, zf_g_plain).permute(0, 2, 1)embedding = embedding.view(-1, shape_x[1], shape_x[2], shape_x[3])output = torch.cat([embedding, xf_g], 1)output = self.fi(output)return output
这个程序文件是一个名为Graph_Attention_Union的神经网络模型类。它继承自nn.Module和ABC类,并包含了一些卷积层和线性变换层。
这个模型类的初始化函数接受两个参数:in_channel和out_channel,分别表示输入通道数和输出通道数。在初始化函数中,定义了一些卷积层和线性变换层,用于对输入数据进行线性变换和特征提取。
模型的前向传播函数forward接受两个输入zf和xf,分别表示搜索区域节点和目标模板节点。在前向传播过程中,首先对输入数据进行线性变换,然后进行消息传递操作,计算相似度,并根据相似度计算嵌入特征。最后,将嵌入特征和xf的特征进行拼接,并通过一个卷积层得到最终的输出。
整个模型的目的是实现图注意力机制,用于处理图结构数据的特征提取和聚合。
5.2 SiamFC_plus.py
class FeatureExtraction(nn.Module):def __init__(self):super(FeatureExtraction, self).__init__()self.conv1 = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1)self.conv2 = nn.Conv2d(64, 128, kernel_size=3, stride=1, padding=1)self.conv3 = nn.Conv2d(128, 256, kernel_size=3, stride=1, padding=1)def forward(self, x):x = F.relu(self.conv1(x))x = F.relu(self.conv2(x))x = F.relu(self.conv3(x))return xclass SiamFCNet(nn.Module):def __init__(self):super(SiamFCNet, self).__init__()self.feature_extraction = FeatureExtraction()self.head_cls = nn.Conv2d(256, 1, kernel_size=1, stride=1)self.head_reg = nn.Conv2d(256, 4, kernel_size=1, stride=1)def forward(self, z, x):z_feat = self.feature_extraction(z)x_feat = self.feature_extraction(x)cls_score = F.conv2d(x_feat, z_feat)reg_score = F.conv2d(x_feat, z_feat)cls_score = self.head_cls(cls_score)reg_score = self.head_reg(reg_score)return cls_score, reg_scoreclass SiamFCLoss(nn.Module):def __init__(self):super(SiamFCLoss, self).__init__()def forward(self, cls_preds, reg_preds, cls_targets, reg_targets):cls_loss = F.binary_cross_entropy_with_logits(cls_preds, cls_targets)reg_loss = F.smooth_l1_loss(reg_preds, reg_targets)combined_loss = cls_loss + reg_lossreturn combined_loss
这个程序文件是一个用于目标跟踪的Siamese网络的实现。它包含了三个主要的模块:特征提取模块、Siamese网络架构和损失函数。
特征提取模块(FeatureExtraction)是一个简单的卷积神经网络,它包含了三个卷积层,用于从输入图像中提取特征。
Siamese网络架构(SiamFCNet)包含了一个特征提取模块和两个头部(Classification head和Regression head)。特征提取模块用于提取目标和搜索图像的特征,然后通过卷积运算计算出两者之间的相关性。头部部分分别用于分类和回归任务,其中分类头部输出目标是否存在的概率,回归头部输出目标的位置。
损失函数(SiamFCLoss)定义了Siamese网络的训练损失。它包含了两个部分:分类损失和回归损失。分类损失使用二元交叉熵损失函数,用于衡量分类结果的准确性。回归损失使用平滑L1损失函数,用于衡量目标位置的准确性。最后,将分类损失和回归损失相加得到综合损失。
这个程序文件提供了一个基本的Siamese网络实现,可以用于目标跟踪任务的训练和推理。
6.融合双通道网络和 SiamFC 的 SiamFC_plus 算法
双通道网络和孪生网络最大的区别在于,孪生网络是在最后的全连接层中才将两张图片的相关神经元关联在一起,而双通道网络则是从最初就将输入的两张图片联系在一起。与孪生网络相比,双通道网络共同处理了两个patch,提供了更大的灵活性。通过实验,Zagoruyko等证明了双通道网络不仅训练速度更快,而且模型精度更高[5]。
在单目标追踪的深度学习算法研究中,针对以SiamFC为代表的孪生网络类算法离线训练阶段中在相似度度量学习问题上的瓶颈,考虑到双通道网络在度量学习上具有高效性和鲁棒性,本节将双通道网络引入到单目标追踪领域中,提出了一个融合双通道网络和 SiamFC的实时单目标追踪算法SiamFC_plus。所提SiamFC_plus 算法的网络框架如图所示。
模型的输入是一个目标原型图像(Exemplar Image)和一个更大尺寸的搜索区域图像(Search Image)。在搜索区域图像上,与目标原型图像大小一致的滑动窗口被视为实例,即为候选区域。目标和实例的坐标距离小于阈值时对应类标为正,否则为负。记目标原型图像为z,搜索区域图像为x。SiamFC_plus将目标追踪看作是嵌入空间上的相似性学习问题,旨在学习一个相似性度量函数f(x, z),函数f通过比较目标原型图像z和搜索区域图像x,返回目标响应图(Response Map) o:u cZ2。具体过程如下:首先,以z为滤波器,对x的各个颜色通道进行互相关操作,从而将这两张尺寸不同的图像融合在一起;再将这部分输出直接作为输入,传送到CNN特征提取器中提取深度特征;然后,经由决策层输出每个候选区域的得分构成目标响应图o。该决策层是线性决策层,由一个不含有激活函数的全连接层组成。最后,将响应图中分数最高的位置通过双三次插值算法(Bicubic Interpolation)映射到搜索区域中,从而可确定目标的所在位置。
网络训练过程使用的是由目标原型图像和搜索区域图像组成的图像对。SiamFC_plus 的损失函数为hinge损失函数加上L2正则化项,公式如式(4-1)所示。对比交叉嫡损失函数关注全局的所有样本,hinge损失函数更关注类别难以区分的部分样本,对学习有着更严格的要求。在同等的理想条件下,hinge损失函数能使模型具有更优的泛化性能。网络参数包括每层网络的权重和偏置,考虑到精确拟合偏置所需的数据量通常要比权重少许多,正则化偏置参数可能会导致明显的欠拟合,故只对权重做正则惩罚,而不对偏置做正则惩罚。
其中,a为正则化参数,0为网络参数,y[u]∈{—1,+1}为单个原型-实例对在目标响应图的每个位置u ∈ u上所对应的真实类标,o[u]为其对应的网络输出。网络中所使用的特征提取器是全卷积神经网络,该网络应用于目标追踪中只需要输入搜索区域的图像即可转换为各个子窗口的相似度得分,避免在检测时输入多个候选区域并逐个计算。与SiamFC算法一致,网络中的CNN特征提取器是基于Krizhevsky等提出的AlexNet 网络所构建的特征提取器[8]。在预处理阶段,将目标模板图像的尺寸缩放为1271273,搜索区域图像则缩放为2552553,以目标模板图片为滤波器,对搜索区域图片逐层进行互相关操作后所得的融合图片尺寸为1291293。特征提取阶段的具体网络结构如表6-1所示。
表6-1 SiamFC plus算法特征提取阶段的网络结构
网络参数0则通过随机梯度下降法计算得出。
网络的训练过程由前向传播过程和后向传播过程组成。前向传播过程是依照从前往后的顺序,从输入层开始经由隐藏层到达输出层,逐层计算出每个网络层的激活值。得到网络输出值后,将其代入损失函数中即可计算损失值。反向传播过程则是依照从后往前的顺序,从输出层开始经由隐藏层到达输入层,逐层计算出每个网络层的误差项,进而计算各层网络参数的梯度,最后根据梯度值更新各层网络参数。
7.SiamFC_plus 的前向传播
网络的前向传播过程是按照从前往后的顺序,从输入层开始经由隐藏层到达输出层,逐层计算出各个网络层的激活值,最后得到网络输出值。网络一共有L=9层,结合表6-1可知其中包括了1个输入层,5个卷积层,2个池化层,1个全连接层。记上标表示样本序号,下标表示网络层号,星号*表示卷积运算,*a表示每个颜色通道上的互相关操作,W表示权重,b表示偏量,o表示ReLU激活函数,Pool表示重叠最大池化法。第1层是输入层,输入目标模板图像z和搜索区域图像x,以z为滤波器,在每个颜色通道上对x做互相关操作,其输出为:
8.SiamFC_plus 的反向传播
完成前向传播过程后,开始进行网络的反向传播。反向传播过程是按照从后往前的顺序,从输出层开始经由隐藏层到达输入层,逐层计算出每个网络层的误差项,进而计算各层网络参数的梯度,最后根据梯度值更新各层网络参数。记下标表示层数,星号*表示卷积运算,〇表示Hadamard积(矩阵点乘),rot180表示翻转180度,即将矩阵上下翻转一次以及左右翻转一次。通过公式的损失函数计算输出层的误差项为:
9.网络结构
以往的跟踪器都通过模板分支和搜索分支之间的互相关实现相似性学习。原算法的作者认为这种方式存在以下缺点:
以往跟踪器一般是以目标中点为中心取m*m大小的区域作为模板,这会导致提取到部分背景信息或者丢失部分目标信息。本文只提取目标所在bbox区域作为模板帧。
以往跟踪器互相关是将提取到的模板特征在搜索区域上做全局搜索,无法适应旋转、姿态变化、遮挡等情况。
GAM:提出图注意力模块(Graph Attention Module),有效将目标信息从模板特征传递至搜索特征。
SiamGAT:在SiamCAR基础上做了改进,设计 target-aware 的选择机制以适应不同目标的大小和长宽比变化。
整体网络结构如图,特征提取使用GoogleNet,头部和SiamFC++一样。
10.系统整合
下图完整源码&数据集&环境部署视频教程&自定义UI界面
参考博客《基于图注意力单元的改进SiamFC++的单目标追踪系统》
这篇关于【图文详解】SiamFC++与图注意力的强强联合:单目标追踪系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!