Re-ID ——表征学习和度量学习

表征学习

将行人重识别问题作为分类问题和验证问题。

1.分类问题

分类标准:一般是多个结合起来的,即:ID损失+多个属性(如:颜色等)损失的均值

损失函数L=\lambda L_I_D+\frac{1}{m}\sum L_m_i

网络结构

Re-ID ——表征学习和度量学习_第1张图片

2.验证问题:输入两张图片来判断它们是不是同一张图片

具体:输入两张图片,经过同一个CNN,得到两个特征向量,将两个特征向量融合起来到FC层,最后输出只有两个神经元的FC,用以判断是否是同一行人。

损失函数\small L=-\sum y_ilog(v_i)(这个加和只有两个项)。

3.其实一般是不会单独使用验证网络,而是将验证网络和分类网络结合起来:

损失函数:\small L=L_I_D+L_V

网络图

Re-ID ——表征学习和度量学习_第2张图片


度量学习

背景:度量学习通常应用在图像检索领域

目的:通过网络学习出两张图片的相似度

做法:输入两张图片,通过网络向前传播归一化后得到特征向量,计量特征间距离,通过距离损失优化网络。

           目标:正样本对间的距离尽可能小而负样本对间的距离尽可能大。

           距离度量:

                             1)为实现端对端训练,度量函数尽量连续可导。

                             2)常使用归一化特征欧式距离,或者特征的余弦距离。

                                   欧式距离:\small d_i_1_i_2=||f_i_1-f_i_2||_2

                                   余弦距离:\small d_i_1_i_2= f_i_1 \cdot f_i_2/||f_i_1||_2 \cdot ||f_i_2||_2

                             3) 汉明距离,马式距离,曼哈顿距离也可以作为距离度量。

对比损失

                目的:训练孪生网络

                输入:一对图片,同一行人(y==1)或者不同行人(y==0)

                损失函数:\small L=y(d_i_1_i_2)^{2}+(1-y)(\alpha -d_i_1_i_2)^{2}_+

                                解释:

                                         1)更具y分同一张图片和不同图片计算距离

                                         2)\small (z)_+表示\small max(z,0)         

                                         3) \small \alpha是超参,更具具体训练情况而定。

三元组损失

                输入:三张图片,即固定样本,正样本,负样本

                损失函数:\small L=(d_a_p-d_a_n+\alpha )_+

                改进的损失函数:\small L=(d_a_p+(d_a_p-d_a_n)+\alpha )_+  因为有人认为,前者只考虑了正负样本对之间的相对距离。目的:把正负样本对推开(?一个减小,一个增大就是推开吗),减小正样本对之间的距离。

四元组损失

             输入:四章图片,即固定样本,正样本,负样本2个

             损失函数:\small L=(d_a_p-d_a_n_1+\alpha )_++(d_a_p-d_a_n_2+\beta )_+    (前称为强推动项,后称为弱推动项)

             解释:在将正负样本对推开的同时很难保证固定样本和正样本间的距离,会影响固定样本本身(?),三元组损失加入如上项解决,而四元组通过再加一个负样本解决。\small \alpha \beta是手动设置的正常数,且前者比后者大。

难样本采样

             做法:非常不像的正样本和非常像的负样本。

             作用:提高模型泛化能力,加快收敛速度,方便使用。


总结:

    1.二者差别:表征学习相当于特征空间的分界面,表征学习相当于特征空间的聚类。

    2.度量学习优势:比起表征学习不需要全链接层,因此对于ID的数量不敏感。

    3.趋势:将二者结合起来。

你可能感兴趣的:(Re_ID)