II related work
A讲了传统的feature representation和metric learning的发展过程,并在最后说明他们存在的缺点:
(1)效果被提取的feature所限制
(2)feature representation和metric learning两个独立求解优化过程,他们之间的关系不能被发掘
(3)metric learning适应现有数据集,但无法调整
B讲了Deep Learning现在deep用在图像的分类检测的方面,行人再标识也有,相关的人脸识别的应用,在reid主要两个基本的做法:用于提取特征,当作二分类办法解决,存在正负样本不均衡的缺点。
III DEEP RANKING FRAMEWORK
Overview:训练时候,有label的数据ranking后放入deep CNN,得到每对图片近似分的分值,根据分值位于前面的correct match;惩罚排序错乱用最小化每个的正样本总的排序得分——>放入deep,求解优化
Formulation:先说明了一些符号,对于一个probe,它的gallery为G,根据相似度产生一个排序,只认为排在第一个是correct match,x+,其他为neg match,G-,则有
f (x,x+) > f (x, y), ∀y ∈G−,
f是一个映射,表相似度,如下公式可以表示为一个归类问题,用0-1loss function,I是一个函数,表达为正取1(错分),反之取0(对分),当然是总的sum越低越好,这样有个好处在难以找出剩下谁比较接近情况下可以简单忽视
使得所有probe的sum最小,为最终的目标函数
接着替换下loss function,可能高级一点的loss更好吧
替换后是这样的:
让deep CNN去学习这个f从图片学习而不是特征
Network Architecture
5个卷积层+3个全连接层,有点类似AlexNet,为了输入的方便,把两个图像连在一起,是256×256(单个行人图像是256×128),这样就不用设计输入的模型(但这里我不知道是同一个行人还是不同个行人)
卷积操作如下
x表示该层的feature map,k是两层之间的卷积核,激活函数用relu,pooling层用在1,3,5卷积层后面(pooling的结果是使得特征减少,参数减少,但pooling的目的并不仅在于此。pooling目的是为了保持某种不变性(旋转、平移、伸缩等),常用的有mean-pooling,max-pooling和Stochastic-pooling三种。)并且第1,2层pooling进行LRN归一化操作
最后三层是全连接层,如下,w和b分别是权重和偏置
全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来。由于其全相连的特性,一般全连接层的参数也是最多的。前两个全连接层,降维,提取到有效特征。最后一层起到计算相似度和距离的作用,有下面公式
f依旧是相似度,<>表两个向量的内积
所有层的激活函数都是RelU,前两个连接层用了Dropout防止过拟合,(对于Dropout的作用可以参考下面的网站,讲的比较清楚http://blog.csdn.net/stdcoutzyx/article/details/49022443
dropout它强迫一个神经单元,和随机挑选出来的其他神经单元共同工作,达到好的效果。消除减弱了神经元节点间的联合适应性,增强了泛化能力。产生的向量具有稀疏)))
讲到了网络深度和样本的问题,行人再标识中,single-shot,样本少,不可用太深的网络,但深的网络效果好,解决:pre-trainin。
IV OPTIMIZATION
网络训练用SGD,数据形式ranking unit