哈希编码就如同从一组图像中学习到一种映射传统哈希编码方法 - 图1传统哈希编码方法 - 图2可以使图像映射至二值的哈希编码上。可以想见,这是一个困难的问题。对于这个问题,传统方法的解决思路是:先对原图像用人工提取的特征来表达,即先从原图像压缩至特征表达,然后再从特征表达映射至哈希编码。

    KSH(Supervised Hashing with Kernel)为例,其所代表的算法如下。

    1. 提取特征。在训练集传统哈希编码方法 - 图3内共含传统哈希编码方法 - 图4张图,遍历传统哈希编码方法 - 图5,对第传统哈希编码方法 - 图6张图提取人工特征,如HoG、SIFT等,然后将特征连接起来形成一个长向量来表达该图:传统哈希编码方法 - 图7
    2. 分解相似度矩阵。
      1. 传统哈希编码方法 - 图8按照标准的两两相似/不相似结果构建矩阵传统哈希编码方法 - 图9。(即1为相似,0为不相似,则传统哈希编码方法 - 图10为0和1组成的矩阵,且传统哈希编码方法 - 图11为图传统哈希编码方法 - 图12和图传统哈希编码方法 - 图13相似与否的标注结果。)
      2. 传统哈希编码方法 - 图14分解成传统哈希编码方法 - 图15,使得传统哈希编码方法 - 图16,则传统哈希编码方法 - 图17为训练集传统哈希编码方法 - 图18对应的哈希编码矩阵,其第传统哈希编码方法 - 图19行对应图片传统哈希编码方法 - 图20的哈希编码值。
    3. 求得特征表达至哈希值的映射传统哈希编码方法 - 图21传统哈希编码方法 - 图22。训练学习结束。
    4. 测试时,对应图片传统哈希编码方法 - 图23,先同样提取特征表达传统哈希编码方法 - 图24,再根据映射传统哈希编码方法 - 图25得到其哈希编码传统哈希编码方法 - 图26

    从以上步骤可以看出,难点集中在第(2b)步,即将相似度矩阵传统哈希编码方法 - 图27分解成可能的哈希编码矩阵传统哈希编码方法 - 图28,并且约束传统哈希编码方法 - 图29的取值为0或1。因此,研究者针对如何近似分解相似度矩阵做了大量艰苦的工作。尽管如此,传统方法还是有很大的局限性的。比如,如果训练集过大,则意味着传统哈希编码方法 - 图30也会过大,分解起来会变的十分困难,甚至不可达成。

    而深度学习介入后,这些局限被逐渐打破。深度学习的应用也不是一蹴而就的,在逐步尝试和摸索后,终于找到了一条简捷有力的途径。