作者:雷经纬

导语

本文从从图片的dhash,ahash,phash,颜色分布向量到基于语义的sift,surf,gist特征,构建一套分层相似图片检测系统。本文致力于零基础单机快速搭建一个可用的相似图片识别系统。

1 背景

相似图片检测的定义是人眼看起来像,比如下面的俩图。

   

相似图片的检测广泛用于图片去重,仿冒图标检测,图片检索等。本文也是基于图标相似检测的需求去做的,本意是用于打假。然而专家老中医告诉我,打假不如推荐相似app受市场欢迎,并且不同应用场景下我们做事的思路也会不同。不管了,先把相似图片识别出来

2 检测的原理

图片相似检测无非是提取图片某个维度的特征,根据算法两两计算相似度。(基于机器学习,深度学习的方法则会先构建一个模型,然后将新样本特征输入模型即可。)简单流程可以描述为:

检测过程中可能用到的7个基础特征如下:

简单解释下,dhash,ahash,phash是根据基于分块等某种算法得到的基于图片RGB值的某个哈希(其详细描述可参考http://itindex.net/detail/42723 );RGB向量则是将色彩从256256256映射到较小的区间如444,然后计算图片在每个区间的分布形成一个数组;

SIFT,SURF,GIST则不再是RGB值的某种统计,而是试图构建人能理解的图片意义,如SIFT,SURF关注图片关键点(或者理解为重要的点)的信息,GIST则从自然度,开放度,粗糙度等描述图像。下图是这种专业的图片处理,很高大上有没有。

3 如何搭建一个仿冒图标检测系统

相似图片的检测可以用于去重,图片搜索等。底层技术是基于上文描述的方法,但是在根据目标不同,又有不同的结构。本工程的初衷是检测图标仿冒,系统结构如下:

思路:先把已标位正牌的图标特征(dhash,ahash,phash等)收集起来形成一个特征库,新图标来了则提取其特征去特征库里匹配,如果匹配到了相似度极高的则直接认定其为仿冒图标;如果匹配到了相似度较高的则转入sift,gist高级特征匹配。

4 show me the 效果

下面是一些相似图标示例:

图标大小缩放,添加元素,添加文字,颜色块变化等都是可以识别的。仿冒数量不便展示(/ □ )

5 提升性能和效果的关键点,坑

本工程最终在单机完成了数百万官方图标库,每天新进数十万图标的检测。在构建过程中遇到了不少坑,这些坑一部分是计算速度(单一图标匹配从300秒降低到0.2秒,鬼知道我的小心脏经历了什么),还有的是识别效果:

1.官方图标特征需先聚类,数百万的特征存储和匹配都比较麻烦。对官方库聚类后可以形成特征对图标的一对多关系,而不是维持原有的图标对特征的一对一关系;

2.匹配策略分层,如本工程一开始综合dhash及sift等,参数和策略调整非常复杂。分为两层后(哈希策略过滤,sift精确匹配),每一层的准确率和参数,策略调整非常方便;

3.哈希值的海明码距离计算耗时较多,在明确海明码距离范围的情况下可以采用分段匹配而非计算不同的位数。具体见http://www.cnblogs.com/gantoday/p/6404923.html

4.工程经验上:opencv-python不直接提供sift,surf算法了。可以用opencv-contrib-python这个库。gist可以用pyleargist这个库,其依赖安装见http://blog.csdn.net/sensicall/article/details/77803915

6 潜在的改进点

海量图片匹配,第一步必须是生成图片的特征哈希,且改hash必须是局部敏感hash。局部敏感hash的特点是:原始数据相似的情况下,生成的hash值也会尽可能的保持相似。从图片dhash,ahash,phash的算法过程可以认为它们就是一种局部敏感哈希。所以可以用来检测相似。

但是在gist特征中,即使图片相似,生成的960维向量的每一个值几乎都不同,不直接具备利用它生成局部敏感哈希lsh的条件。这个时候需要对向量元素归一化,使得相似图片的大部分gist特征相同。这一点在pyleargist的官方页面https://pypi.python.org/pypi/pyleargist 下方有说明,但并没有讲怎么做。有文章说用simhash,但是对于simhash生成过程中的每个维度的权重一笔带过。个人很怀疑不采用归一化就生成simhash的做法。这里待研究

7 总结

当前图像处理发展多年,已经提出了多种特征,算法。在工程应用中需要结合自己的场景选用适当的特征(怎么适当?不确定的话就多试试(/ □ )),注重底层数据的质量,优化性能以便快速调整匹配策略。

老司机带你检测相似图片【转】相关推荐

  1. 老司机带你玩转SDL(一)

    老司机带你玩转SDL --第一站"缘由" 啦啦啦,啦啦啦 我是SDL的老司机 大厂小厂曾呆过 今天的内容真正好 带着大家把SDL玩转了 ---- 伴随着类似聂耳<卖报歌> ...

  2. Java用map实现沁园春_QQ飞车:沁园春地图车神跑法,实力老司机带你了解这几个技巧...

    原标题:QQ飞车:沁园春地图车神跑法,实力老司机带你了解这几个技巧 QQ手游飞车上线以来收获了一大堆的迷妹迷弟,小编当然也是其中之一啦,小编在这里给大家带来最新的游戏资讯,和各种模式以及赛道的解说. ...

  3. 金士顿固态硬盘不认盘修复_#原创新人#老司机带你玩转PC,故障之SSD篇 篇一:金士顿 V300 240G SATA3 固态硬盘 丢盘掉速解决记录...

    #原创新人#老司机带你玩转PC,故障之SSD篇 篇一:金士顿 V300 240G SATA3 固态硬盘 丢盘掉速解决记录 2016-10-25 11:14:08 12点赞 72收藏 23评论 小编注: ...

  4. 苹果怎么批量删除联系人?老司机带你轻松搞定!

    苹果怎么批量删除联系人?很多刚刚换到苹果手机的人都会有这样的疑惑,苹果手机删除联系人的时候不能多选,每次删除多个联系人都要一个个手动删除,非常麻烦,有什么简便方法来批量删除联系人么?答案当然是有的,今 ...

  5. 老司机带你从源码开始撸Spring生命周期!!!

    导读 Spring在Java Web方面有着举足轻重的地位,spring的源码设计更是被很多开发者所惊叹,巧妙的设计,精细的构思,都注定他的地位.今天陈某大言不惭的带你来从源码角度解析Spring的生 ...

  6. 老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩、击穿、穿透

    前文回顾 建议前一篇文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 过期策略 Redis 的过期策略都有哪些? 在聊这个问题之前,一定 ...

  7. 十年建站老司机带你十分钟搭建网站

    十年建站老司机带你十分钟搭建网站 本文概要: 1. 域名 + 域名注册 + 域名备案 + 域名解析绑定 2. 服务器 + 虚拟主机 + windows服务器 + linux服务器 3. CMS建站系统 ...

  8. 短视频+直播源码,直播老司机带你飞

    短视频+直播源码,直播老司机带你飞 脱胎于视频直播的短视频以近乎疯狂的速度攫取着互联网的流量,当抖音.快手的月活已经足够强大,他们又毫不犹豫地切入了直播腹地. 当互联网竞争进入下半场,依靠互联网人口. ...

  9. 直播平台怎么搭建,老司机带你了解

    直播平台怎么搭建,老司机带你了解 1.创建前端工程 直播平台怎么搭建毫无疑问,搭建一个项目的框架,那第一步肯定是得创建一个工程啦.cmd命令,输入vue create mylive ,然后一直回车就好 ...

  10. 短发美女3D建模,高质量女性角色雕刻,老司机带你涨见识~

    短发美女3D建模,高质量女性角色雕刻,老司机带你涨见识~

最新文章

  1. iOS Core Data
  2. access 打印预览 代码_PDFFactory pro虚拟打印机下载-PDFFactory官方版下载
  3. 生成对抗网络(GAN)的理论与应用完整入门介绍
  4. EF-DbUpdateException解决方案
  5. 洛谷4072 SDOI2016征途 (斜率优化+dp)
  6. JAVA/PHP/C#版RSA验签--转
  7. finecms控制器与html,使用@ HTML.Action与参数,以C#控制器
  8. unipapp 解决无法编译sass_Sass教程一:Sass概况
  9. POJ2182-Lost Cows【树状数组,二分】
  10. 《Ansible权威指南 》一第2章 Ansible基础元素介绍
  11. 安卓学习笔记09:常用布局 - 帧式布局
  12. 使用三级缓存解决内存溢出
  13. 【python】matplotlib生成散点矩阵图
  14. android获取wifi mac地址吗,Android获取当前WiFi的MAC地址-适配所有版本
  15. 阿里巴巴Java 程序员常用的 10 款开源工具!用好了,事半功倍!
  16. LaTex的图文安装--TexLife+SumtraPDF+Vscode
  17. C语言实现小猫钓鱼游戏项目,堪称最强垂钓系统!
  18. 一张图了解致远A6人事管理
  19. 基于阿里云的应用系统三级等保1.0测评总结
  20. redhat linux 批量改名,CentOS的批量改名命令 rename和prename

热门文章

  1. 产品读书《演讲的力量》
  2. 《计算机入门》模拟卷 b卷,《计算机入门》模拟试卷B.doc
  3. 一个字等于多少个字节?
  4. SCI文献参考基本格式(全)
  5. 浅析《人间失格》中的经典句段
  6. 数据分析师培训班哪家好?
  7. 售前工程师面试准备工作及经验分享
  8. 计算机主板上电源供电缩写,新电脑电源标准开始普及?取消5V、3.3V供电,主板供电变为10PIN...
  9. 暴风影音怎么旋转视频?暴风影音旋转视频方法
  10. 【HTTP协议】HTTP协议初体验,深入浅出网络协议