关于人工智能:SiamFC用于目标跟踪的全卷积孪生网络

4次阅读

共计 2402 个字符,预计需要花费 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 中了每个点的损失:

$$
l(y,x)=log(1+exp(-xy))
$$

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

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

$$
L(y,v)=\frac{1}{|D|}\displaystyle \sum_{u\in D}l(y[u],v[u])
$$

这里的 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 函数公式如下:

$$
RELU(x)= \begin{cases} x, & \text {if x>0} \\ 0, & \text{if x<0} \end{cases}
$$

图像如下:

sigmod 函数

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

sigmoid 函数表达式如下:

$$
f(x)=\frac{1}{(1-e^{-z})}
$$

图像如下:

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

代码的路

正文完
 0