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

图片相似度对比

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.rhkb.cn/news/48920.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pgAdmin的数据导入之CSV

在向数据库批量导入数据时,可以参考此过程 1、对于现有的Excel文件,首先应另存为 .csv文件,记住分割符(逗号分割),在后边导入用到。 2、用记事本打开保存后的csv文件,以utf-8格式另存为文件。不执行此编码格式&#xf…

ThinkPHP5 关于CSV文件的导入与导出

近期的应项目需求&#xff0c;需要用到数据的导入与导出&#xff0c;因为数据比较多&#xff0c;思来想去使用了CSV格式的文件&#xff0c;结合了网上各位大佬的文章&#xff0c;具体代码如下&#xff1a; 在thinkphp/library/think下新建Csv.php文件&#xff1a; <?php …

SQLyog Community如何正确导出CSV

第一步&#xff1a;选择导出 弹出Export As界面&#xff0c;将 前端添加列名称 选中&#xff08;不然导出的数据无列名&#xff09; 第二步&#xff1a;点击更改弹出指定转义字符界面&#xff0c;然后按图设置参数即可 注&#xff1a;变量长度->字段被终止&#xff0c;设置…

go实现导出excel或csv文件

go实现导出excel或csv文件 很早之前的一个项目需求要&#xff0c;需要把公司信息列表和漏洞信息列表导出excel文件&#xff0c;没有很高要求&#xff0c;能看就行吧&#xff0c;就做了导出csv的两个接口。 最近看我的CSDN发现好久没有写了&#xff0c;惭愧啊&#xff01;其实遇…

2.2如何从CSV文件中导入数据

2.2 如何从CSV文件中导入数据 1、CSV格式&#xff0c;顾名思义就是指逗号分隔的值&#xff08;文件中还包括一个文件头&#xff0c;也是用逗号分隔&#xff09; 2、从CSV文件中导入数据有一下5个步骤&#xff1a; 打开ch02-data.csv文件。首先读取文件头然后读取剩余行当发生…

免费“白嫖” GPT-4 方法 +1,飙升 GitHub 热榜第二!开发者锐评:跟“偷”有什么区别?...

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 前不久&#xff0c;可“白嫖” GPT-4 的 Forefront Chat 吸引了众多关注&#xff0c;导致该网站一度崩溃&#xff0c;也令不少人发出疑问&#xff1a;“GPT-4 这么贵&#xff0c;为什么它能免费让我们…

雅思两次7.5经验分享~希望帮你冲击雅思高分!

本文首发于我的知乎文章&#xff0c;见链接。 雅思两次7.5经验分享~希望帮你冲击雅思高分&#xff01; - Mr.HenryHuang的文章 - 知乎 https://zhuanlan.zhihu.com/p/163391234 长文预警&#xff0c;可以点赞收藏再看&#xff0c;希望对你们有帮助O(∩_∩)O~ 本文并不能通过一…

雅思写作攻略 - 提高Task 1成绩

雅思写作攻略 - 提高Task 1成绩 Move Up In IELTS - Succeed in IELTS Task 1 Academic Writing &#x1f393;✍️想在IELTS写作考试中取得好成绩吗&#xff1f;这本书《Move Up In IELTS - Succeed in IELTS Task 1 Academic Writing》是你必须拥有的工具&#x1f4da;&…

大数据精准营销应用(一)

文章目录​​​​​​​ 前言 一、精准营销简介 二、大数据精准营销过程 三、大数据精准营销方式 四、项目目标 五、项目流程 六、数据的处理​​​​​​​ 数据的预览 数据的读取 数据的解析 数据预处理 异常值处理 缺失值处理 时间格式和时区转换 量纲转化 重…

最新版本的ChatGPT代码解释器使用指南来了

ChatGPT推出至今最强最有用的功能是什么&#xff1f; 可能要非代码解释器&#xff08;Code Interpreter&#xff09;莫属了。 如果你还无法体验和享受plus带来的极致体验&#xff0c;可以选择共享plus的方式或者自行升级&#xff0c;更多内容访问&#xff1a;链接&#xff1a…

北大斩获ICLR 2023杰出论文奖!清华人大、LeCun获提名

来源&#xff1a;新智元 近日&#xff0c;ICLR公布了2023年的获奖名单&#xff0c;共有4篇获最佳论文奖&#xff0c;5篇获荣誉提名。 其中&#xff0c;来自北京大学的张博航、罗胜杰、王立威、贺笛荣获杰出论文奖&#xff0c;来自清华大学的孔祥哲、刘洋&#xff0c;中国人民大…

什么是技术美术?

前言 技术美术&#xff0c;英文名是Technical Art&#xff0c;简称TA. 说白了就是一群既懂程序又懂美术的人。 至于技术美术是属于程序还是属于美术我们在这里不做过多讨论&#xff0c;要不然会打起来的。。。 反正我认为技术美术就是一名特殊的美术&#xff0c;要不然的话为什…

基于Java+SpringBoot+Vue实现前后端分离美术馆管理系统

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

基于GTSRB数据集的交通标志识别实验(Tensorflow)

基于GTSRB的交通标志识别实验 一、数据数据读取 二、搭建网络三、模型预测四、附录模块导入Code 结语 一、数据 官网下载太慢&#xff0c;然后我找到了一个整理好的数据集 链接: GTSRB-德国交通标志识别图像数据 . 数据集很干净&#xff0c;直接用就好了&#xff0c;它把所有的…

MOOC TensorFlow入门实操课程代码回顾总结(二)

欢迎来到TensorFlow入门实操课程的学习 MOOC TensorFlow入门实操课程代码回顾总结&#xff08;一&#xff09; MOOC TensorFlow入门实操课程代码回顾总结&#xff08;三&#xff09; 注&#xff1a; 用于表示python代码粘贴运行结果 目录 5 图像分类基础应用——猫狗分类案例5…

基于jupyter notebook的python编程-----猫狗数据集的阶段分类得到模型精度并进行数据集优化

基于jupyter notebook的python编程-----猫狗数据集的阶段分类并得到模型精度和后续优化 一、名词解释1、什么是overfit&#xff08;过拟合&#xff09;&#xff1f;2、什么是数据增强&#xff1f;3、什么是猫狗数据集&#xff1f; 二、猫狗数据集下载1、猫狗数据集下载2、数据集…

【动手撸深度学习】深度挖掘AI的图像分类能力!

欢迎来到动手撸深度学习~ cv君力挺的:最值得看的专栏系列:动手撸深度学习, 学习完本系列,你能从调包侠到一个能独立打比赛的朋友周边的神!文章付费,不想让太多人白嫖!!!因为全部原创,珍很贵 !!今天给大家来分享一下调参技巧,看完你会感谢我的~ 今天第一节 介绍如何…

卷积神经网络的猫狗识别

文章目录 一、准备工作二、猫狗识别2.1、下载数据集2.1.1、 图片分类2.1.2、图片数量统计 2.2、卷积神经网络CNN2.2.1、网络模型搭建2.2.2、图像生成器读取文件中数据2.2.3、训练2.2.4、保存模型2.2.5、结果可视化 2.3、对模型进行调整2.3.1、图像增强方法2.3.2、模型调整2.3.3…

Python基于keras训练简单微笑识别

文章目录 一、数据预处理二、训练模型创建模型训练模型训练结果 三、预测效果 四、源代码pretreatment.pytrain.pypredict.py 一、数据预处理 实验数据来自genki4k 提取含有完整人脸的图片 def init_file():num 0bar tqdm(os.listdir(read_path))for file_name in bar:bar…

猫狗识别与分类

猫狗识别与分类 文章目录 猫狗识别与分类一、前言二、环境配置三、源码以及数据集四、基础猫狗识别程序如下1、train.pytrain.py程序结构&#xff1a; 2、detect.pydetect.py程序结构&#xff1a; 五、配置环境过程1、打开Anaconda Prompta、创建一个叫MNIST4的环境b、创建成功…