Duxy's

a digged hole

LSH(Locality-Sensitive Hashing)

LSH可看作是一种降维的方法,将图片映射到一组不长的hash码中,以hash码代码图片的像素特征,在上面做类似KNN的相似图片查询。

LSH的一个基础结构是满足下面两个条件的hash函数:
* 如果\(d(x, y) \le d1\), 则\(h(x)=h(y)\)的概率至少为\(p1\);
* 如果\(d(x, y) \ge d2\), 则\(h(x)=h(y)\)的概率至多为\(p2\);
LSH称上述的hash函数为\((d1,d2,p1,p2)-sensitive\)

由上述基本结构,可以生成LSH family,简单的说,是可以通过一定的变化,使d1, d2, p1, p2做一些定向的改变。

LSH family

  1. Jaccard distance \((d1, d2, 1-p1,1-p2)-sensitive\)
  2. Hamming distance \((d1,d2,1-d1/d,1-d2/d)-sensitive\)
  3. Cosine distance \((d1,d2,(180-d1)180,(180-d2)/180)-sensitive\)
  4. normal Euclidean distance \((a/2,2a,1/2,1/3)-sensitive\)
  5. AND操作

  6. OR操作

LSH在查找中的应用

目前就理解到一种方法:将样本扔到桶里去,比如生成L位的hash,那么就有了\(2^L\)个桶,将待查样本转化为hash后,直接去对应桶中遍历找出前K个相似的样本即可。桶中样本可再次使用hash或别的方式查找。
使用这种Hash方式查找最近邻,可降低查找样本数,分为了\(\frac{1}{2^L}\)

使用Python做人脸检测

听说Python做机器学习之类的东东非常方便,有大把的库等着我们用。所以接到做人脸识别的任务后,查找了一下,确定了使用Python做东东的方法。
本文只完成了人脸检测工作