SiamRPN

2019-06-13  本文已影响0人  aaon22357

SiamFC的缺点:

Siamese的方法只能得到目标的中心位置,但是得不到目标的尺寸,所以只能采取简单的多尺度加回归,这即增加了计算量,同时也不够精确。

本文的改进:

SiamFC+ RPN Network,输出两个分支,分别用于分类和回归(SiamFC没有回归,而是用多尺度测试,增加了计算量且不够精确),帧率160fps(不需要在线微调),端到端,单目标跟踪

SiamRPN网络结构:

【训练阶段】:

回顾Faster RCNN中的RPN结构(Faster RCNN 学习笔记 - 勇者归来 - 博客园):

【跟踪阶段】:(类似于one-shot detection任务)

训练部分

在SiamFC中加入了RPN,构成了SiamRPN。网络分为两部分,Siamese特征提取部分,以及RPN的proposal生成。

1. Siamese特征提取部分与SiamFC相同,用的是去掉了padding的AlexNet,

2. RPN部分,模板分支用于分类的部分是4*4*2k*256,检测分支用于分类的部分是20*20*256,通道数是不同的,那么是怎样进行互相关操作的呢?答案是分组!看结构图,最右边虚线连接的部分就是分组的示意图。由于有k个anchor,每个anchor输出的是前景背景的二分类结果,因此将4*4*2k*256拆成2k个4*4*256,分别与20*20*256做互相关(其实就是卷积操作,4*4是卷积核的大小),得到的就是17*17*2k。用于回归的部分同理,回归的四个坐标分别为dx,dy,dw,dh(anchor相比于groundtruth的偏移量)

其他关键点:

1. Loss:cross-entropy loss 用于分类,smooth L1 loss with normalized coordinates 用于回归。

2. 训练方法:随机梯度下降

3. 数据增强: 包括affine transformation(仿射变换)在内的数据增强

4. anchor数量: 一共五个,one scale, 5 ratios([0.33, 0.5, 1, 2, 3])

5. 正负样本选择策略:设置高低两个阈值,大于0.6的为正样本,小于0.3的为负样本,一个pair中有64个样本,其中正样本最多16个(We also limit at most 16 positive samples and totally 64 samples from one training pair.)


跟踪部分(Inference):One-shot detection

One-shot Learning 的损失函数以及背后的几何直观 - 秘塔科技技术分享 - SegmentFault 思否

one-shot learning的意思就是说,对于一个类别,如果只提供一个或者少量训练样本的情况下,如何检测?解决方法就是:让模型学习,得到一个相似性函数,这样的模型输出的值不是类别,而是两幅图像的相似度。

基于Siamese的跟踪问题,其实就是one-shot detection,只有第一帧给定目标位置,要求从视频序列的其他帧中找出目标位置。跟踪步骤:

1. 输入模板帧和检测帧,分别使用siamese提取特征,使用RPN生成k个proposal(k是anchor的数量,本文是5)

2. 对模板分支的proposal和检测分支的proposal做相似性度量,获得bounding box

3. 使用NMS对最后预测输出的bounding box进行筛选

4. 目标尺寸更新(使用线性插值的方法)

proposal选择策略:

1. 丢弃远离中心的proposal(认为相邻帧的目标位置不会发生很大的变化,而模板帧的目标是在中间的)

2. 使用余弦窗和尺度变化惩罚因子对proposal进行重新排序(余弦窗和尺度变化惩罚因子是沿用了SiamFC的做法)

3. 使用NMS对最后预测输出的bounding box进行筛选。

上一篇下一篇

猜你喜欢

热点阅读