论文地址
代码实现:Matconvnet、caffe、keras
Motivation
- 现在主流的两种re-ID卷积网络:verification and identification models,这两种网络因为损失函数的不同各有优缺点
- 那么能不能把这两种网络结合一下来得到一个能学习到更具区分能力的表示呢?
Contribution
- 提出了siamese network结合了identification loss与verification loss
- 这种网络可以同时学习到discriminative embedding与similarity measurement
- 在大型数据集上与得到了与SOTA相当的准确率
Introduction:
- 近几年re-ID领域进步的因素:
- 大规模数据集的出现
- 使用卷积神经网络来学习行人的embedding,能学到更加鲁棒对的特征
常用的两种模型(a)identification(b)verification,如下图:
verification model的缺点:只利用了弱re-ID标签,没有考虑图像对以及其他图像之间的关系
identification model的缺点:训练目标与最后的测试目标不符合,没有考虑图像对之间的相似度度量
那么有没有可能结合上述两种模型来达到互补呢?–> 本文提出的模型(见下文)
Related Work
A.Verification Models
- 1993, Bromley第一次使用verification models
- 通常输入一个图像对,输出为通过计算低维特征的余弦距离得到的相似性得分,学习使用contrastive loss
- 2014 Yi et al.首次使用了verification models来进行Person Re-ID等等~
B.Identification Models
- 随着数据集的增大,可以在不过拟合的情况下训练深层的分类模型来得到discriminative embeddings
C.Verification-identification Models
- 结合两种loss的模型在人脸识别中已经有一些工作,eg.DeepID networks等
- 本文工作与人脸识别工作的不同:
- 数据集大小对于loss的选择:人脸识别数据集一般很大,训练集有202599张图片,10177个身份,而Re-ID通常只有12936张751个身份的图片,前者可以使用contrastive loss,而后者使用contr loss会过拟合,本文使用了cross-entropy loss,下文会进一步解释原因
- dropout的使用:dropout会在随机的位置产生0值,不能在contrastive loss前使用,相反,采用crooss-entropy可以使用dropout来减少过拟合
- DeepID从头开始训练,本文借助了pretrained model on ImageNet,即使用了transfer learning(一定程度上弥补了数据不足吧)
Proposed Method
Preview
- 上图说明了verication models、identification models与our model在一个batch上图像对之间的关系图。
- 实线代表由verification loss建立的直接联系,eg.通过pair-wise的比较直接建立相似度的联系
- 虚线代表由indetification loss建立的间接联系,通过cross-entropy: loss=−log(pgt) l o s s = − l o g ( p g t ) ,其中 pgt=Wgtfi p g t = W g t f i ,为了最大化 Wkfm,Wkfn W k f m , W k f n ,当 fm f m 与 fn f n 与 Wk W k 有相似向量方向时网络达到收敛
- 正如之前提到的(a)、(b)的不足,很容易看出our model结合了(a)、(b)两种模型的优势
Overall Network
上图为本文提出的网络结构:
- two ImageNet pre-trained CNN models
- three additional Convolutional Layers, one Square Layer and three losses
- 本文用卷积层代替了全连接层,用1x1x4096x751得到1x1x751的输出向量
- 之前工作在中间层含有matchingfunction,本文直接比较 f1, f2 f 1 , f 2 作为相似性度量
- Square Layer:用来比较高级特征
fs=(f1−f2)2 f s = ( f 1 − f 2 ) 2 -
- Square Layer后跟着一个卷积层将
fs
f
s
作为输入得到2维向量
(q̂ 1,q̂ 2)
(
q
^
1
,
q
^
2
)
来表示两张输入图片属于一个人的概率,从而将行人验证看成一个二分类问题,使用类似identification loss的cross-entropy loss,式子如下:
q̂ =softmax(θs∘fs),Verif(f1,f2,s,θS)=∑i=12−qilog(q̂ i) q ^ = s o f t m a x ( θ s ∘ f s ) , V e r i f ( f 1 , f 2 , s , θ S ) = ∑ i = 1 2 − q i l o g ( q ^ i )
- Square Layer后跟着一个卷积层将
fs
f
s
作为输入得到2维向量
(q̂ 1,q̂ 2)
(
q
^
1
,
q
^
2
)
来表示两张输入图片属于一个人的概率,从而将行人验证看成一个二分类问题,使用类似identification loss的cross-entropy loss,式子如下:
为什么没有使用Contrastive loss而使用softmax loss呢?
- contrastive loss是一种回归loss,使相同类别的嵌入尽可能的近,由于re-ID数据集中的identity很少,很容易过拟合
- dropout会引入0值不适合在contrastive loss前使用
为了比较三种模型的效果:本文训练了三个网络来做实验得到了下图:
- 实验结果如下:
- 可视化的角度说明了本文的方法结合了Verif、Classfi两种model的优势
- 实验结果如下:
文中通过对网络得到的embed进行可视化发现衣服颜色可能是re-ID最重要的线索,同时也发现本文的方法对于一些viewpoint variations很鲁棒
Traning and Optimization
- Input preparation:
- 图片resize 256 * 256
- 减去训练集上的均值
- crop 227*227 或 224*224(CaffeNet、ResNet50、VGG16)
- 对数据集进行了打乱,使用随机的图片顺序,然后选择从相同或不同类别中选择一个张图片与其组成P、N对
- 初始negative : positive = 1:1,在每个epoch后乘以1.01直到1:4,来防止过拟合
- Training
- 训练epoch:ResNet50、VGG16、CaffeNet分别为75、65、155
- batchsize:48、48、128
- 初始学习率:0.001 最后5个epoch 0.0001
- SGD
- 对三个loss分别计算梯度然后进行了加权,verification loss权重为1,其他两个identifcation loss为0.5
- Testing
- 先把gallery中的图片通过网络计算得到4096-dim的pedestrian descriptor f f <script type="math/tex" id="MathJax-Element-12">f</script>,并存储起来,然后在线计算query的descriptor。
- 对query与gallery的features计算余弦距离并排序得到最后的rank结果
- 特征经过L2-normalized后,余弦距离等价于欧式距离
EXPERIMENTS
- 在Market1501、CUHK03以及Oxford Buildings上进行了实验
- baseline:
- 直接fine-tune pretrained model on ImageNet
- 下表为在Market1501上的baseline
- Cross-entropy vs. Contrastive loss:
- 将cross-entropy loss换成Contrastive loss性能有所下降,原因可能是不能使用类似dropout的正则化手段引起了过拟合。
其他一些结果
对上图的结果的思考:对于第三行的rank1来说,我们人很容易从发型来区分出来,如何设计结构来区分这种种细节特征呢,之前的Gated SCNN感觉是一种思路。
- Results between camera pairs:比较了不同摄像头下的性能
Large-scale experiments:gallery中多了500K的图片
- 当多了500K图像时候,本文的模型比之前的baseline精度降的快,作者给的原因是Market数据集相对较小,文中的模型可能过拟合比较严重一些。
- Instance Retrieval:在Oxford5k上取得了不错的效果,说明了模型的通用性
CONCLUSION
- 总结了提出的模型
- Future work:
- 将方法用到新的场景:车辆识别、细粒度分类
- 研究如何学习robust descriptor,进一步提高Person Re-ID在大的gallery的性能