您的位置:首页 > 其它

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

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

主要是参照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,由于鄙人才疏学浅,又是第一次做深度学习,在训练和运用上都没有经验,还望高人能够指点一二,不胜感激。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  深度学习 cnn triplet