如何处理图片排重(精准排重,相似排重)

news/2024/11/29 4:47:00/

图片相似度对比

1、需求

假如有一个图片池,存有1亿图片。给一张目标图片,在图片池中做匹配。

  • 判断一张图片是否在图片池中出现过。(完全一样)
  • 判断有没有相似的出现过。比如两张图相似度90,两张图片是在描述一件事情。

2、需求实现方案

对于以上需求,实现思路是:将图片转成向量,存放在ES中,去做以图搜图。但是在ES中的实现以图搜图,是用KNN实现的。KNN总会返回topN结果,在图片池中,哪怕真的不存在与目标一致的图片,但是仍然会返回与之最相似的图片。

想要使用ES实现需求1很容易。因为完全相同的图片,返回的相关性分数为1。但是在搜索目标不存在的情况下,返回的结果,和给出的相关性分数,很可能和目标完全不相关,但是相似度还是大于85%。我们无法判断,是否召回结果和目标真的是相似的。所以针对需求2,对召回的结果,假如分数不为1,应该再判断一次,召回的最相关的图片,是否是和目标图片真的相似。

针对需求2,应该再使用其它的图片相似性算法,做一次校验。根据调研和测试,使用openCV,使用直方图对比方法,可以有不错的效果。根据测试效果,在以下案例中,我们可以设置相关性大于85%,来区分图片是否相似。(需要测试更多的案例,来验证最佳相似度阈值阈值)

3、ES向量检索中的问题反例

es召回效果反例:

1.以下图为搜索目标图片

2.召回的结果取top3

其中以上三张图是召回的结果,图片排序即ES召回相关性排序后的结果。假如前两张结果在图片池中不存在,召回第三张,是有问题的,不能拿来做排重。

 

3.以上三张图片在es中给出的分数如下:

从es给的相关性分数中,第一张图得分为1,可以用来判断完全一致没有问题。第二张图片和第三张图片,分数很相近,但是第三张图和第一张图实际的相关性并不好。假如我们想通过相关性排除第三张图,仅仅通过es返回的相关性分时,并不合适。

  1. 使用openCV测试对比两张图片的效果

针对需求2,使用ES不能满足。可以通过使用openCV,对召回的第一条结果,在分数不为1的情况下,重新做一次比对。

openCV 通过两张图片直方图的比对,得出的相关性分数,比较靠谱。至少看起来是我们想要的效果。

案例1

两张图,虽然不是一个人,但是它们都是在描述一件事情。按说应该是在描述一件事情。我们认为这两张图是相似的,相似度90以上。

 

openCV 计算的相关性分数

均方差(MSE): 131.44561624837127

结构相似性指数(SSIM): 5.7201094656E10

峰值信噪比(PSNR): 26.943342540382247

图片相似度(直方图): 0.8858558728156901

案例2

两张图,来源于同一个视频,不同的帧。 直观上判断,这两个是同一个事情。相似度大于95。

 

均方差(MSE): 123.0275316249348

结构相似性指数(SSIM): 1.909637632E9

峰值信噪比(PSNR): 27.230780502837018

图片相似度(直方图): 0.9565945992942751

案例3

虽然都是马斯克。但是这是在描述两件不同的事情。相似度应该较低。

 

 

均方差(MSE): 209.28278961867477

结构相似性指数(SSIM): 5.423145472E9

峰值信噪比(PSNR): 24.923468452906206

图片相似度(直方图): 0.34953414682303025

案例4

其中以下两张图,第二张图片可以使用openCV重新做比对。在es中给出相关性是85%。openCV对比的相似性为77%,可以通过设置相似度85%阈值,排除错误结果。

 

均方差(MSE): 185.4257086381148

结构相似性指数(SSIM): 2.40297230336E11

峰值信噪比(PSNR): 25.449104134454515

图片相似度(直方图): 0.7713211102457774

 

ES使用 es 8.8的KNN向量检索。

 其中openCV对比两张图相似度代码

使用openCV比对任意两张图片的相似度(亲测较准确)_水的精神的博客-CSDN博客


http://www.ppmy.cn/news/165347.html

相关文章

Z370服务器系统,新机技嘉Z370主板Bios设置及重装win7系统|Z370主板安装win7教程

技嘉Z370是采用Intel新一代Z370芯片组的主板,采用严选用料及超耐久防护,可完美发挥八代Intel酷睿系列处理器的强劲性能,并提供超高内存频率,让玩家在享受高性能的同时无后顾之忧。可是目前Intel酷睿八代系列处理器,只完美支持win10,想要完美支持win7,恐怕不行,但还是有…

Z370主板的黑苹果usb3.0驱动安装

注意每个版本的usb端口代码是不一样的!一般是10.10到10.12 是一个版本,10.13 是一个版本 配合USBInjectAll.kext这个驱动就能顺利驱动你的usb3.0 。如果你是比较新的主板170 270 370 150 250等主板 还需要XHCI-200-series-injector.kext 配合驱动。 R大…

【实战系列】intel 8代CPU I7 8700完美装WIN7系统

本系列教程是本人维修实战过程中的经验截图,适合维修装机人员学习使用。截图步骤清晰易懂,一步一图,小白也能学会。装系统之前首先你得有一个能装系统的U盘启动盘,怎么制作U盘启动盘,请看之前的教程——最简单的U盘启动…

技嘉Z370 HD3P + i7-8700K + GTX1080 装黑苹果 High Sierra 10.13.6

前言 本博文记录了组装台式机装黑苹果 High Sierra 10.13.6 的经历。 原本想装 Mojave 10.14 的,可惜发现在 Mojave 下还没有 GTX1080 的驱动,所以只能退而求其次装 High Sierra 了。 装 High Sierra 的过程中,第一次使用 10.13.6(17G2112…

华硕PRIME Z370M-PLUS II 魔改BIOS 测试正常

华硕PRIME Z370M-PLUS II 魔改BIOS 测试正常 Z370M-plus 直接上,六代,七代,八代,九代 志强e3-V5。系列的CPU

数字工厂解决方案,先进的数字工厂怎么建立?

2023年5月23日,国家市场监督管理总局(国家标准化管理委员会)发布2023年第2号中华人民共和国国家标准公告:批准GB/T 42562-2023《工业互联网平台选型要求》;GB/T 42568-2023《工业互联网平台微服务参考框架》&#xff1…

VMware vSphere 8.0 Update 1a 正式版发布 - 企业级工作负载平台

VMware vSphere 8.0 Update 1a 正式版发布 - 企业级工作负载平台 ESXi 8.0 U1 & vCenter Server 8.0 U1 请访问原文链接:https://sysin.org/blog/vmware-vsphere-8-u1/,查看最新版。原创作品,转载请保留出处。 作者主页:sy…