单目标跟踪方法-D3s
共 6233字,需浏览 13分钟
·
2021-11-27 04:05
作者: 晟 沚
现有跟踪算法中存在的问题
对于目标定位的搜索问题仅适用于目标的低维变换(平移、尺度放缩),不能有效地解决更为常见的变换(横纵比改变、旋转等)
现有方法用基于采样的搜索或者边界框回归方式对目标框的横纵比进行估计,受到矩形框自身的限制(需要与坐标轴对齐)
当边界框不能很好地表示目标时,基于模板的变换估计不一定可靠。比如当目标自身伸展时,矩形边界框为了包含完整的目标,会圈入很多无关的背景信息。目标在旋转时也是类似,不同切面的外观之间差异很大。简单来说就是模板难以充分地表达目标的各种可能的外观。在面对这些情况时,逐像素分割能够实现更准确的定位,于是跟踪问题转变为了视频物体分割问题。
视频物体分割一直依赖无法直接用于跟踪,一般起到的是辅助作用,这是因为视频物体分割要解决的问题是短时长(100 帧以内)视频中的大物体分割,而在跟踪中,目标的外观变化差异很大,并且会在杂乱的背景当中移动,直接将视频分割用于跟踪会导致无法恢复的跟踪失败。
SiamRPN 的问题。SiamRPN 生成高质量分割掩码图的过程分为两步,一是通过 SiamRPN 分支定位边界框,二是通过另一个分支在这个边界框区域中计算掩码图,这种两步过程将定位和分割步骤分开,没有将二者联合利用提高鲁棒性(存疑:两个任务一起如何提高鲁棒性?)。另一个问题是固定的模板难以适应变化的场景(一般是通过模板更新解决这个问题)。
设计理念
使用两个视觉模型 GEM(geometrically constrained Euclideanmodel)和 GIM(geometricallyinvariant model)表示目标,几何位置模型和几何不变模型,一个约束目标移动的位置,一个约束目标的形状,二者结合后能够为分割提供可靠的样本
GIM 牺牲空间相关性换取在目标外观显著变化条件下预测边界框大小的能力,GEM 只负责确定边界框的位置(中心点),二者并行计算,最后融合输出。
经过网络的一次传播,D3S 的主要输出是一个分割图(热力图),是仅用于分割端到端训练的。
D3S 可将分割图转换为带有旋转的矩形,替代原来容易出错的贪婪搜索方法。
D3S 未经过传统边界框跟踪的训练,并且没有根据不同的数据集进行重训练,具有优异的泛化能力和灵活性。
算法流程
a. 将第一帧输入骨干网络提取特征
b. 将提取的特征分别输入GIM模块和GEM模块,通过GIM模块得到前景和背景信息,通过GEM模块得到定位信息
c. 将三者通过Concat融合,然后输入refinement得到第一帧mask和bounding box
d. 在跟踪时,使用骨干网络提取待跟踪帧搜索区域的特征
e. 将提取的特征输入GIM模块,通过与第一帧搜索区域比较得到像素级的前景相似度和背景相似度
f. 取每个像素相似度最高的前K个,然后分别求平均得到该帧的前景相似度和背景相似度
g. 重复c即可得到该帧的mask和boundingbox
网络结构
D3S 模型分为 3 个部分:GEM、GIM 和 Refinement模块。
在模板匹配的方法中,基于轴对称的矩形框是一种不够精确的表征方式,不能够表达部分非轴对称物体的外观特征,当后续帧中物体的宽高比发生大幅变化、物体旋转或者有非刚性形变时,会由于模板信息与后续帧差异过大而难以匹配。最准确的定位方式其实是像素级别的前景背景mask分割。在现有结合分割的跟踪算法中,流程大致是先定位再分割,只在目标范围内计算mask,这样没有充分发挥分割对跟踪的辅助作用。而顶尖的分割算法也有一定的局限性,难以应对部分遮挡,外观的大幅频繁的变换以及在杂乱背景上的移动的问题,这一定程度上限制了分割在跟踪问题上的应用。
本篇文章提出了两个互补的模块GIM(gemetrically invariant model)和GEM(gemetrically constrained euclidean model)。其中GIM牺牲了目标的位置约束,可以在目标有高度形变的前提下定位,GEM对目标进行位置约束,在GIM分割目标不唯一的情况下对结果进行筛选。
GIM
流程
a.将骨干网络提取的特征输入该模块
b. 通过1x1和3x3卷积使特征适应该模块
c. 在第一帧target的每个像素上提取分割特征向量作为XF,在第一帧target附近的区域(搜索区域中非target部分)的每个像素上提取分割特征向量作为 XB
d. 在跟踪时提取待跟踪帧searchregion的像素级特征,记为 XGIM
e. 通过XGIM计算前景相似度和背景相似度
f. 取每个像素相似度最高的前K个,然后分别求平均得到该帧的前景相似度和背景相似度
GIM 负责对目标的形态进行估计,以分割的方式给出目标所占的空间范围(区分前景背景)。为了更加精确地分割可变形的目标(视频中目标的外观是不断变化的),判断区域内前景(目标)和背景的空间约束不能太严格,因此 GIM 的输出由和前景背景分别对应的深度特征组成。
GIM 模块首先将输入经过一个1x1和 3x3的卷积,目的是 1.降维 2.将 backbone 输入的特征进行调整,使其更适合于分割任务(YOLO 中同样提出过类似的说法)。紧接在 backbone 后的卷积层起到类似于缓冲的作用,因为训练时 backbone 网络的参数是固定的,不进行更新。
初始的前景/背景模型在第一帧中通过抽取像素级标注数据建立,得到XF和 XB,二者是紧密相邻的。
每个像素位置产生的特征向量都要和前景和背景通道进行计算,每个像素位置产生多条特征向量,分别与前景/背景通道参数点乘(L2 正则化)得到一批相似度值,每个像素位置与前景/背景的相似度值为前 k 个相似度值的平均值。像素位置相似度值的计算过程对于前景和背景是完全一样的,也就是每个像素位置都有前景相似度值和背景相似度值两个值(较为宽松的判断前景背景的空间约束)。除此之外,通过将全部像素位置的前景相似度值和背景相似度值进行softmax计算,得到目标的后验通道 。从 GIM 模块继续向后传播的通道只有前景相似度F 和后验通道P。
GIM的设计如上图。XF 是完全由第一帧的bbox中的内容得到的,分布是前景的部分值大背景值小。 XB 则是搜索区域中全部背景特征,分布是背景值大前景值小。跟踪帧的图像过网络,在经过1*1卷积降维,3*3卷积增强语义表达,得到的特征分别与XF XB做相关,结果取前k张做平均得到最终的响应图F和B。B与 XB 相似程度高的部分被突出,其他部分被抑制,因此B基本上代表了图像的背景信息,同理F代表前景信息。这两张特征图concate起来做softmax,P选取的是softmax后表示前景的那一张特征图。由于softmax具有把大的数值放大,小的压低的特性,因此B中的响应越高,就会把F处的响应压得更低,这种做法可以理解为经过两次确认,F,B互为补充,取得到最优的部分作为最终的前景区域,这样得到的前景区域更为精细。
GEM
流程
a. 将骨干网络提取的特征通过1x1卷积降维
b. 将降维后的特征使用相关滤波思想得到响应图
c. 计算响应图中最大响应的位置到搜索区域中剩余像素的欧式距离,得到目标位置通道
GIM可以将背景和前景完善的分离出来,但是缺乏相似目标的区分能力,它牺牲了目标的位置约束,可以在目标有高度形变的前提下定位。
DCF 具有很好的判别性质,因此为了提高算法的判别能力,GEM 的前半部分直接移用了 ATOM 中的 DCF 结构。但由于 DCF 算法只用到了最大响应值,而 D3S 的输出需要确定每个像素位置上是否出现了目标(每个像素的类别是目标还是背景),因此需要对 DCF 输出的响应图进行进一步处理。GIM 处理的方式就是将 DCF 产生的响应图转换为响应图上每个点到最大响应值的距离图,图上的每个点的值就是在响应图上这个响应点到最大响应值点之间的欧式距离值。
GEM其实就是一个对目标的位置约束,可以帮助网络从若干的GIM分割出的目标中选出最可能是目标的一个。通过ATOM算法从第一帧可以学到一个比较判别力的filter,他和跟踪帧作卷积可以得到一个比较可靠的响应图。然后计算最大响应点到其他位置的欧式距离得到最后的L,也就是说距离定位到的目标越远,欧式距离越大,惩罚越大,而中心的惩罚最小。D3F依靠这样一个响应图模型对GIM中分割出来的前景进行筛选。
Refinement pathway
流程
a. 将GIM和GEM模块输出的特征通过Concat融合
b. 使用3x3卷积固定其channel为64
c. 然后通过上采样模块提高分辨率,并与骨干网络中的特征通过相加得到融合特征
d. 重复c,最后通过Softmax得到mask
结合 GIM 和 GEM 的输出,将两个模块的优势互补,并对低分辨率的结果进行上采样,得到更为准确的输出。
将 GEM 的输出目标位置通道L和 GIM 的输出前景相似度通道 F和后验通道 P进行拼接,用 3x3的卷积核进行处理。
在上采样部分将backbone 网络中不同层的输出拼接到输入中,可以实现细节上的优化。每次上采样都将输入分辨率翻倍,随后接2 个 3x3的卷积。从 GEM 和 GIM 模块得到的输入经过上采样后与 backbone 网络中特定层的输出进行相加,将细节内容加入到特征中。backbone 特定层的输出并不是直接使用,而是先经过 1 个 3x3的卷积后再与经过上采样的特征相加。
最后一个上采样步骤中只有一个 3x3的卷积,上采样后的输出也没有和 backbone 的输出相加,而是后接 1 个 softmax 层生成最终的分割概率图结果。
结合下图, 得到了目标位置图L,前景响应图F,后验前景响应图P,将他们concate起来通过一个U-net的结构。得到L,P,F的过程视为encoder,上采样恢复分辨率的过程视为decoder。其中L的大小与搜索区域相同,需要降采样到和P,F相同。由于降采样再升采样的过程可能会导致大物体的边缘和小物体本身的丧失,所以需要一些语义程度低但分辨率高的底层特征加以补充,因此在升采样的过程中,还与resnet的conv-1,Layer-1,Layer-2的内容叠加,用于复原在高层语义特征图上可能丢失的特征。最后特征图的分辨率恢复到与原图相同,经过softmax得分高的部分作为最后分割的前景,得分低的部分作为背景,然后拟合生成旋转的边界框。
下图展现的是D3S的整体框架。
训练过程
初始化
D3S在跟踪过程中,只有第一帧的信息被给出。经过标注的第一帧图像用于初始化 D3S 模型,初始化的具体方式取决于提供的标签是矩形边界框还是分割掩码图。
其中模块GEM的初始化方法与ATOM相同,使用轴对齐的bbox标注进行初始化。
GIM的初始化要稍微复杂一些,如果第一帧有给定分割掩码,则使用分割掩码进行初始化, GEM 首先将掩码图中的目标区域进行沿轴的矩形估计,随后按照ATOM 中的进行初始化。GIM 将分割图中的目标像素作为前景样本,目标周围 4 倍大小的非目标像素作为背景样本。
但是在大多数跟踪数据集中并没有分割的标注。因此对于没有分割标注的数据集,GIM的初始是使用网络预测的mask进行初始化, 即根据矩形边界框的内容构建一个近似的分割掩码图,将矩形框内的像素作为前景样本,矩形框外 4 倍于矩形框大小的周围区域作为背景样本,随后在 D3S 上进行跟踪迭代,推断得到一个近似的分割掩码图,D3S 为了速度和简洁,只进行了 1 次迭代。具体方法如下:将搜索区域的图片crop出来过主干网络的得到特征,作为训练帧和测试帧的特征,第一帧bbox所在位置每个像素值取1,其他取0作为输入网络的掩模,由第一帧目标所在位置得到高斯图L,这三个部分输入网络得到预测的mask,来用作为网络的分割标注的初始化。在产生分割标注的过程中,由于多次迭代并没有明显的提升,为了保证效率作者只取了一次迭代。注意,如果初始帧的标注是旋转的边界框时,由于旋转的标注要比轴对齐的标注更为紧实,因此需要对由旋转标注得到输入网络的掩模进行膨胀操作,使得这种约束稍微放松一些,然后与经过网络后得到的mask相乘,得到最终用作初始化的mask。
跟踪过程与之前的跟踪器类似,跟踪帧在上一帧目标所在位置裁剪出四倍目标大小过网络,经过图5之后得到预测的mask,在迭代生成最后框准的旋转矩形框。
跟踪阶段
当得到新的一帧图像时,根据上一帧中的目标位置,裁剪出 4 倍于目标大小的区域作为新的样本,随后将样本送入 D3S 网络中得到分割掩码图,通过边界框转换模块将掩码图转换为所需的矩形框(普通/旋转),将这个矩形框作为这一帧的跟踪结果。GEM 中的 DCF 根据估计得到的新目标位置通过反向传播进行更新。GIM 不进行更新(GIM 负责区分前景背景,GEM 负责区分类似物体,GEM需要更新以保持鲁棒性)。
边界框转换
D3S 通过输入第一帧的训练样本,可以给出后续帧的目标分割概率图,概率图不能直接作为跟踪结果,需要进一步处理为明确的矩形区域范围对目标的大小位置进行标记,得到最终的跟踪结果。这个转换过程可以将分割概率图转换为普通的矩形,也可以转换为旋转矩形,取决于数据集的要求。
分割概率图的概率阈值设定为 0.5,概率图上以 0.5 为界分为两类,得到二类分割掩码图,保留掩码图中的最大连通域,用最小二乘法拟合为椭圆,其中的椭圆形区域为目标区域。将椭圆区域匹配为矩形的方法是通过椭圆的焦点和长短轴实现,如此可以得到对目标的旋转矩形匹配。
但是在上面的做法中,只考虑到了尽可能让前景像素进入BBox,但没有考虑边界框内背景像素的数量。因此作者设计了一个指标来迭代生成最好的BBox。
NIN+ NOUT+ 分别表示矩形区域内和矩形区域外的前景像素个数, NIN- 表示矩形区域内的背景像素个数,alpha起到一定的调制作用。
整个边界框匹配过程极快,平均只需 2ms 时间。
性能
在VOT的实验结果如下:
end
机器学习算法工程师
一个用心的公众号
进群,学习,得帮助
你的关注,我们的热度,
我们一定给你学习最大的帮助