DreamSim 模型:学习人类视觉相似性的新维度
引言
想象一下,你是一位专业的艺术品鉴定师,需要判断两幅画作的相似程度。传统的计算机可能会说:"这两幅画的像素值差异很大,所以它们完全不同。"但你作为人类专家会说:"虽然像素不同,但它们在风格、主题和情感表达上非常相似。"
DreamSim 就是这样一位"AI 艺术品鉴定师"。它能够像人类一样理解图像的感知相似性,而不仅仅是计算像素级的差异。就像一位经验丰富的鉴赏家,DreamSim 能够捕捉到传统指标无法衡量的相似性维度——语义、风格、结构和感知层面的相似性。
第一部分:DreamSim 是什么?
核心比喻:感知相似性专家
让我们用一个更具体的比喻来理解 DreamSim:
DreamSim 就像一位经过专业训练的视觉相似性评估专家。
传统方法的局限
传统的图像相似度评估方法(如 MSE、PSNR、SSIM)就像用尺子测量两幅画:
传统方法(像素级比较):
- 看到两幅画,比较每个像素的颜色值
- 如果像素值不同,就认为画不同
- 就像用尺子测量,只能看到表面的差异
问题:
- 无法理解语义相似性
- 无法捕捉风格相似性
- 无法感知情感相似性
DreamSim 的突破
DreamSim 就像一位专业的艺术鉴赏家:
DreamSim(感知相似性评估):
- 看到两幅画,理解它们的深层含义
- 能够识别风格、主题、情感的相似性
- 就像艺术鉴赏家,能够看到本质的相似性
优势:
- 理解语义相似性
- 捕捉风格相似性
- 感知情感相似性
- 更符合人类视觉判断
技术定义
DreamSim 是由 MIT、Weizmann Institute of Science 和 Adobe Research 联合开发的感知相似性度量模型,发表在 NeurIPS 2023 Spotlight。它的核心思想是:
通过学习人类对图像相似性的判断,训练一个能够像人类一样评估图像感知相似性的模型,而不仅仅是计算像素级或结构级的差异。
关键特性
- 感知对齐:评估结果与人类视觉判断高度一致
- 多维度理解:能够捕捉语义、风格、结构等多维度相似性
- 使用合成数据训练:在 NIGHTS 数据集上训练,包含人类标注的相似性判断
- 灵活应用:可用于相似度计算、图像检索、特征提取、感知损失等多种场景
第二部分:DreamSim 是如何工作的?
比喻:三位专家的协作
DreamSim 使用集成架构,就像三位专家共同评估:
三位专家
1. CLIP 专家(ViT-B/16)
- 擅长理解图像和文本的语义关联
- 能够识别图像中的语义内容
- 就像一位语言学家,理解图像的含义
2. DINO 专家(ViT-B/16)
- 擅长捕捉图像的视觉特征
- 能够识别图像的结构和模式
- 就像一位视觉分析师,理解图像的结构
3. OpenCLIP 专家(ViT-B/16)
- 擅长理解大规模视觉-语言关联
- 能够识别图像的风格和特征
- 就像一位风格鉴赏家,理解图像的风格
协作方式
三位专家分别评估:
CLIP专家:给出语义相似度评分
DINO专家:给出结构相似度评分
OpenCLIP专家:给出风格相似度评分
最终综合评分:
综合三位专家的意见,得出最终的感知相似度
技术架构
1. 集成架构(Ensemble)
DreamSim 默认使用三个预训练模型的集成:
# 集成架构
ensemble = {
"CLIP": CLIPModel(ViT-B/16),
"DINO": DINOModel(ViT-B/16),
"OpenCLIP": OpenCLIPModel(ViT-B/16)
}
# 综合三个模型的输出
final_score = combine(CLIP_score, DINO_score, OpenCLIP_score)
优势:
- 更准确的评估
- 多维度理解
- 鲁棒性强
劣势:
- 计算速度较慢
- 需要更多资源
2. 单分支架构(Single-Branch)
为了提升速度,DreamSim 也提供单分支版本:
# 单分支架构(约3倍加速)
single_branch_options = [
"OpenCLIP-ViTB/32", # 性能最好
"DINO-ViTB/16", # 平衡性能
"CLIP-ViTB/32" # 速度最快
]
优势:
- 速度快(约3倍加速)
- 资源占用少
- 适合实时应用
劣势:
- 精度略低于集成版本
训练数据:NIGHTS 数据集
什么是 NIGHTS?
**NIGHTS(Novel Image Generations with Human-Tested Similarities)**是 DreamSim 的训练数据集。
比喻理解:
- 就像给 AI 提供大量"考试题"和"标准答案"
- 每道题都是:给定三张图像,判断哪两张更相似
- 人类标注者给出"标准答案"
- AI 学习人类的判断标准
数据集特点
- 20k 一致三元组:所有标注者都一致认为的相似性判断
- 100k 未过滤三元组:包含更多样化的判断(用于研究)
- 合成数据:使用生成模型创建多样化的图像对
- 人类标注:由真实人类标注者判断相似性
第三部分:DreamSim 的核心功能
功能 1:感知相似度计算
这是 DreamSim 最基础的功能,用于计算两张图像之间的感知距离。
类比理解:
- 就像测量两座城市之间的距离
- 传统方法:测量直线距离(像素差异)
- DreamSim:测量"感知距离"(人类感觉的相似程度)
代码示例
"""
感知相似度度量
测量两张图像之间的感知距离。分数越高表示差异越大,分数越低表示越相似。
"""
from dreamsim import dreamsim
from PIL import Image
import torch
if torch.cuda.is_available():
device = "cuda"
else:
device = "cpu"
print(f"Using device: {device}")
model, preprocess = dreamsim(pretrained=True, device=device, cache_dir="./models")
img1 = preprocess(Image.open("./images/image1.png")).to(device)
img2 = preprocess(Image.open("./images/image2.png")).to(device)
distance_tensor = model(img1, img2)
print(f"Distance1: {distance_tensor.cpu().item()}")
img3 = preprocess(Image.open("./images/image3.jpg")).to(device)
img4 = preprocess(Image.open("./images/Mona-Lisa-Smile.jpg")).to(device)
distance_tensor2 = model(img3, img4)
print(f"Distance2: {distance_tensor2.cpu().item()}")
输出示例
# 示例输出
distance = 0.4453 # 两张图像差异较大
distance = 0.2756 # 两张图像较为相似
distance = 0.1234 # 两张图像非常相似

功能 2:特征提取
DreamSim 可以提取单张图像的嵌入向量,用于后续任务。
类比理解:
- 就像给每张图像制作一个"身份证"
- 身份证上的信息(嵌入向量)代表了图像的特征
- 通过比较身份证,可以判断图像的相似性
代码示例
from dreamsim import dreamsim
from PIL import Image
import torch
if torch.cuda.is_available():
device = "cuda"
else:
device = "cpu"
print(f"Using device: {device}")
model, preprocess = dreamsim(pretrained=True, device=device, cache_dir="./models")
img1 = preprocess(Image.open('./images/image1.png')).to(device)
embedding = model.embed(img1)
print(embedding.cpu().numpy())
应用场景
- 图像检索:预计算所有图像的嵌入,快速检索
- 相似度计算:通过嵌入向量的余弦距离计算相似度
- 聚类分析:基于嵌入向量对图像进行聚类
功能 3:图像检索
DreamSim 可以用于图像检索,根据查询图像找到最相似的图像。
类比理解:
- 就像在图书馆找书
- 传统方法:根据书名或作者(关键词匹配)
- DreamSim:根据"感觉相似"(感知相似性)
代码示例
from dreamsim import dreamsim
import pandas as pd
from tqdm import tqdm
import torch.nn.functional as F
import torch
from PIL import Image, ImageDraw, ImageFont
import os
if torch.cuda.is_available():
device = "cuda"
else:
device = "cpu"
print(f"Using device: {device}")
model, preprocess = dreamsim(pretrained=True, device=device, cache_dir="./models")
# let query be a sample image.
# let images be a list of images we are searching.
images = [
Image.open('./images/image1.png'),
Image.open('./images/image2.png'),
Image.open('./images/image3.jpg'),
Image.open('./images/image4.jpg'),
Image.open('./images/image5.jpg'),
Image.open('./images/Mona-Lisa-Smile.jpg'),
]
query = Image.open('./images/image1.png')
# Compute the query image embedding
query_embed = model.embed(preprocess(query).to(device))
dists = {}
# Compute the (cosine) distance between the query and each search image
for i, im in tqdm(enumerate(images), total=len(images)):
img_embed = model.embed(preprocess(im).to(device))
dists[i] = (1 - F.cosine_similarity(query_embed, img_embed, dim=-1)).item()
# Return results sorted by distance
df = pd.DataFrame({"ids": list(dists.keys()), "dists": list(dists.values())})
print(df.sort_values(by="dists"))
print(df.sort_values(by="ids"))

优化技巧
- 预计算嵌入:提前计算所有图像的嵌入,避免重复计算
- 批量处理:批量处理图像,提高效率
- 使用单分支模型:如果速度要求高,使用单分支版本
功能 4:感知损失函数
DreamSim 可以作为损失函数,用于图像生成、风格迁移等任务的优化。
类比理解:
- 就像训练一位画家
- 传统损失函数:要求像素级相似(像要求完全复制)
- DreamSim 损失:要求感知相似(像要求"感觉相似")
代码示例
from dreamsim import dreamsim
from PIL import Image
import torch
import torch.optim as optim
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
# 设置设备
if torch.cuda.is_available():
device = "cuda"
else:
device = "cpu"
print(f"Using device: {device}")
# 加载 DreamSim 模型
model, preprocess = dreamsim(pretrained=True, device=device, cache_dir="./models")
model.eval() # 设置为评估模式
# 加载参考图像(目标图像)
reference_image_path = "./images/image1.png"
reference_image = Image.open(reference_image_path).convert('RGB')
# preprocess返回的是[3, 224, 224],model()函数内部会处理batch维度
reference_tensor = preprocess(reference_image).to(device) # [3, 224, 224]
print(f"参考图像tensor形状: {reference_tensor.shape}")
# 创建可优化的图像(初始化为随机噪声或参考图像的副本)
# 方法1: 从随机噪声开始
# initial_image = torch.randn(3, 224, 224, device=device, requires_grad=True)
# 方法2: 从参考图像开始(添加一些噪声)
initial_image = reference_tensor.clone().detach() # [3, 224, 224]
initial_image = initial_image + torch.randn_like(initial_image) * 0.1
initial_image = torch.clamp(initial_image, 0, 1) # 确保在[0,1]范围内
initial_image.requires_grad_(True)
print(f"初始图像tensor形状: {initial_image.shape}")
# 创建优化器
optimizer = optim.Adam([initial_image], lr=0.01)
# 优化参数
n_iters = 100 # 迭代次数
loss_history = []
print("开始优化...")
# 使用.item()提取标量值
with torch.no_grad():
initial_loss = model(initial_image, reference_tensor)
print(f"初始感知距离: {initial_loss.item():.6f}")
# 迭代优化
for i in range(n_iters):
# 清零梯度
optimizer.zero_grad()
# 确保图像在有效范围内
current_image = torch.clamp(initial_image, 0, 1)
# 计算感知距离(损失)
perceptual_loss = model(current_image, reference_tensor)
# 可选:添加正则化项(L2正则化,防止过度变化)
l2_reg = 0.001 * torch.norm(current_image - reference_tensor, p=2)
# 总损失
total_loss = perceptual_loss + l2_reg
# 反向传播
total_loss.backward()
# 更新参数
optimizer.step()
# 记录损失
loss_history.append(perceptual_loss.item())
# 每10次迭代打印一次
if (i + 1) % 10 == 0:
print(f"Iteration {i+1}/{n_iters}, Perceptual Loss: {perceptual_loss.item():.6f}")
print(f"最终感知距离: {loss_history[-1]:.6f}")

应用场景
- 图像生成:优化生成图像,使其在感知上更接近目标
- 风格迁移:保持内容的同时,迁移风格
- 图像修复:修复图像,使其在感知上更自然
第四部分:DreamSim 与其他方法的对比
对比表格
| 特性 | DreamSim | LPIPS | SSIM | MSE/PSNR |
|---|---|---|---|---|
| 感知对齐 | ✅ 优秀 | ✅ 良好 | ⚠️ 一般 | ❌ 差 |
| 语义理解 | ✅ 强 | ⚠️ 中等 | ❌ 弱 | ❌ 无 |
| 风格理解 | ✅ 强 | ⚠️ 中等 | ❌ 弱 | ❌ 无 |
| 训练数据 | 合成数据+人类标注 | 自然图像 | - | - |
| 计算速度 | 快 | 中等 | 快 | 很快 |
| 资源占用 | 中等 | 中等 | 低 | 很低 |
实际对比示例
场景 1:风格相似但内容不同
图像A:一幅印象派风格的风景画
图像B:一幅印象派风格的人物画
传统方法(MSE/SSIM):
- 认为差异很大(像素和结构都不同)
- 评分:低相似度
DreamSim:
- 识别出风格相似(都是印象派)
- 评分:中等相似度(更符合人类判断)
场景 2:内容相似但风格不同
图像A:一张真实的猫的照片
图像B:一张卡通风格的猫的图片
传统方法(MSE/SSIM):
- 认为差异很大(像素和结构都不同)
- 评分:低相似度
DreamSim:
- 识别出内容相似(都是猫)
- 评分:中等相似度(更符合人类判断)
场景 3:完全不同的图像
图像A:一张猫的照片
图像B:一张狗的照片
所有方法:
- 都认为差异很大
- 评分:低相似度
第五部分:DreamSim 的实际应用
应用 1:图像质量评估
场景:评估生成图像的质量
# 评估生成图像与参考图像的感知相似度
generated_image = preprocess(Image.open("generated.jpg")).to("cuda")
reference_image = preprocess(Image.open("reference.jpg")).to("cuda")
quality_score = model(generated_image, reference_image)
print(f"图像质量评分: {1 - quality_score.item():.4f}") # 转换为相似度
优势:
- 更符合人类对图像质量的判断
- 能够识别感知层面的质量问题
应用 2:图像去重
场景:识别数据集中相似或重复的图像
# 批量计算图像相似度
images = [Image.open(f"img_{i}.jpg") for i in range(1000)]
embeddings = []
# 预计算所有图像的嵌入
for img in images:
emb = model.embed(preprocess(img).to("cuda"))
embeddings.append(emb)
# 计算相似度矩阵
similarity_matrix = []
for i in range(len(embeddings)):
row = []
for j in range(len(embeddings)):
sim = F.cosine_similarity(embeddings[i], embeddings[j], dim=-1)
row.append(sim.item())
similarity_matrix.append(row)
# 找出相似图像对(相似度 > 0.95)
duplicates = []
for i in range(len(similarity_matrix)):
for j in range(i+1, len(similarity_matrix)):
if similarity_matrix[i][j] > 0.95:
duplicates.append((i, j))
应用 3:图像编辑评估
场景:评估编辑后的图像与原始图像的感知差异
# 评估编辑效果
original_image = preprocess(Image.open("original.jpg")).to("cuda")
edited_image = preprocess(Image.open("edited.jpg")).to("cuda")
edit_distance = model(original_image, edited_image)
print(f"编辑距离: {edit_distance.item():.4f}")
if edit_distance.item() < 0.2:
print("编辑效果:感知差异很小,编辑自然")
elif edit_distance.item() < 0.5:
print("编辑效果:感知差异中等,编辑明显但可接受")
else:
print("编辑效果:感知差异很大,编辑效果显著")
应用 4:风格迁移优化
场景:使用 DreamSim 作为损失函数优化风格迁移
# 风格迁移优化示例
content_image = preprocess(Image.open("content.jpg")).to("cuda")
style_image = preprocess(Image.open("style.jpg")).to("cuda")
generated_image = content_image.clone().requires_grad_(True)
optimizer = optim.Adam([generated_image], lr=0.01)
for iteration in range(200):
optimizer.zero_grad()
# 内容损失(保持内容相似)
content_loss = model(generated_image, content_image)
# 风格损失(迁移风格)
style_loss = model(generated_image, style_image)
# 总损失
total_loss = content_loss + 0.5 * style_loss
total_loss.backward()
optimizer.step()
第六部分:安装和使用指南
安装方法
方法 1:使用 pip(推荐)
pip install dreamsim
优点:
- 简单快速
- 自动处理依赖
- 适合快速使用
方法 2:从源码安装
# 克隆仓库
git clone https://github.com/ssundaram21/dreamsim.git
cd dreamsim
# 创建虚拟环境
python3 -m venv ds
source ds/bin/activate # Windows: ds\Scripts\activate
# 安装依赖
pip install -r requirements.txt
export PYTHONPATH="$PYTHONPATH:$(realpath ./dreamsim)"
优点:
- 可以修改代码
- 可以运行训练/评估脚本
- 适合研究和开发
基本使用
快速开始
from dreamsim import dreamsim
from PIL import Image
# 加载模型(首次运行会自动下载权重)
device = "cuda" if torch.cuda.is_available() else "cpu"
model, preprocess = dreamsim(pretrained=True, device=device)
# 计算两张图像的感知距离
img1 = preprocess(Image.open("image1.jpg")).to(device)
img2 = preprocess(Image.open("image2.jpg")).to(device)
distance = model(img1, img2)
print(f"感知距离: {distance.item():.4f}")
使用单分支模型(更快)
# 使用 DINO 单分支模型(约3倍加速)
model, preprocess = dreamsim(
pretrained=True,
dreamsim_type="dino_vitb16",
device=device
)
# 可选的其他单分支模型:
# - "openclip_vitb32" # 性能最好
# - "clip_vitb32" # 速度最快
提取图像嵌入
# 提取单张图像的嵌入
img = preprocess(Image.open("image.jpg")).to(device)
embedding = model.embed(img)
print(f"嵌入维度: {embedding.shape}")
print(f"嵌入值范围: [{embedding.min():.4f}, {embedding.max():.4f}]")
配置选项
DreamSim 的默认配置在 ./dreamsim/config.py 中定义。主要配置选项包括:
# 模型配置
config = {
"use_patch_model": False, # 是否使用 patch 特征
"dreamsim_type": "ensemble", # 模型类型
"cache_dir": None, # 缓存目录
}
第七部分:技术细节和原理
模型架构详解
1. 特征提取
DreamSim 使用 Vision Transformer (ViT) 作为特征提取器:
# 简化的架构流程
def dreamsim_forward(image1, image2):
# 1. 特征提取
features1 = extract_features(image1) # 使用 ViT
features2 = extract_features(image2)
# 2. 特征融合(集成模型)
if ensemble:
features1 = combine_features(
clip_features1,
dino_features1,
openclip_features1
)
features2 = combine_features(
clip_features2,
dino_features2,
openclip_features2
)
# 3. 计算距离
distance = compute_distance(features1, features2)
return distance
2. 距离计算
DreamSim 使用余弦距离计算感知相似度:
# 余弦距离计算
def cosine_distance(embed1, embed2):
# 归一化嵌入
embed1_norm = F.normalize(embed1, p=2, dim=-1)
embed2_norm = F.normalize(embed2, p=2, dim=-1)
# 计算余弦相似度
cosine_sim = F.cosine_similarity(embed1_norm, embed2_norm, dim=-1)
# 转换为距离(1 - 相似度)
distance = 1 - cosine_sim
return distance
训练过程
1. 数据准备
# NIGHTS 数据集结构
dataset = {
"triplets": [
{
"anchor": "image1.jpg", # 锚点图像
"positive": "image2.jpg", # 相似图像
"negative": "image3.jpg", # 不相似图像
"label": 1 # 人类标注:positive 更相似
},
# ... 更多三元组
]
}
2. 损失函数
DreamSim 使用对比学习损失:
# 对比学习损失
def contrastive_loss(anchor, positive, negative):
# 计算距离
pos_dist = model(anchor, positive)
neg_dist = model(anchor, negative)
# 损失:positive 距离应该小于 negative 距离
loss = max(0, pos_dist - neg_dist + margin)
return loss
3. 微调过程
# 微调流程
1. 加载预训练模型(CLIP、DINO、OpenCLIP)
2. 在 NIGHTS 数据集上微调
3. 使用对比学习损失优化
4. 保存微调后的模型
第八部分:最佳实践和建议
1. 选择合适的模型
场景 1:需要最高精度
# 使用集成模型(默认)
model, preprocess = dreamsim(pretrained=True, device=device)
场景 2:需要快速处理
# 使用单分支模型
model, preprocess = dreamsim(
pretrained=True,
dreamsim_type="openclip_vitb32", # 性能最好的单分支
device=device
)
场景 3:需要最快速度
# 使用最快的单分支模型
model, preprocess = dreamsim(
pretrained=True,
dreamsim_type="clip_vitb32",
device=device
)
2. 批量处理优化
# 批量处理图像
def batch_process(images, batch_size=32):
embeddings = []
for i in range(0, len(images), batch_size):
batch = images[i:i+batch_size]
batch_tensor = torch.cat([preprocess(img) for img in batch]).to(device)
batch_emb = model.embed(batch_tensor)
embeddings.append(batch_emb)
return torch.cat(embeddings, dim=0)
3. 内存优化
# 使用梯度检查点(如果内存不足)
model = dreamsim(pretrained=True, device=device)
# 在训练时使用 torch.utils.checkpoint
# 使用混合精度(加速)
from torch.cuda.amp import autocast
with autocast():
distance = model(img1, img2)
4. 结果解释
# 距离分数解释
def interpret_distance(distance):
if distance < 0.2:
return "非常相似"
elif distance < 0.4:
return "较为相似"
elif distance < 0.6:
return "中等相似"
elif distance < 0.8:
return "不太相似"
else:
return "完全不同"
distance = model(img1, img2).item()
print(f"相似度: {interpret_distance(distance)}")
第九部分:常见问题和解决方案
Q1: 模型下载很慢怎么办?
A: 使用镜像站或手动下载
# 设置 Hugging Face 镜像
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
# 然后加载模型
model, preprocess = dreamsim(pretrained=True, device=device)
Q2: 内存不足怎么办?
A: 使用单分支模型或减小批次大小
# 使用单分支模型(内存占用更少)
model, preprocess = dreamsim(
pretrained=True,
dreamsim_type="dino_vitb16",
device=device
)
# 减小批次大小
batch_size = 8 # 而不是 32
Q3: 如何提高处理速度?
A: 使用单分支模型、批量处理和 GPU
# 1. 使用单分支模型
model, preprocess = dreamsim(pretrained=True, dreamsim_type="openclip_vitb32")
# 2. 批量处理
embeddings = model.embed(batch_images) # 而不是循环处理
# 3. 使用 GPU
device = "cuda"
Q4: 距离分数如何解释?
A: 参考以下标准
距离范围 | 解释
-------------|------------------
0.0 - 0.2 | 非常相似
0.2 - 0.4 | 较为相似
0.4 - 0.6 | 中等相似
0.6 - 0.8 | 不太相似
0.8 - 1.0 | 完全不同
Q5: 可以用于视频相似度吗?
A: 可以,但需要逐帧处理
# 视频相似度计算
def video_similarity(video1_frames, video2_frames):
distances = []
for frame1, frame2 in zip(video1_frames, video2_frames):
dist = model(preprocess(frame1), preprocess(frame2))
distances.append(dist.item())
return np.mean(distances) # 平均距离
第十部分:总结和展望
核心要点总结
-
DreamSim 是什么:
- 感知相似性度量模型
- 能够像人类一样评估图像相似性
- 使用合成数据和人类标注训练
-
为什么重要:
- 更符合人类视觉判断
- 能够捕捉多维度相似性
- 适用于多种应用场景
-
如何使用:
- 安装:
pip install dreamsim - 基本使用:计算两张图像的感知距离
- 高级应用:图像检索、特征提取、感知损失
- 安装:
-
技术特点:
- 集成架构(CLIP + DINO + OpenCLIP)
- 单分支版本(更快)
- 在 NIGHTS 数据集上训练
应用前景
DreamSim 在以下领域有广阔的应用前景:
- 图像生成:评估生成图像的质量
- 图像编辑:评估编辑效果
- 图像检索:基于感知相似性的检索
- 图像去重:识别相似图像
- 风格迁移:优化风格迁移效果
- 图像质量评估:评估图像质量
未来发展方向
- 更快的模型:进一步优化速度
- 更多维度:理解更多相似性维度
- 视频支持:扩展到视频相似度
- 多模态:扩展到文本、音频等多模态
参考资源
- GitHub 仓库:https://github.com/ssundaram21/dreamsim
- 论文:DreamSim: Learning New Dimensions of Human Visual Similarity using Synthetic Data (NeurIPS 2023 Spotlight)
- Colab 演示:查看 GitHub 仓库中的 Colab 链接
- NIGHTS 数据集:用于训练 DreamSim 的数据集
引用格式
如果使用 DreamSim,请引用:
@misc{fu2023dreamsim,
title={DreamSim: Learning New Dimensions of Human Visual Similarity using Synthetic Data},
author={Stephanie Fu and Netanel Tamir and Shobhita Sundaram and Lucy Chai and Richard Zhang and Tali Dekel and Phillip Isola},
year={2023},
eprint={2306.09344},
archivePrefix={arXiv},
primaryClass={cs.CV}
}