背景
以图搜图是很有颠覆力的应用,俗话说一图胜千言
不同于文本搜索的匹配模式,以图搜图要对搜索的信息源进行处理,抽取特征信息。在网易存证系统的开发过程中调研了用于以图搜图的simhash
算法,并设想在内容系统建设完善后可以用于诸多的场景,比如:
-
商业图片侵权自动取证
-
肖像内容的识别
-
家庭照片按场景自动分类
图片指纹比较 simhash算法
-
压缩大小
-
压缩颜色
-
计算平均灰度值
-
每个像素和平均值比较,大的为1;小的为0,
进一步向量化
-
得出向量,就是图片指纹,
-
计算汉明距离 hamming distance
通过如上粗粒度的算法分析,可知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值之间的比对,通过阈值设置,找出相似的
来源:CSDN
作者:郑泽洲
链接:https://blog.csdn.net/wxid2798226/article/details/103810885