DreamSim技术小结

paperhttps://arxiv.org/abs/2306.09344
codehttps://github.com/ssundaram21/dreamsim
orgMiT
个人博客主页http://myhz0606.com/article/dream_sim

1 Motivation

目前较为成熟度量图片相似性的做法是通过模型将图片转为embedding,再用余弦相似度来度量相似性。虽然在大量数据上训练的vision foundation model提取的embedding具备丰富的high level特征并在图像搜索等业务取得了大量成功,但模型计算的相似性和human perceptual similarity还是有一定的差距。

针对上述问题,本文提出一个新的指标Dreamsim。Dreamsim更forcus前景和语义信息等high level的特征,并兼顾color、layout等low level特征,能更好的对齐human perceptual similarity。

2 Method

2.1 Human Perceptual Similarity数据集构建

2.1.1 Two alternative forced choice(2AFC)

这个数据集旨在通过对比的方式来定义human perceptual similarity。

作者采用Amazon Mechanical Turk (AMT)平台用于数据搜集:标注步骤如下:

通过diffusion model合成了10w个三元组图片 { ( x ~ 0 ( i ) , x ( i ) , x ~ 1 ( i ) ) ∣ i = 1 , 2 , ⋯ 100000 } \{(\tilde {x}_0^{(i)}, x^{(i)}, \tilde{x}_1^{(i)})| i = 1, 2, \cdots 100000\} {(x~0(i),x(i),x~1(i))i=1,2,100000}。依次为扰动图片A( x ~ 0 \tilde{x}_0 x~0),参考图片Ref( x x x),扰动图片B ( x ~ 1 \tilde{x}_1 x~1)。标注者需要从 ( x ~ 0 , x ~ 1 ) (\tilde{x}_0, \tilde{x}_1) (x~0,x~1)选择与 x x x更相似的图片。标注过程重复10轮(不止一个标注人员)。10轮标注后,每一个三元组都有10份标注结果,若当前三元组超过6份标注结果一致,则认为该标注结果可信。最后得到20019份可信的标注结果: D 2 a f c = { ( x ~ 0 ( i ) , x ( i ) , x ~ 1 ( i ) ) , y ( i ) ∣ i = 1 , 2 , ⋯ 20019 } \mathcal{D}^{\mathrm{2afc}} = \{(\tilde {x}_0^{(i)}, x^{(i)}, \tilde{x}_1^{(i)}), y^{(i)}| i = 1, 2, \cdots 20019\} D2afc={(x~0(i),x(i),x~1(i)),y(i)i=1,2,20019}, y y y表示当前三元组的标注结果。

作者按照8:1:1划分为训练集、验证集、测试集

在这里插入图片描述

2.1.2 Just noticeable differences (JND)

这个数据集旨在定义开始变得不相似的边界(characterize the boundary when a distortion becomes just noticeable),低于这个边界认为感知相似。

标注过程如下:

将2AFC搜集的数据集 D 2 a f c = { ( x ~ 0 ( i ) , x ( i ) , x ~ 1 ( i ) ) , y ( i ) ∣ i = 1 , 2 , ⋯ 20019 } \mathcal{D}^{\mathrm{2afc}} = \{(\tilde {x}_0^{(i)}, x^{(i)}, \tilde{x}_1^{(i)}), y^{(i)}| i = 1, 2, \cdots 20019\} D2afc={(x~0(i),x(i),x~1(i)),y(i)i=1,2,20019},标注者对每一个三元组需要分别判断 ( x ~ 0 ( i ) , x ( i ) ) (\tilde {x}_0^{(i)}, x^{(i)}) (x~0(i),x(i)) ( x ( i ) , x ~ 1 ( i ) ) (x^{(i)}, \tilde{x}_1^{(i)}) (x(i),x~1(i))是否相似。当这两个二元组只有一组判定为相似时,保留该三元组且保留标注结果。最终获得411个标注结果 D j n d = { ( x ~ 0 ( i ) , x ( i ) , x ~ 1 ( i ) ) , s ( i ) ∣ i = 1 , 2 , ⋯ 411 } \mathcal{D}^{\mathrm{jnd}} = \{(\tilde {x}_0^{(i)}, x^{(i)}, \tilde{x}_1^{(i)}), s^{(i)}| i = 1, 2, \cdots 411\} Djnd={(x~0(i),x(i),x~1(i)),s(i)i=1,2,411}

📌注意,为了保证标注质量:

  1. 标注过程是在三元组间交错进行,不会顺序标注 ( x ~ 0 ( 1 ) , x ( 1 ) ) → ( x ( 1 ) , x ~ 1 ( 1 ) ) (\tilde {x}_0^{(1)}, x^{(1)}) \rightarrow (x^{(1)}, \tilde{x}_1^{(1)}) (x~0(1),x(1))(x(1),x~1(1)),二是 ( x ~ 0 ( M ) , x ( M ) ) → ( x ( K ) , x ~ 1 ( K ) ) , M ≠ K (\tilde {x}_0^{(M)}, x^{(M)}) \rightarrow (x^{(K)}, \tilde{x}_1^{(K)}), M \neq K (x~0(M),x(M))(x(K),x~1(K)),M=K
  2. 和2AFC的标注类似,每一对会有3个独立的标注者标注,以投票作为最终的标注结果。

在这里插入图片描述

2.2 Perceptual Metric Learning

模型 f θ f_\theta fθ对相似的预测定义如下:

y ^ = { 1 , D ( x , x ~ 0 ; f θ ) > D ( x , x ~ 1 ; f θ ) 0 , D ( x , x ~ 1 ; f θ ) > D ( x , x ~ 0 ; f θ ) \hat{y} = \begin{cases} 1, D(x, \tilde{x}_{0};f_{\theta}) > D(x, \tilde{x}_{1};f_{\theta}) \\ 0, D(x, \tilde{x}_{1};f_{\theta}) > D(x, \tilde{x}_{0};f_{\theta}) \end{cases} y^={1,D(x,x~0;fθ)>D(x,x~1;fθ)0,D(x,x~1;fθ)>D(x,x~0;fθ)

其中 D ( x , x ~ ; f θ ) = 1 − cos ⁡ ( f θ ( x ) , f θ ( x ~ ) ) D(x, \tilde{x};f_{\theta}) = 1 - \cos (f_{\theta} (x) , f_{\theta} (\tilde{x})) D(x,x~;fθ)=1cos(fθ(x),fθ(x~))。通过模型预测和标注的差异来评估模型对human perceptual similarity的对齐程度。

2.2.1 模型架构与训练

作者采用开源模型CLIP、OpenCLIP、DINO、MAE作为base model,并用Lora,MLP两种微调范式在2AFC数据集上用hinge loss (等价triplet los)作为训练目标进行微调。

L ( y , y ^ ) = m a x ( 0 , m − Δ d ⋅ y ˉ ) , w h e r e Δ d = d 0 − d 1 . { \mathcal L } ( y , \hat { y } ) = \mathrm { m a x } ( 0 , m \, - \, \Delta d \cdot \bar { y } ) , \mathrm { w h e r e } \, \Delta d = \, d _ { 0 } - d _ { 1 } . L(y,y^)=max(0,mΔdyˉ),whereΔd=d0d1.

其中: y ∈ { 0 , 1 } → y ˉ ∈ { − 1 , 1 } y \in \{ 0 , 1 \} \rightarrow \bar { y } \in \{-1, 1\} y{0,1}yˉ{1,1}, m = 0.05 m=0.05 m=0.05

在这里插入图片描述

3 Result

3.1 benchmark的performance

下图给出了训练后模型对human perceptual similarity的对齐效果。主要结论有

  • fine-tune后,在该数据集定义的相似性上效果更好(能提升3~6%)
  • 采用LoRA finetune比加一个MLP的效果更好(3%左右)

在这里插入图片描述
在这里插入图片描述

3.2 图片属性对相似度决策一致性的影响

作者探究移除不同图像属性,相似一致性的维持情况。

  • 模态变化较大时,相似度维持较差。作者此处没有充分给出只改变reference模态的情形。通过后续跨模态搜索的相关实验可见,模型对跨模态的相似度维持得效果还有待提高。

在这里插入图片描述

3.3 跨模态搜索效果

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783875.shtml

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

相关文章

【数据分析面试】1. 计算年度收入百分比(SQL)

题目 你需要为公司的营收来源生成一份年度报告。计算截止目前为止,在表格中记录的第一年和最后一年所创造的总收入百分比。将百分比四舍五入到两位小数。 示例: 输入: annual_payments 表 列名类型amountINTEGERcreated_atDATETIMEstatusV…

Linux企业级别日志的查找

企业级别日志的查找 查看mysql数据库的日志错误日志(Error Log)查询日志(General Query Log)慢查询日志(Slow Query Log)事务日志(Transaction Log)二进制日志(Binary Lo…

Thread 之start 和run 的区别

Java Thread 之start 和run 的区别 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行&#x…

【MATLAB源码-第23期】基于matlab的短时傅里叶STFT信号变换仿真,得到信号的时频曲线图。

操作环境: MATLAB 2022a 1、算法描述 短时傅里叶变换(Short-Time Fourier Transform,STFT)是傅里叶变换的一种扩展,用于分析信号在时域和频域上的变化。描述如下: 1. **时域与频域分析**: …

【Chapter2】进程、线程与作业,计算机操作系统教程,第四版,左万利,王英

文章目录 [toc] 一、多道程序设计1.1单道程序设计的缺点1.2多道程序设计的提出1.3多道程序设计存在的问题 二、进程的引入2.1进程的概念2.2进程的组成2.2.1进程控制块2.2.2程序 2.3进程的类型及特征2.3.1进程的类型2.3.2进程的特征 2.4进程的状态及转换2.4.1进程的状态创建态就…

【对比golang和java的区别】

🌈个人主页:程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

【LeetCode: 330. 按要求补齐数组 + 贪心 + 构造区间】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Beans模块之工厂模块DisposableBean

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

【STM32嵌入式系统设计与开发】——12IWDG(独立看门狗应用)

这里写目录标题 一、任务描述二、任务实施1、ActiveBeep工程文件夹创建2、函数编辑(1)主函数编辑(2)USART1初始化函数(usart1_init())(3)USART数据发送函数( USART1_Send_Data(&…

2025中国跨境电商交易会(春季福州)

2025中国跨境电商交易会(春季福州) 时间:2025年3月18-20日 地点:福州海峡国际会展中心 预订以上展会详询陆先生 I38(前三位) I82I(中间四位) 9I72(后面四位&#x…

系统慢查询的思考

系统慢查询的思考 在一个系统中发现慢查询的功能或很卡的现象。你是怎么思考的?从哪几个方面去思考?会用什么工具? 一个系统使用了几年后都可能会出现这样的问题。原因可能有以下几点。 数据量的增加。系统中平时的使用中数据量是有一个累…

数据结构——优先级队列及多服务台模拟系统的实现

一、优先级队列的定义和存储 优先级队列定义:优先级高的元素在队头,优先级低的元素在队尾 基于普通线性表实现优先级队列,入队和出队中必有一个时间复杂度O(n),基于二叉树结构实现优先级队列,能够让入队和出队时间复杂度都为O(log…

正多边形拓扑与泛函

(原创:Daode3056) 也许,关于“拓扑”,“泛函”几本书上的内容与实例都是大同小异,总是那么点内容,数学要开拓一些新领域与新内容才能满足不断发展的社会与工业各种需要。本文就以人工智能生成对…

喜报!湖南创远荣获“2023年度中国有色金属工业科技进步奖”二等奖

近日,一则喜讯传来,湖南创远再创佳绩,联合中南大学、山西紫金合作的“智能矿山穿孔装备智能作业系统”项目荣获“中国有色金属工业科学技术奖二等奖”。 穿孔作业是传统非煤矿山开采的关键环节,穿孔效率、穿孔质量,直接…

nextjs+shadcn学习

1、安装nextjs 创建文件夹next-shadcn 在文件夹中执行 npx create-next-applatest . --typescript --tailwind --eslint安装后,跑起来 2、安装shadcn 在刚才目录下,运行命令 npx shadcn-uilatest init目录中会增加两个目录 components 和lib 替换原…

MySql实战--行锁功过:怎么减少行锁对性能的影响

在上一篇文章中,我跟你介绍了MySQL的全局锁和表级锁,今天我们就来讲讲MySQL的行锁。 MySQL的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁,比如MyISAM引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁&#xf…

通天星CMSV6 车载定位监控平台 任意文件上传漏洞复现(XVE-2023-23454)

0x01 产品简介 通天星CMSV6车载定位监控平台拥有以位置服务、无线3G/4G视频传输、云存储服务为核心的研发团队,专注于为定位、无线视频终端产品提供平台服务,通天星CMSV6产品覆盖车载录像机、单兵录像机、网络监控摄像机、行驶记录仪等产品的视频综合平台。 0x02 漏洞概述 …

【Chiplet】技术总结

Chiplet基本知识点汇总 1. Wafer, die, chip, cell的区分2. MCM, SiP, SoC, Chiplet的区别4. Chiplets的先进封装5. Chiplet发展阶段 Chiplet基本知识点汇总 1. Wafer, die, chip, cell的区分 Wafer: 晶圆,指一整个晶圆硅片。 Die: 从晶圆上切分下来的小方格&a…

Vue3+.NET6前后端分离式管理后台实战(十)

1,Vue3.NET6前后端分离式管理后台实战(十)已经在订阅号发布有兴趣的可以关注一下! 感兴趣请关注订阅号谢谢! 代码已经上传gitee

C++--内联函数

当调用一个函数时,程序就会跳转到该函数,函数执行完毕后,程序又返回到原来调用该函数的位置的下一句。 函数的调用也需要花时间,C中对于功能简单、规模小、使用频繁的函数,可以将其设置为内联函数。 内联函数&#xff…