基于深度学习的Person Re-ID(特征提取)

一. CNN特征提取

       通过上一篇文章的学习,我们已经知道,我们训练的目的在于寻找一种特征映射方法,使得映射后的特征 “类内距离最小,类间距离最大”,这种特征映射 可以看作是 空间投影,选择一组基,得到基于这组基的特征变换,与 PCA 有点像。

       这一篇我们讲的就是基于 CNN的特征提取,特征提取过程也就是训练过程,训练结果就是 CNN 的参数。

       以 Triplet Function 为例,对于 一个输入图像三元组 Trip,通过一个共享参数的网络进行训练,通过下图可以看到,三个图像  分别得到了一个特征空间,这个特征空间只要满足 前面提到的距离度量函数(后面的Distance Cost),那么训练就算完成了。

       这里面有几个关键点:

  • 提取全局特征与局部特征结合,可以学到更能描述行人的特征;
  • CNN采用共享权值方式进行特征提取;
  • Distance Cost 作为Loss函数驱动 CNN特征参数调整;

        基于深度学习的Person Re-ID(特征提取)_第1张图片


二. 训练过程

       还是通过 Loss 函数来看训练过程(每N个Trip样本训练一次):

       基于深度学习的Person Re-ID(特征提取)_第2张图片

       前面已经讲过,Loss函数表示两部分的误差和,即:

       1) t1表示 I与正样本的距离 与 I到负样本的距离的Margin;

       2) t2表示 I与正样本的距离 小于一个常数;

       下面步入正题,这两个参数 是否有必要?ok,我们第一步就是去除拍脑袋参数,重新设计 Loss函数为:

       

        目标是求Loss函数尽可能的小,当然我们知道这个公式的问题在于 Loss 只会尽可能的小,不可能为0,同时含有除法,可能按照我们的理解,这并不是一个好的Loss函数,之前我们做 CNN Loss函数的时候都是与 Ground Truth 进行对比,与 Ground Truth 一致的时候,Loss应该为0。

       那么这个函数如何改进呢? (想几个idea,哈哈)


三. New Idea

       提出新的思路,如何通过训练的方法更进一步 对 Loss Func 进行加工,比如:

1)借鉴 Pair-wise 的方法,得到的结果为 负样本-正样本的差;

2)或者通过某种换算,将正样本距离映射为0,这样就只需要考虑一种距离的Loss;

3)将两种距离的比值近似为线性函数展开;

       另外,针对卷积部分,有两个思路可以参考:

1)可以基于上面 Part-Model 进行分块,分块的 卷积结果 通过加权来设计,从而提高其中一部分的影响力;

2)通过马氏距离替换原来的欧式距离,马氏距离反应了方差,对类比型的距离度量更合适;

       先 Mark 这几种思路,有想改进算法的朋友可以多交流!

你可能感兴趣的:(深度学习,深度学习基础)