对抗性reid论文学习中知识补充
论文题目 Transferable, Controllable, and Inconspicuous Adversarial Attacks on Person
参考https://juejin.im/post/6854573214853496846
PPT展示
对抗样本是什么?
定义:在数据中加入人眼不可察觉的扰动,使得模型对数据的标签预测发生混淆和错误。
非正式定义:以人类不可感知的方式对输入进行修改,使得修改后的输入能够被机器学习系统误分类,尽管原始输入是被正确分类的。这一修改后的输入即被称为对抗样本。
数学符号表示:
$$
x_{adv} = max_{\delta} L(f,x_{orig}, y)
$$
$$
such that |\delta|_{p}\leq\epsilon
$$
$$
and x_{orig}+\delta\in[0,1]^D
$$
其中 L 是我们试图最大化的损失函数,x_orig 是原始图像,𝛿是扰动,y 是真实标签,所选的ε用于确保扰动后的图像看上去没有那么杂乱,并且对于人类来说仍然像是原始类别的图片。
什么是感知损失?
问:其实还不是很理解感知损失是什么,是feature map之间的差异吗?
答:因为high-level features 指的是图片全局的模样,感知损失就相当于是看图片是否一致,若相似损失就小,如果不相似损失就大。
答:个人理解,区别于MSE那种基于每个pixel来做loss,我们理解一副图片往往不是基于单独某个pixel的,你是通过一张图片的形状,轮廓之类的高级语义信息来理解。那么我们就不再对每个pixel求loss,而是比较待生成的图片经过CNN的feature map与目标图片经过同样网络结构的CNN的feature map,根据高级语义信息的误差来做loss
什么是feature map?
四个最大的 re-ID 基准数据集(即 Market1501,CUHK03,DukeMTMC 和 MSMT17)
MSE(Mean Squared Error)均方误差
$$
MSE= \frac{1}{M\times N} \sum_{i=1}^{M}\sum_{i=1}^{N}(K(i,j)-I(i,j))^2
$$
K(i,j)和I(i,j)分别表示的是待评价图像和原始图像,M,N分别表示图像的长与宽.
- MSE指参数估计值与参数真值之差平方的期望值,在图像处理算法中就是处理后图像像素值与原始像素值之差平方和的均值。
GAN 的谱归一化(Spectral Norm)和矩阵的奇异值分解(Singular Value Decompostion
具体内容见http://kaizhao.net/posts/spectral-norm
非线性激活函数ReLu
损失函数 Loss function
- 损失函数和激活函数softmax会一起使用。
激活函数会根据输入的参数(一个矢量,表示每个分类的可能性),计算每个分类的概率(0, 1)。
损失函数根据softmax的计算结果$ y\head $和期望结果$ y $,根据交叉熵方法(cross entropy loss) 可得到损失L。
BatchNorm
为了在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布,通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布
下采样
- 定义:对于一个样值序列间隔几个样值取样一次,这样得到新序列就是原序列的下采样。
缩小图像(或称为下采样(subsampled)或降采样(downsampled))
下采样原理:对于一幅图像I尺寸为MXN,对其进行s倍下采样,即得到(M/s)X(N/s)尺寸的得分辨率图像,当然s应该是M和N的公约数才行,如果考虑的是矩阵形式的图像,就是把原始图像sXs窗口内的图像变成一个像素,这个像素点的值就是窗口内所有像素的均值
深度学习中卷积、池化都可以用于下采样(其实就是提取数据,卷积结果就是提取特征)
上采样
放大图像(或称为上采样(upsampling)或图像插值(interpolating))
上采样原理:图像放大几乎都是采用内插值方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素。(数值计算中的插值方法)
逐元素运算(element-wise)
这个类别包含了 Tensor 的一些基础运算,由于输出的数据点只跟对应的哪一个输入的数据点有关,因此可以称为 element-wise 运算,这类运算与输入的数据的维度和结构无关,可以等价的认为是一维向量运算的 Tensor 等效表示。
双线性池化bilinear pooling与双线性插值Bilinear Interpolation
在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值,参考https://blog.csdn.net/xbinworld/article/details/65660665
bilinear pooling主要用于特征融合,对于从同一个样本提取出来的特征x和特征y,通过bilinear pooling得到两个特征融合后的向量,进而用来分类。
空洞卷积(Dilated/Atrous Convolution)
在nXn卷积核中间填充0,有两种实现方式,第一,卷积核填充0,第二,输入等间隔采样。
1x1卷积方法:可以理解为给所有通道应用一个全连接神经网络**
全连接神经网络
指除输出层外,每一个神经元都与下一层中的各神经元相连接。
神经网络结构详解https://blog.csdn.net/hennyxu/article/details/102990123
示意图中加号和乘号的含义(找的我心累)
加号:concatenate操作是网络结构设计中很重要的一种操作,经常用于将特征联合,多个卷积特征提取框架提取的特征融合或者是将输出层的信息进行融合,而add层更像是信息之间的叠加。
你可以这么理解,add是描述图像的特征下的信息量增多了,但是描述图像的维度本身并没有增加,只是每一维下的信息量在增加,这显然是对最终的图像的分类是有益的。而concatenate是通道数的合并,也就是说描述图像本身的特征增加了,而每一特征下的信息是没有增加。只看单个输出通道
$$
Z_{concat}=\sum_{i=1}^{C}X_{i}*K_{i}+\sum_{i=1}^{C}Y_{i}*K_{i+c}
$$$$
Z_{add}=\sum_{i=1}^{C}(X_{i}+Y_{i})*K_{i}=\sum_{i=1}^{C}X_{i}*K_{i}+\sum_{i=1}^{C}Y_{i}*K_{i}
$$乘法:element wise mltipliction
生成式对抗网络(GAN)
生成模型,以图像生成模型举例。假设我们有一个图片生成模型(generator),它的目标是生成一张真实的图片。与此同时我们有一个图像判别模型(discriminator),它的目标是能够正确判别一张图片是生成出来的还是真实存在的。那么如果我们把刚才的场景映射成图片生成模型和判别模型之间的博弈,就变成了如下模式:生成模型生成一些图片->判别模型学习区分生成的图片和真实图片->生成模型根据判别模型改进自己,生成新的图片->····
这个场景直至生成模型与判别模型无法提高自己——即判别模型无法判断一张图片是生成出来的还是真实的而结束,此时生成模型就会成为一个完美的模型。
SSIM与MS-SSIM图像评价函数
- SSIM的全称为structural similarity index,即为结构相似性,是一种衡量两幅图像相似度的指标
- MS-SSIM多级结构相似性