写点什么

SiamFC:用于目标跟踪的全卷积孪生网络 fully-convolutional siamese networks for object tracking

作者:代码的路
  • 2023-01-11
    江苏
  • 本文字数:2027 字

    阅读完需:约 7 分钟

原文链接

SiamFC 网络

<



图中 z 代表的是模板图像,算法中使用的是第一帧的 ground truth;x 代表的是 search region,代表在后面的待跟踪帧中的候选框搜索区域;ϕ代表的是一种特征映射操作,将原始图像映射到特定的特征空间,文中采用的是 CNN 中的卷积层和 pooling 层;6×6×128 代表 z 经过ϕ后得到的特征,是一个 128 通道 6×6 大小 feature,同理,22×22×128 是 x 经过ϕ后的特征;后面的×代表卷积操作,让 22×22×128 的 feature 被 6×6×128 的卷积核卷积,得到一个 17×17 的 score map,代表着搜索区域中各个位置与模板相似度值。


算法本身是比较搜索区域与目标模板的相似度,最后得到搜索区域的 score map。其实从原理上来说,这种方法和相关性滤波的方法很相似。其在搜索区域中逐点的目标模板进行匹配,将这种逐点平移匹配计算相似度的方法看成是一种卷积,然后在卷积结果中找到相似度值最大的点,作为新的目标的中心。


上图所画的ϕ其实是 CNN 中的一部分,并且两个ϕ的网络结构是一样的,这是一种典型的孪生神经网络,并且在整个模型中只有 conv 层和 pooling 层,因此这也是一种典型的全卷积(fully-convolutional)神经网络。


在训练模型的时肯定需要损失函数,并通过最小化损失函数来获取最优模型。本文算法为了构造有效的损失函数,对搜索区域的位置点进行了正负样本的区分,即目标一定范围内的点作为正样本,这个范围外的点作为负样本,例如图 1 中最右侧生成的 score map 中,红色点即正样本,蓝色点为负样本,他们都对应于 search region 中的红色矩形区域和蓝色矩形区域。文章采用的是 logistic loss,具体的损失函数形式如下:


对于 score map 中了每个点的损失:



其中 v 是 score map 中每个点真实值,y∈{+1,−1}是这个点所对应的标签。


上面的是 score map 中每个点的 loss 值,而对于 score map 整体的 loss,则采用的是全部点的 loss 的均值。即:



这里的 u∈D 代表 score map 中的位置。


整个网络结构类似与 AlexNet,但是没有最后的全连接层,只有前面的卷积层和 pooling 层。



整个网络结构如上表,其中 pooling 层采用的是 max-pooling,每个卷积层后面都有一个 ReLU 非线性激活层,但是第五层没有。另外,在训练的时候,每个 ReLU 层前都使用了 batch normalization(批规范化是深度学习中经常见到的一种训练方法,指在采用梯度下降法训练 DNN 时,对网络层中每个 mini-batch 的数据进行归一化,使其均值变为 0,方差变为 1,其主要作用是缓解 DNN 训练中的梯度消失/爆炸现象,加快模型的训练速度),用于降低过拟合的风险。

AlexNet


AlexNet 为 8 层结构,其中前 5 层为卷积层,后面 3 层为全连接层;学习参数有 6 千万个,神经元有 650,000 个。AlexNet 在两个 GPU 上运行;AlexNet 在第 2,4,5 层均是前一层自己 GPU 内连接,第 3 层是与前面两层全连接,全连接是 2 个 GPU 全连接;


RPN 层第 1,2 个卷积层后;Max pooling 层在 RPN 层以及第 5 个卷积层后。ReLU 在每个卷积层以及全连接层后。


卷积核大小数量:


  • conv1:96 11×11×3(个数/长/宽/深度)

  • conv2:256 5×5×48

  • conv3:384 3×3×256

  • conv4: 384 3×3×192

  • conv5: 256 3×3×192


ReLU、双 GPU 运算:提高训练速度。(应用于所有卷积层和全连接层)


重叠 pool 池化层:提高精度,不容易产生过度拟合。(应用在第一层,第二层,第五层后面)


局部响应归一化层(LRN):提高精度。(应用在第一层和第二层后面)


Dropout:减少过度拟合。(应用在前两个全连接层)

微调(fine-tune)

看到别人一个很好的模型,虽然针对的具体问题不一样,但是也想试试看,看能不能得到很好的效果,而且自己的数据也不多,怎么办?没关系,把别人现成的训练好了的模型拿过来,换成自己的数据,调整一下参数,再训练一遍,这就是微调(fine-tune)。


冻结预训练模型的部分卷积层(通常是靠近输入的多数卷积层),训练剩下的卷积层(通常是靠近输出的部分卷积层)和全连接层。从某意义上来说,微调应该是迁移学习中的一部分。

感知机:PLA

多层感知机是由感知机推广而来,感知机学习算法(PLA: Perceptron Learning Algorithm)用神经元的结构进行描述的话就是一个单独的。


感知机的神经网络表示如下:


多层感知机:MLP

多层感知机的一个重要特点就是多层,我们将第一层称之为输入层,最后一层称之为输出层,中间的层称之为隐层。MLP 并没有规定隐层的数量,因此可以根据各自的需求选择合适的隐层层数。且对于输出层神经元的个数也没有限制。


MLP 神经网络结构模型如下,本文中只涉及了一个隐层,输入只有三个变量[x1,x2,x3]和一个偏置量 b,输出层有三个神经元。相比于感知机算法中的神经元模型对其进行了集成。


ReLU 函数

ReLU 函数公式如下:



图像如下:


sigmod 函数

sigmod 函数在趋于正无穷或负无穷时,函数趋近平滑状态。因为输出范围(0,1),所以二分类的概率常常用这个函数。


sigmoid 函数表达式如下 :



图像如下:



学习更多编程知识,请关注我的公众号:


代码的路



发布于: 刚刚阅读数: 3
用户头像

代码的路

关注

公众号:代码的路 2023-01-10 加入

Java、Python、C++、图像处理、深度学习相关知识分享

评论

发布
暂无评论
SiamFC:用于目标跟踪的全卷积孪生网络 fully-convolutional siamese networks for object tracking_图像处理_代码的路_InfoQ写作社区