MDNet训练与在线跟踪过程

MDNet: Learning Multi-Domain Convolutional Neural Networks for Visual Tracking

简介:该文章是用来进行视觉跟踪的。由于当前的CNNs需要大量的数据才能有可观的性能,而有标注的视频数据太少,并且在不同的视频中前景和背景的定义不同,故作者提出了MDNet,通过在最后一层设置多个分支来学习目标之间的共有特征。

 

 

 

 

 如图所示,在训练时每个视频应一个分支,该分支是一个2分类的全连接层,用来输出该区域为前景和背景的得分。而在测试时,移除掉所有分支,新建一个全连接层fc6,接在前面的层上,并且在线更新fc4、fc5、fc6的参数。

从源码总结训练过程:

  1. 首先读取到所有序列要训练的图片和gt,gt文件每一行有4个值,表示左上角坐标以及宽高。若有8个值,则是4个点的坐标,将其变换为4个值。然后读取配置文件。
  2. 根据读取到的序列确定分支数K,然后为每个序列定义一个样本生成器。
  3. 初始化模型,设置哪些层的参数要更新。定义损失函数以及优化器。
  4. 开始训练过程,代码中设置一共训练50次。打乱分支的顺序,然后按新顺序对序列进行训练。在对每个分支训练时,先打乱图片的顺序,样本生成器每8帧在gt位置生成32个正样本和96个负样本,每个样本的shape为(3,107,107),作为模型的输入。在一个epoch中,每个序列只用8帧进行训练。而在下一个epoch时,选每个序列下一个8帧生成的正负样本。正样本定义为与gt的iou在[0.7,1]之间,负样本定义为与gt的iou在[0,0.5]之间。
  5. 将正样本和负样本送入模型得到损失,然后将损失进行反向传播来更新每一层的参数。

从源码总结测试过程:

  1. 根据args获取到测试序列的所有图片序列,第一帧目标位置以及所有图片目标的gt(可有可无)。
  2. 初始化模型,读取训练好的模型文件。设置可以更新的参数为fc层的参数,即卷积层的参数固定不动。
  3. 读取第一帧,从第一帧的目标位置附近采样得到500个正样本和5000个负样本。
  4. 将这些正负样本送入训练好的模型中,得到其第3层的正负样本特征。
  5. 对上面得到的正负样本特征进行训练。在训练时,正样本的batchsize=32,负样本的batchsize=1024。在这1024个负样本中进行hard example mining,即将这些负样本特征送入模型的fc4,计算出其得分,然后按照从大到小的顺序,取前96作为真正的负样本。
  6. 将正负样本特征送入模型fc4,得出正样本得分和负样本得分。然后根据这些得分进行反向传播,更新参数。这样通过第一帧所得到的样本进行对网络参数的微调。
  7. 从第一帧的位置生成1000个样本,用来训练边框回归器。
  8. 然后开始遍历所有的帧,从上一帧的位置采样得到256个满足高斯分布的样本,计算出这256个样本的得分,取出前5名,然后用这5个样本的平均值代表当前帧的目标位置。
  9. 用上面得到的5个bbox的得分的平均值是否大于0表示跟踪成功。若成功了,利用之前训练好的回归器来回归边框位置。若失败了,则不回归,用得到的bbox作为最后结果。
  10. 当跟踪成功时,在该帧收集正负样本的特征,当正负样本的特征总数达到某个定值时,将最前面的删掉。这些特征用来进行跟踪失败时的短期网络更新以及定时的长期网络更新。

原文算法:

 

转载于:https://www.cnblogs.com/liualexsone/p/11461656.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值