神经网络hash码论文笔记
- Deep Learning of Binary Hash Codes for Fast Image Retrieval
首先通过ImageNet进行训练,通过迁移学习的方法,保留包括F7之前的参数,在F7之后添加一层hash编码层,最后是分类层。Hash编码层通过sigmoid,映射到0~1,最后通过0.5阈值二值化为{0,1}。
思想是,通过hash编码层得到每张图像的hash码,然后通过LSH将得到的hash码进行映射,最后每类都有一个hash码。检索分为两级:1,使用Hamming距离,通过上得到的hash码定位到属于哪一类;2,使用Euclidean距离,然后通过F7学到的图像特征做进一步的精确检索。
- Deep Supervised Hashing for Fast Image Retrieval
通过图像对来进行训练网络。没对图像相似标记为0,否则标记为1。图像是否相似是通过这两张图片是否属于同一类,因为数据库有类别标签。
训练时,首先将两张图片通过具有相同参数的网络,根据损失函数计算损失,然后进行反向传播。与第一篇论文不同,这篇论文将hash编码为{-1,1},也没有分类层。测试时将输出进行二值化,得到该图像的hash码,然后进行检索。
损失函数分为3部分:
如果俩夫图片相似,使用第一个式子;如果两幅图片不相似,使用第二个式子;通过第三个式子将输出拉向-1,1。结果是相似的图像编码相似,不相似的图像编码不相似,而且最后输出趋于-1,1。
M设为2k,k为组后一层编码长度。 - Feature Learning based Deep Supervised Hashing with Pairwise Labels
作者给deep pairwise-supervised hashing取名DPSH。
网络结构不复杂:
也是迁移学习,不过迁移过来后所有参数是要跟新的。其实,说的再复杂,还是再full7后边又加了一层全连接层。
训练方法和论文2差不多,损失函数不一样。
损失函数推理过程:
1.
2.
3.
4.其实就是指,最后边加了一个全连接层
5.
Sij表示相似为1,不相似为0。u为网络的输出。b为u二值化后的值,大于0为1,小于0为-1。
最后也是相似的图像编码相似,不相似的图像编码不相似。损失函数第二项通过将输出二值化然后与输出进行正则话很机智。详细推导见论文。
第一篇文章通过类别来学习hash码,后两篇通过将类别信息隐藏于图像对进行学习hash码。