秦皇岛公司做网站,百度网络电话,wordpress头条,怎么样编辑wordpress图片相似度对比 1、需求 假如有一个图片池#xff0c;存有1亿图片。给一张目标图片#xff0c;在图片池中做匹配。 判断一张图片是否在图片池中出现过。#xff08;完全一样#xff09;判断有没有相似的出现过。比如两张图相似度90#xff0c;两张图片是在描述一件事情。 … 图片相似度对比 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返回的相关性分时并不合适。 使用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博客