单目标追踪——【孪生网络】SiamMask论文阅读笔记

目录

  • 发现问题
  • 受到启发
  • 实现
    • 整体构想思路
    • 网络结构
      • 特征提取部分
      • 目标定位部分
        • SiamMask-2B——SiamFC定位法
        • SiamMask-3B——SiamRPN定位法
      • Mask生成方法
        • 方法一
        • 方法二——refinement模块

论文链接:SiamMask
SiamFC
SiamRPN

发现问题

1、追踪的预测目标位置定义不同精度也会不同。(用旋转矩形框描述目标位置比坐标轴对齐的矩形框更精确)
2、VOS算法的第一帧需要给定目标的mask,这在人机交互的场景中很难时间,这个mask获取成本过高。
3、视频物体分割(VOS)领域的大多数方法的速度慢,难以满足实时性。

受到启发

1、离线训练的全卷积的孪生网络SiamFC在VOT-2015上保持58fps追踪速度。
2、YouTube-VOS数据集——一个基于像素标记的视频集。
3、保持离线训练+在线速度+改进目标的表示(BoundingBox → mask)

实现

实现部分包括整体构想思路、网络结构

整体构想思路

1、用三个任务训练一个孪生网络,这三个任务的目标不同,对应了不同的针对目标与候选区域建模策略。任务一用来估计目标的位置,任务二和任务三用来估计目标的尺度大小。

  • 任务一:参照SiamFC,用滑动窗口的方式学习目标与多个候选目标的相似性。【输出:密集相应图(标记目标可能所在的中心位置,而不估计目标的尺度信息)】
  • 任务二:参照SiamRPN利用区域候选网络(RPN)对目标边界框进行回归。
  • 任务三:生成前后景(类无关)的二值分割(mask)。
    任务二与任务三同时学习。

网络结构

单目标追踪——【孪生网络】SiamMask论文阅读笔记_第1张图片
单目标追踪——【孪生网络】SiamMask论文阅读笔记_第2张图片

SiamMask在论文中有两个结构:

  • SiamMask-3B表示SiamMask的完整结构,图像经过特征提取之后,经过三个分支,分别得出目标候选框的确定性分数(是否前后景)、目标的候选框的位置(x, y, w, h)、目标的mask生成。(图1)
  • SiamMask-2B表示SiamMask的两分支简化结构,图像经过特征提取之后,经过两个分支,分别得出目标的mask生成、目标的位置估计(用了SiamFC中的损失函数)。(图2)

特征提取部分

论文中将ResNet50作为Backbone,具体参数如表所示:
单目标追踪——【孪生网络】SiamMask论文阅读笔记_第3张图片
其中adjust层降低了特征维度(1024->256),xcorr表示用exemplar对Search区域进行Depth-wise互相关操作,输出一个包含丰富信息的特征图。这里有一个重要的概念RoW,表示候选窗口的响应。例如最后互相关操作之后得到的特征图为17 * 17 * 256。则一共有17 * 17个RoW,每一个RoW是1 * 1 * 256的向量。这个向量蕴含了丰富模板与候选窗口的信息。凭借此信息,我们可以对其做1x1卷积得出分类和坐标轴回归的结果、或者解码出mask的信息。

目标定位部分

SiamMask-2B——SiamFC定位法

单目标追踪——【孪生网络】SiamMask论文阅读笔记_第4张图片

在SiamMask-2B的网络结构中,Score分支就是参照SiamFC的损失函数定义一个交叉熵损失函数来进行二分类,生成的一个17 * 17的置信度分数矩阵。这个矩阵就对应着17 * 17 * 256特征图中这17 * 17个RoW窗口的置信分数,经过分数惩罚等一系列操作(为了使预测出置信度高的位置不要偏离上一帧太远–防止误追)我们选取置信分数最高的对应的那一个1 * 1 * 256的RoW生成mask。

SiamMask-3B——SiamRPN定位法

单目标追踪——【孪生网络】SiamMask论文阅读笔记_第5张图片
在SiamMask-2B的网络结构中,Box分支和Score分支就是参照SiamRPN。对于17 * 17 * 256特征图来说,一共有17 * 17个RoW,以每个RoW为中心,对应到原图中,生成k个不同纵横比的anchor(可以看作候选框)。对anchor的边界框进行预测,则有17174k个输出;对anchor的分类(是否包含目标)进行预测,有17172k个输出。

Mask生成方法

方法一

将选取的1 * 1 * 256经过两个1 * 1的卷积层调整深度到1 * 1 * (63 * 63)。
流程如下:

  • Reshape+Sigmoid:生成63*63的二值classifier矩阵,用于判断这个矩阵的某一个值是否属于mask。
  • 等比例地将63*63大小的mask矩阵仿射变换回原图中被选中用于Search的区域。
  • 用给定阈值0.5过滤,Search中的矩阵得到目标分割。
  • 通过最小外接矩形生成(MBR)生成旋转矩形框。

方法二——refinement模块

作者提到,直接这样预测mask的方式得到的精度并不太高,所以提出了如下图所示的Refine模块U来提升分割的精度:在原始的响应图上对每个RoW不采用升维到63x63的方式,而是直接对conv_5的1 * 1 * 256的RoW进行deconv(反卷积)、与backbone生成的Search region的ResNet50的结果相加耦合,上采样得到mask。利用ResNet50的阶段性结果生成mask会更准确,因为这些结果里面保持了较低层的特征。
单目标追踪——【孪生网络】SiamMask论文阅读笔记_第6张图片
说了这么多,QQ快给我喝口水~

你可能感兴趣的:(SOT,论文阅读,深度学习,计算机视觉,人工智能,目标跟踪)