深度学习triplet loss 做人再识别(person-reid)

来源:互联网 发布:如何申请淘宝 编辑:程序博客网 时间:2024/06/05 18:48

最近需要做这个课题,采用深度学习做,废话不多说,直接说一下我的思路以及遇到的问题,希望能有人交流一下(哭,效果一直不好,找不到原因)。


主要是参照cvpr的这篇论文Person Re-Identification by Multi-Channel Parts-Based CNN with Improved Triplet Loss Function.pdf(链接http://z-yt.net/tmp/cvpr2016/content/papers/8851b335.pdf)。按照论文中的说法,其最简单的用原始triplet loss和一个网络分支在VIPER数据库上就能达到top1 34%的正确率。可是臣妾经过一番折腾,表示做不到啊,相同的网络和loss我的top1在15%左右,差距简直不要太大。(我的batch设为30)

我做深度学习用的是caffe,tripletloss层参考的是 博客http://blog.csdn.net/tangwei2014/article/details/46812153中的写法,另外我在triplet loss层前面又加上了一个select层用于将anchor、positive、negative分成三个输出作为loss层的输入。则样本的组织形式为如下
anchor1
anchor2
positive1
positive2
negative1
negative2
此处拿batchsize为6来举例,则一共有两对triplet三元组,(anchor1,positive1,negative1)和(anchor2,positive2,negative2),他们是一一对应的在一个批次中,当然这在组织imag_data的输入list中得事先组织好三元组。另外修改过的地方还有data_transformer.cpp加入了可以随机crop不同宽高的代码。

这是caffe中修改过的代码的文件
http://download.csdn.net/download/gu_gu_/9759615,由于鄙人才疏学浅,又是第一次做深度学习,在训练和运用上都没有经验,还望高人能够指点一二,不胜感激。

0 0
原创粉丝点击