一、知识点补充
OTB中的评价指标
( 1)one-pass evaluation(OPE)
这是目标追踪领域常用的评估方式,只给第一帧ground truth没有随机性的算法只跑一遍就可以。
(2)precision plot
追踪算法估计的目标位置(bounding box)的中心点与人工标注(ground-truth)的目标的中心点,这两者的距离小于给定阈值的视频帧的百分比。不同的阈值,得到的百分比不一样,因此可以获得一条曲线。
该评估方法的缺点:无法反映目标物体大小与尺度的变化(所以用的比较少)
(3)success plot
首先定义重合率得分(overlap score,OS),追踪算法得到的bounding box(记为a),与ground-truth给的box(记为b),重合率定义为:OS = |a∩b|/|a∪b|,|·|表示区域的像素数目。当某一帧的OS大于设定的阈值时,则该帧被视为成功的(Success),总的成功的帧占所有帧的百分比即为成功率(Success rate)。OS的取值范围为0~1,因此可以绘制出一条曲线。而这条曲线的AUC(Area Under Curve)就是曲线与横坐标之间的面积,也是一个衡量指标。
VOT中的评价指标
(1)EAO
VOT中的一个评价指标,后面补充
多目标跟踪算法
(1)算法概述
多目标跟踪算法按照轨迹生成的顺序可以分为离线的多目标跟踪和在线的多目标跟踪算法。
离线方式的多目标跟踪算法通常构造为图模型。其中,设计和计算检测之间的相似度或者距离度量是决定图模型构造正确性的关键。在线方式的多目标跟踪算法根据当前检测观测,计算与已有轨迹的匹配关系。
基于Siamese对称网络的目标追踪算法是一种检测匹配度量学习算法。例如,以两个尺寸相同的检测图像块作为输入,输出为这两个图像块是否属于同一个目标的判别。
MDNet像RCNN一样,先产生proposal,然后再用proposal在原图上提取特征。改进后的MDNet类似于Faster RCNN,先提取特征,再在提取到的feature map上找到ROI区域。而RT-MDNet就是在MDNet的基础上引入了ROIAlign,并且引入内嵌实例的loss。
(2) MDNet算法
MDNet采用了小型的CNN网络,主要原因有三点:
1)追踪过程中的分类只需要区分前景和背景
2)大型CNN因为网络层数较多,在输出端已经失去很多空间信息,很难判断目标在图像中的位置
3)MDNet需要在线更新网络,CNN较小的话更新的也会更快
MDNet算法主要包括两个部分,离线学习和在线跟踪。离线学习部分是训练一部分参数,在线追踪的时候再训练另一部分参数。MDNet可以实现实时的跟踪,根据前一帧的bbox输出,会以高斯分布随机方式生成256个候选bbox,得到positive score值最大的bbox,再用边框回归的参数去调整bbox。
参考链接:MDNet算法原理
(3)RT-MDNet算法
提出基于MDNet的快速且准确跟踪算法
(1)通过感受野的高分辨特征图来区分目标和背景,通过改进RoIAlign加速特征提取,
(2)在嵌入空间中,通过mutli-task损失有效地区分目标,对具有相似语义的目标加入了具有辨别力的参数。
结果:与MDNet相比速度提高了25倍,精度几乎相同。
(4)Siamese-FC算法
把首帧中的目标提取物当做是检测帧的卷积核,这样一来,卷积操作就是在检测帧中找到和首帧目标相似的目标,通过输出的Feature Map的分数来体现,最后的输出就是一张17×17的score map。
整个训练的过程就是为了得到φ.图中的*表示的是相关滤波,就是用上面的Feature Map去卷积下面的Feature Map,可以得到17×17的概率分布表。
但是Siamese-FC有一些问题:
(1) bbox的大小一直不会变,视频中的目标由远及近等情况的时候,会在图像中变大,但bbox框并不会变大。
(2)容易检测错误对象,比如跟踪人的时候,有另一个人走过来,bbox可能立马框到别人。这是因为供于提取特征的数据过于单一(首帧)。
(5)Siamese-RPN算法
模板帧使用的是视频的第一帧,检测帧是视频流中的某一帧。SiamRPN的前一部分和SiamFC一样,都是通过一个全卷积网络提取高层特征。不同的是SiamFC把输出直接用来做相关滤波,而SiamRPN是接入一个RPN网络。
二、摘要
虽然之前有很多研究表明CNN很难抵抗住对抗攻击,但是很少有人研究怎么构建用于防御对抗攻击的追踪算法。目前很多的对抗攻击和防御的研究都是在单个图片上。在这篇工作中,作者尝试在视频序列中产生对抗样本,并且进而提出鲁棒性的追踪算法。作者在产生轻量的对抗扰动的时候,将时序信息也考虑在内。一方面,作者将时序的扰动添加到原始的视频序列中,来降低追踪算法的性能;另一方面,作者也评估了在输入序列中加入扰动后给追踪带来的影响,并且通过恢复原始的追踪器来消除这个影响。作者最后将对抗攻击和防御方法应用在最先进的追踪算法上。在benchmark数据集上的良好表现表明了这个防御方法不仅可以消除对抗攻击带来的影响,同时还可以获得优于未被攻击的追踪算法的性能(这里的意思是,加了防御的追踪算法甚至优于没有被攻击的原始追踪算法,看看后面怎么说)。源码在https://github.com/joshuajss/RTAA中。
三、Introduction
最近几年,CNN在许多的视觉任务中都取得了优异的表现。但是,也有很多人使用对抗样本来攻击CNN模型。在输入图片上添加细微的扰动会使得预训练的CNN模型分类失败。对抗攻击已经应用在包括图片分类,目标检测,语义分割,面部识别等诸多领域。目前的对抗攻击和防御主要是针对静态的单张图片,很少有人将重点放在对一系列视频序列帧的攻击上,因为帧与帧之间的运动一致性会给研究带来很大的挑战。
这篇文章主要研究一个当前最先进的追踪器(state-of-the-art deep tracker),这个追踪器是把目标追踪当做是一连串的目标检测问题,从而对每个目标检测问题区分目标(target)和背景(background)。在我们的研究中,我们没有修改已有的追踪结果。 在本文对抗攻击的过程中,作者先学习一个对抗扰动,并且注入到图片中从而产生一个难以被区分的样本;然后再使用这些样本来重新训练CNN分类器,从而降低分类器的性能。(怎么感觉这里有点像投毒攻击呢,像是在污染训练样本。)具体而言,作者是通过最小化真实的样本和被注入对抗扰动的样本之间的分类误差。 在考虑到不同帧之间的时序一致性的时候,作者使用当前帧学习到的对抗扰动来初始化下一帧的对抗扰动学习,通过在每一帧产生扰动从而降低整个追踪器的性能。除了CNN分类器,现有的追踪器还广泛的使用回归网络来生成bounding box框。作者首先尝试随机的移动和缩放ground truth框来攻击回归网络。攻击bounding box的位置跟现有的目标检测对抗攻击很不一样,因为对于目标检测的攻击需要考虑到误分类。Fig 1这张图展示了在主流的追踪器上的对抗攻击效果。
接下来作者进一步考虑提高追踪器的鲁棒性从而抵御对抗攻击。因为此时的对抗扰动是未知的,所以作者的想法是评估输入视频的未知扰动,并且来消除扰动带来的影响。
四、Contribution
这篇文章的贡献主要有以下几点:(感觉这些贡献,归根结点就是说,没什么人做,但是我做了并且有效果,这个意思)
(1)作者通过产生对抗样本,可以很好的评估现有的追踪算法的鲁棒性,并且通过向输入视频帧注入对抗扰动可以有效的降低追踪准确率。
(2)作者提出了对于追踪的对抗攻击,并且提出了防御的方法。
(3)作者在主流的追踪器上做了攻击和防御的实验,发现可以取得很好的效果。
五、相关工作
(1)视觉追踪
现有的目标追踪方法可以分为两种:one-stage的基于回归的方法,two-stage的基于检测的方法。基于回归的方法主要是,基于CNN特征来学习相关滤波器,从而对目标物体进行定位。很多方法都用来从不同方面来提高追踪算法的性能,这些方法包括 feature hedging(不知道是啥?),连续卷积(continuous convolution),粒子过滤器集成(particle filter integration),有效卷积(efficient convolution),时空正则化(spatiotemporal regularization),roi pooling(这个在Faster RCNN中也有)。另外,有很多端到端的回归网络,作用是直接预测响应图(response map),从而对目标物体进行定位。
另一方面,两阶段的tracking-by-detection方法都是,先产生很多个候选框,然后再对每一个候选框进行判别是目标还是背景。有代表性的tracking-by-detection方法有,多领域学习(multi-domain learning),整体学习( ensemble learning),对抗学习,往复学习( reciprocative learning),overlap最大化等。最近 Siamese追踪器很盛行,因为它在,在线推断(online inference)的时候有很高的效率。 Siamese追踪器和其他的tracking-by-detection方法的主要区别在于,Siamese追踪算法不会在线更新CNN模型,但是其他的方法是需要的。 这篇文章在两个有代表性的追踪器上做了对抗攻击和防御,一个是不需要在线更新CNN模型的Siamese追踪器,一个是需要在线更新CNN模型的基于检测的追踪算法。
(2)对抗攻击和防御
对抗攻击主要包括两种:黑盒攻击和白盒攻击。还可以分为两类:物理攻击和非物理攻击。
防御模型可以被认为是,通过对抗样本使得模型可以更加鲁棒。对抗样本会通过生成噪声来干扰网络的推断过程。(为什么这里又变成干扰推断了,前面不是干扰训练吗??)通过解噪(denoise)可以消除对抗攻击带来的影响。同时,图片变成了不可微,从而可以来抵抗对抗攻击。(这是什么意思??)**本文同时攻击分类和回归模块。**并且在没有修改现有的追踪器的基础上消除攻击带来的影响。
六、对抗攻击算法
(1)对抗攻击的输入:视频序列中每一个视频帧,第一帧的带有标签的bounding box。(注意这里只需要输入第一帧的标签值)
(2)对抗攻击的输出:对抗样本
(3)防御阶段是评估未知的对抗扰动,并且消除这些扰动给原始的输入序列带来的影响(这里的评估怎么理解??)
(4)对抗样本的产生
对抗样本的产生是基于输入帧和追踪器的输出结果(分类分数classification score和回归图regression map)。在tracking-by-detection架构中,追踪算法通常是分成两部分,第一部分是将候选框分类成目标或者是背景,第二部分是将候选框的坐标位置进行回归。(所以可以看出来,目标追踪和目标检测是不同的,检测是需要对目标物体的类别进行确定,追踪是只需要区分前景和背景就行。)
以I作为输入帧,以N作为proposal候选的number标号,Lc作为二元分类的分类损失,Lr作为bounding box回归损失,pc是分类标签,pr是回归标签。pc和pr都是基于上一帧的追踪结果
S
t
−
1
S_{t-1}
St−1,
S
1
S_1
S1是第一帧的ground-truth标签值。tracking-by-detection网络的损失函数如下:
本文是产生一个假的分类标签
p
c
∗
p_c^*
pc∗和假的回归标签
p
r
∗
p_r^*
pr∗。对抗攻击的目标是使得,不管是使用真实的标签,还是虚假的标签,二者的Lc和Lr都是一样的。 (这里不理解啊,啥意思??)损失函数如下:
并且θ(也就是网络参数)是固定的,因为CNN是在推断(inference)的阶段。需要对
L
a
d
v
L_{adv}
Ladv进行最小化,这样就可以使得CNN的预测输出接近于假的标签值,意思是预测得到假的预测值。对比之前我看到的对抗攻击的损失函数都是要让预测的标签值和真实的标签值之间的距离比较小,这二者有什么区别呢??
L
a
d
v
L_{adv}
Ladv反映了真实标签和虚假标签之间的损失值相似度。
在
p
c
∗
p_c^*
pc∗中,有两个元素,分别代表输入属于目标target和背景background的概率值(probability)。直接反转
p
c
p_c
pc中的概率值就可以得到
p
c
∗
p_c^*
pc∗,以此来干扰分类。
p
r
p_r
pr中有四个元素
x
r
x_r
xr,
y
r
y_r
yr,
w
r
w_r
wr,
h
r
h_r
hr来表示目标的位置。直接通过在
p
r
p_r
pr的基础上添加一个随机的距离偏移值来得到
p
r
∗
p_r^*
pr∗。
p
r
∗
p_r^*
pr∗的产生过程如下:
通过将
L
a
d
v
L_{adv}
Ladv对输入I求偏导数,可以得到r如下:
给定输入帧I,作者通过迭代M次来产生最后的对抗扰动。最后一次迭代的输出被添加到输入帧中,如下所示(其中的m和m+1指的都是迭代轮数,指的在计算某一帧的对抗结果时,迭代的公式。):
α =
e
M
\frac{e}{M}
Me,e是扰动的最大值,这里的
α
\alpha
α是一个不变的权重值。e是某一帧添加的扰动的最大值,因为每一帧都要迭代M次,所以每一次迭代的扰动变化就是
e
M
\frac{e}{M}
Me。这个公式就很像梯度上升过程中的参数变化公式。
这里的
α
s
i
g
n
(
r
m
)
\alpha sign(r_m)
αsign(rm)就相当于是第m次迭代产生的扰动。 最后的对抗样本是
I
M
I_M
IM。
为了将时序连续性考虑进去,作者将上一帧学习到的扰动作为下一帧的初始值。例如,为了得到添加扰动后的第t帧,作者使用t-1帧的扰动来初始化第t帧。(注意这里
I
1
t
I_1^t
I1t中的1是迭代轮数,t是第t帧。)可以看到,
I
M
t
−
1
−
I
1
t
−
1
I_M^{t-1}-I_1^{t-1}
IMt−1−I1t−1就是第t-1帧迭代了M轮次产生的扰动大小。
整个的算法过程如下:
(这个算法中的IOU metric不是很理解,pc和pr的标签值是怎么得到的??当前帧的标签值都是基于上一帧的追踪结果,是不是为了保证追踪的每一帧之间的时序性,追踪不是单纯的由多个检测组成,而是要注意每一帧检测结果之间的连续性。)
七、对抗防御算法
对抗防御的思想好像就是直接把扰动从原始的视频帧中去掉??在防御的时候不需要更新CNN。
很有一种,防御就是把攻击加进去的东西都取出来的感觉。
防御的输入:含有未知对抗扰动的视频帧I
首先通过第t-1帧的预测位置
S
t
−
1
S^{t-1}
St−1来得到当前t帧的正确标签和假标签。每一帧的迭代过程如下所示(其中的r还是上面计算得到的梯度,\beta是一个常量权值。Trunc()函数可以把括号里面的值约束在-
α
^
\hat{\alpha}
α^到
α
^
\hat{\alpha}
α^中,其中的
α
^
\hat{\alpha}
α^l类似于前面公式(5)中的
α
\alpha
α。)
第t帧的第一次迭代的初始化过程如下:
对抗防御的算法如下:
对抗防御的算法,整体看下来,感觉就是把对抗攻击中的添加都变成去除??
八、使用的追踪器介绍
现有的tracking-by-detection方法包括两个阶段:在第一个阶段,追踪器直接使用离线的预训练CNN模型,并不会对模型进行更新;第二个阶段,追踪器会收集之前帧的样本从而来更新模型。本文的实验基于如下两个追踪算法:
(1)DaSiamRPN
追踪的时候不会对模型进行更新。
(2)RT-MDNet
追踪的时候会对模型进行更新。
作者提到,之所以要在这两个追踪器上做实验,是因为对于RT-MDNet这种会对模型进行在线更新的算法,自身可能就会有防御对抗攻击的能力,这里我的理解是因为RT-MDNet这类算法当前帧的追踪结果是会基于前面帧的结果的,所以对当前帧贴对抗补丁,可能会被前面帧的结果所纠正。
在攻击和防御的过程中,对抗扰动的变化过程如下所示,可以看到,随着对每一帧图片的迭代,对抗扰动也一直在发生变化。这个图像是3D响应图:
九、实验
作者在benchmark数据集上做攻击和防御,所有实验都是基于上述 DaSiamRPN和RT-MDNet这两个追踪器。在攻击过程中,每一个像素的最大变化值被设置成10(e=10);在防御过程中,每一个像素的最大变化值被设置成5(e=5)。
作者一直在强调,在攻击和防御的过程中,追踪器的参数都是被固定好的,因为是要在inference推断的时候来让追踪器做出错误的推断。在看了作者提供的源码后,大概明白为什么说追踪器的参数在攻击的过程中没有被更新,因为一直都是在训练最优的adversary example对抗样本,所以其实在攻击过程中只更新了这一个参数。
(1)Ablation Study消融实验(通过控制变量法移除某一些组件,来查看带来的影响)
1)第一个消融实验(考虑回归攻击和分类攻击是不是都发挥了作用)
在OTB100数据集上的结果如Fig 3所示,可以看到,单纯的攻击回归部分或者是单纯的攻击分类部分的攻击效果都比不上同时攻击回归和分类的效果。
2)第二个消融实验(考虑时序信息考虑进去有没有发挥作用)
可以看到,考虑了时序信息后的攻击效果要优于没有考虑时序信息的效果,所以时序信息这里算不算是作者的一个创新点。
(2)Benchmark表现
在四个benchmark数据集上做实验:OTB100,VOT-2016,
VOT-2018和UAV123。结果如下:
1)OTB100(单目标跟踪)
OTB100数据集中有100个视频序列,执行OPE评估方式,绘制出precision plot和success plot。
首先跑一遍没有被攻击的baseline的追踪算法;再跑一遍添加了对抗样本的baseline追踪算法。
实验发现:
1.攻击可以使得DaSiamRPN算法的AUC分数从0.655降低到0.050.RT-MDnet算法的分数也可以从0.643降低到0.131.
2.对抗攻击下的追踪器的表现要比添加随机扰动的追踪器表现差,这表明本文这种方法是十分有效的。
3.在原始的追踪器的基础上添加防御,可以使得追踪器的表现优于原始的追踪器,因为现实生活中也存在噪声,这些噪声就像是我们加到图片上的对抗补丁一样,所以直接防御会比没有防御的追踪结果更好,是这样吗。
4.在追踪器上添加本文的对抗攻击可以使得追踪器的性能显著下降,之后再防御虽然可以提高追踪器的性能,但是并没有达到原始的追踪器的性能。(??)
2)VOT-2018和VOT-2016(多目标跟踪)
VOT-2018数据集中有60个视频序列。如果在连续5帧的视频帧中目标物体都处于丢失状态,那么这个VOT组件可以重新初始化追踪器。这个数据集采用了VOT中的三个指标:EAO,Acc(accuracy)和Rob(robustness)。其中的accuracy表示的是平均重叠率(跟IOU有关),Robustness由重新初始化追踪器(在追踪器丢失的情况下)的次数来确定,EAO描述的是整体的追踪器性能。
可以看到,受攻击的影响,Rob和EAO都有较大的变化,但是Acc的变化很小,作者推断是因为,这两个VOT都会在追踪器丢失的时候再重新初始化,导致box被纠正回来,而Acc和box间的IOU有关,所以会影响到。
3)UAV123
也采用success plot和precision plot作为评价指标,如下:
(3)Qualitative Evaluation
在视频上进行测试,并且把图片打印出来,如下:
十、相关思考
本文跟我看到的其他对抗攻击的论文的不同有如下几点:
1)本文每一帧的对抗扰动的初始化是基于上一帧计算得到的对抗扰动,所以将帧与帧之间的时序信息考虑到了。
2)本文同时对分类和回归进行攻击,提高了攻击效果。
3)本文将防御直接应用在未被攻击的追踪器上,并且获得了更好的追踪效果。
但是同时也有几个问题:
1)本文研究的其实是单目标追踪,但是现实生活中很多时候都需要用到多目标追踪。
2)本文在每一帧都会训练一个对抗扰动,是不是相当于是对每一帧都进行了攻击,攻击成本会不会比只攻击一帧更大。