以图搜图技术与simhash算法.md

旧时模样 提交于 2020-01-02 23:21:37

背景

以图搜图是很有颠覆力的应用,俗话说一图胜千言
不同于文本搜索的匹配模式,以图搜图要对搜索的信息源进行处理,抽取特征信息。在网易存证系统的开发过程中调研了用于以图搜图的simhash算法,并设想在内容系统建设完善后可以用于诸多的场景,比如:

  • 商业图片侵权自动取证

  • 肖像内容的识别

  • 家庭照片按场景自动分类


图片指纹比较 simhash算法

阮一峰博客 相似图片搜索的原理

  • 压缩大小

  • 压缩颜色

  • 计算平均灰度值

  • 每个像素和平均值比较,大的为1;小的为0,进一步向量化

  • 得出向量,就是图片指纹,

  • 计算汉明距离 hamming distance

如上过程的java实现

通过如上粗粒度的算法分析,可知simhash和普通hash算法有较大不同;普通hash算法是对字节流无差别的处理,但是simhash首先会对信息抽取特征值,然后计算汉明距离,最后这步是关键,度量了两个特征量的相似性,让我们有可能在抓取了两张图片的关键特征的基础上,比较其相似性。

动手实验

  • 普通hash是差一个空格,也相差极大,比如如下(差别就是一个是,一个是):

vincent@vincent-B250M-DS3H:~$ cat > 1.txt

你妈妈喊你回家吃饭,回家罗回家罗

vincent@vincent-B250M-DS3H:~$ cat > 2.txt

你妈妈叫你回家吃饭,回家罗回家罗

然后,cat 1.txt | md5sum 和 cat 2.txt | md5sum
屏幕打印出 
995c23618eb01dd89c12409ffa41902e 和 12dabbf9a740f64d9a149bee5dc75f77
结果hash值完全不一样!!!

但是simhash研发的目的不同,是要比较两者相差程度


sudo apt install simhash

1. 先生成结果文件

 simhash -w 1.txt  //结果是同目录下生成一个1.txt.sim

 simhash -w 2.txt  //结果是同目录下生成一个2.txt.sim

2. 再对比结果文件

 simhash -c 1.txt.sim 2.txt.sim

结果是0.63;  如果是将1.txt拷贝成2.txt,但是最后加个字符1,结果就是0.95;如果完全拷贝没有改,结果就是1.0

可以说,普通hash要的就是不同,但是simhash除了告诉我们不同外,我们还要知道相差多远!!


网易存证系统侵权图片全网搜索排查系统设计

  • 对网易存证中保存的图片计算simhash

  • 爬取全网的图片

  • 对全网图片计算simhash

  • 进行simhash值之间的比对,通过阈值设置,找出相似的

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!