[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-ssundaram21--dreamsim":3,"tool-ssundaram21--dreamsim":64},[4,18,26,35,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,2,"2026-04-06T11:32:50",[14,15,13],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":10,"last_commit_at":41,"category_tags":42,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[43,15,13,14],"语言模型",{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":17},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[14,15,13,52],"视频",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85013,"2026-04-06T11:09:19",[15,16,52,61,13,62,43,14,63],"插件","其他","音频",{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":80,"owner_email":80,"owner_twitter":80,"owner_website":81,"owner_url":82,"languages":83,"stars":92,"forks":93,"last_commit_at":94,"license":95,"difficulty_score":32,"env_os":96,"env_gpu":97,"env_ram":98,"env_deps":99,"category_tags":108,"github_topics":80,"view_count":32,"oss_zip_url":80,"oss_zip_packed_at":80,"status":17,"created_at":109,"updated_at":110,"faqs":111,"releases":141},4748,"ssundaram21\u002Fdreamsim","dreamsim","DreamSim: Learning New Dimensions of Human Visual Similarity using Synthetic Data (NeurIPS 2023 Spotlight) \u002F \u002F \u002F \u002F When Does Perceptual Alignment Benefit Vision Representations? (NeurIPS 2024)","DreamSim 是一款专注于衡量图像视觉相似度的开源感知度量工具。传统的图像评估方法往往陷入两极分化：要么仅关注像素级的颜色和纹理差异，忽略了整体布局与语义；要么过于侧重高层语义，无法捕捉人类眼中细微的视觉差别。DreamSim 巧妙地填补了这一空白，它能够像人类一样，综合考量图像的构图、姿态及语义内容，给出更符合直觉的相似度评分。\n\n该工具的核心亮点在于其独特的训练策略。研究团队利用扩散模型生成了约 2 万组合成图像数据，并在此基础上结合 CLIP、OpenCLIP 和 DINO 等多种先进模型的嵌入特征进行微调。这种“合成数据 + 多模型融合”的方法，使其在 NIGHTS 基准测试中取得了超越现有指标的优异表现，与人类判断的高度一致性高达 96% 以上。此外，DreamSim 还持续迭代，推出了支持 DINOv2 等新骨干网络的多个变体，不仅适用于图像检索，还能提升语义分割、深度估计等下游任务的效果。\n\nDreamSim 非常适合计算机视觉研究人员、AI 开发者以及需要高质量图像评估方案的设计师使用。无论是用于优化生成式 AI 的输出质量，还是构建更精准的图像搜索系统，它都能提供","DreamSim 是一款专注于衡量图像视觉相似度的开源感知度量工具。传统的图像评估方法往往陷入两极分化：要么仅关注像素级的颜色和纹理差异，忽略了整体布局与语义；要么过于侧重高层语义，无法捕捉人类眼中细微的视觉差别。DreamSim 巧妙地填补了这一空白，它能够像人类一样，综合考量图像的构图、姿态及语义内容，给出更符合直觉的相似度评分。\n\n该工具的核心亮点在于其独特的训练策略。研究团队利用扩散模型生成了约 2 万组合成图像数据，并在此基础上结合 CLIP、OpenCLIP 和 DINO 等多种先进模型的嵌入特征进行微调。这种“合成数据 + 多模型融合”的方法，使其在 NIGHTS 基准测试中取得了超越现有指标的优异表现，与人类判断的高度一致性高达 96% 以上。此外，DreamSim 还持续迭代，推出了支持 DINOv2 等新骨干网络的多个变体，不仅适用于图像检索，还能提升语义分割、深度估计等下游任务的效果。\n\nDreamSim 非常适合计算机视觉研究人员、AI 开发者以及需要高质量图像评估方案的设计师使用。无论是用于优化生成式 AI 的输出质量，还是构建更精准的图像搜索系统，它都能提供可靠且专业的量化依据。","\u003C!-- # ![icon](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fssundaram21_dreamsim_readme_42d326751c87.png)  DreamSim Perceptual Metric -->\n\u003C!-- # DreamSim Perceptual Metric \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fssundaram21_dreamsim_readme_42d326751c87.png\" align=\"left\" width=\"50px\"\u002F>  -->\n# DreamSim: Learning New Dimensions of Human Visual Similarity using Synthetic Data\n### [Project Page](https:\u002F\u002Fdreamsim-nights.github.io\u002F) | [Paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2306.09344) | [Bibtex](#bibtex)\n[![Open In Colab](https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg)](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1taEOMzFE9g81D9AwH27Uhy2U82tQGAVI?usp=sharing)\n\n[Stephanie Fu](https:\u002F\u002Fstephanie-fu.github.io)\\* $^{1}$, [Netanel Tamir](https:\u002F\u002Fnetanel-tamir.github.io)\\* $^{2}$, [Shobhita Sundaram](https:\u002F\u002Fssundaram21.github.io)\\* $^{1}$, [Lucy Chai](https:\u002F\u002Fpeople.csail.mit.edu\u002Flrchai\u002F) $^1$, [Richard Zhang](http:\u002F\u002Frichzhang.github.io) $^3$, [Tali Dekel](https:\u002F\u002Fwww.weizmann.ac.il\u002Fmath\u002Fdekel\u002F) $^2$, [Phillip Isola](https:\u002F\u002Fweb.mit.edu\u002Fphillipi\u002F) $^1$.\u003Cbr>\n(*equal contribution, order decided by random seed)\u003Cbr>\n$^1$ MIT, $^2$ Weizmann Institute of Science, $^3$ Adobe Research.\n\n![teaser](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fssundaram21_dreamsim_readme_64645d6089a2.jpg)\n\n**Summary**\n\nCurrent metrics for perceptual image similarity operate at the level of pixels and patches. These metrics compare images in terms of their low-level colors and textures, but fail to capture mid-level differences in layout, pose, semantic content, etc. Models that use image-level embeddings such as DINO and CLIP capture high-level and semantic judgements, but may not be aligned with human perception of more finegrained attributes.\n\nDreamSim is a new metric for perceptual image similarity that bridges the gap between \"low-level\" metrics (e.g. LPIPS, PSNR, SSIM) and \"high-level\" measures (e.g. CLIP). Our model was trained by concatenating CLIP, OpenCLIP, and DINO embeddings, and then finetuning on human perceptual judgements. We gathered these judgements on a dataset of ~20k image triplets, generated by diffusion models. Our model achieves better alignment with human similarity judgements than existing metrics, and can be used for downstream applications such as image retrieval.\n\n## 🚀 Newest Updates\n**10\u002F14\u002F24:** We released 4 new variants of DreamSim! These new checkpoints are:\n- DINOv2 B\u002F14 and SynCLR B\u002F16 as backbones\n- DINOv2 B\u002F14 and DINO B\u002F16 trained with the original contrastive loss on both CLS and dense features.\n  - To extract features from the model variant trained through both the CLS and patch features, set `use_patch_model=True` when calling `dreamsim()`.\n\nThese models (and the originals) are further evaluated in **our new NeurIPS 2024 paper, [When Does Perceptual Alignment Benefit Vision Representations?](https:\u002F\u002Farxiv.org\u002Fabs\u002F2410.10817)**\n\nWe find that our perceptually-aligned representations outperform the baseline models on a variety of standard computer vision tasks, including semantic segmentation, depth estimation, object counting, instance retrieval, and retrieval-augmented generation. These results point towards perceptual alignment as a useful objective for learning general-purpose vision representations. See the paper and our [blog post](https:\u002F\u002Fpercep-align.github.io) \nfor more details.\n\nHere's the updated NIGHTS performance table:\n|                   | NIGHTS - Val | NIGHTS - Test |\n|-------------------|--------------|---------------|\n| `ensemble`        |       96.9%       |     96.2%     |\n| `dino_vitb16`     |        95.6%      |       94.8%      |\n| `open_clip_vitb32`     |     95.6%         |     95.3%    |\n| `clip_vitb32`|      94.9%        |     93.6%       |\n| `dinov2_vitb14`     |      94.9%        |    95.0%     |\n| `synclr_vitb16`|       96.0%       |      95.9%      |\n| `dino_vitb16 (patch)`     |      94.9%        |   94.8%     |\n| `dinov2_vitb14 (patch)`|     95.5%         |      95.1%      |\n\n**9\u002F14\u002F24:** We released new versions of the ensemble and single-branch DreamSim models compatible with `peft>=0.2.0`.\n\nWe also released the entire [100k (unfiltered) NIGHTS dataset](#new-download-the-entire-100k-pre-filtered-nights-dataset) and the [JND (Just-Noticeable Difference) votes](#new-download-the-jnd-data).\n\n## Table of Contents\n* [Requirements](#requirements)\n* [Setup](#setup)\n* [Usage](#usage)\n  * [Quickstart](#quickstart-perceptual-similarity-metric)\n  * [Single-branch models](#single-branch-models)\n  * [Feature extraction](#feature-extraction)\n  * [Image retrieval](#image-retrieval)\n  * [Perceptual loss function](#perceptual-loss-function)\n* [NIGHTS Dataset](#nights-novel-image-generations-with-human-tested-similarities-dataset)\n* [Experiments](#experiments)\n* [Citation](#citation)\n\n## Requirements\n- Linux\n- Python 3\n\n## Setup\n\n**Option 1:** Install using pip: \n\n```pip install dreamsim```\n\nThe package is used for importing and using the DreamSim model.\n\n**Option 2:** Clone our repo and install dependencies.\nThis is necessary for running our training\u002Fevaluation scripts.\n\n```\npython3 -m venv ds\nsource ds\u002Fbin\u002Factivate\npip install -r requirements.txt\nexport PYTHONPATH=\"$PYTHONPATH:$(realpath .\u002Fdreamsim)\"\n```\nTo install with conda:\n```\nconda create -n ds\nconda activate ds\nconda install pip # verify with the `which pip` command\npip install -r requirements.txt\nexport PYTHONPATH=\"$PYTHONPATH:$(realpath .\u002Fdreamsim)\"\n```\n\n## Usage\n**For walk-through examples of the below use-cases, check out our [Colab demo](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1taEOMzFE9g81D9AwH27Uhy2U82tQGAVI?usp=sharing).**\n\n### Quickstart: Perceptual similarity metric\nThe basic use case is to measure the perceptual distance between two images. **A higher score means more different, lower means more similar**. \n\nThe following code snippet is all you need. The first time that you run `dreamsim` it will automatically download the model weights. The default model settings are specified in `.\u002Fdreamsim\u002Fconfig.py`. **To extract features from the model variant trained through both the CLS and patch features, set `use_patch_model=True` when calling `dreamsim()`.**\n```\nfrom dreamsim import dreamsim\nfrom PIL import Image\n\ndevice = \"cuda\"\nmodel, preprocess = dreamsim(pretrained=True, device=device)\n\nimg1 = preprocess(Image.open(\"img1_path\")).to(device)\nimg2 = preprocess(Image.open(\"img2_path\")).to(device)\ndistance = model(img1, img2) # The model takes an RGB image from [0, 1], size batch_sizex3x224x224\n```\n\nTo run on example images, run `demo.py`. The script should produce distances (0.4453, 0.2756). \n\n### Single-branch models\nBy default, DreamSim uses an ensemble of CLIP, DINO, and OpenCLIP (all ViT-B\u002F16). If you need a lighter-weight model you can use *single-branch* versions of DreamSim where only a single backbone is finetuned. **The single-branch models provide a ~3x speedup over the ensemble.**\n\nThe available options are OpenCLIP-ViTB\u002F32, DINO-ViTB\u002F16, CLIP-ViTB\u002F32, in order of performance. To load a single-branch model, use the `dreamsim_type` argument. For example:\n```\ndreamsim_dino_model, preprocess = dreamsim(pretrained=True, dreamsim_type=\"dino_vitb16\")\n```\n\n### Feature extraction\nTo extract a *single image embedding* using dreamsim, use the `embed` method as shown in the following snippet:\n```\nimg1 = preprocess(Image.open(\"img1_path\")).to(\"cuda\")\nembedding = model.embed(img1)\n```\nThe perceptual distance between two images is the cosine distance between their embeddings. If the embeddings are normalized (true by default) L2 distance can also be used.\n\n\n### Image retrieval\nOur model can be used for image retrieval, and plugged into existing such pipelines. The code below ranks a dataset of images based on their similarity to a given query image. \n\nTo speed things up, instead of directly calling `model(query, image)` for each pair, we use the `model.embed(image)` method to pre-compute single-image embeddings, and then take the cosine distance between embedding pairs.\n```\nimport pandas as pd\nfrom tqdm import tqdm\nimport torch.nn.functional as F\n\n# let query be a sample image.\n# let images be a list of images we are searching.\n\n# Compute the query image embedding\nquery_embed = model.embed(preprocess(query).to(\"cuda\"))\ndists = {}\n\n# Compute the (cosine) distance between the query and each search image\nfor i, im in tqdm(enumerate(images), total=len(images)):\n   img_embed = model.embed(preprocess(im).to(\"cuda\"))\n   dists[i] = (1 - F.cosine_similarity(query_embed, img_embed, dim=-1)).item()\n\n# Return results sorted by distance\ndf = pd.DataFrame({\"ids\": list(dists.keys()), \"dists\": list(dists.values())})\nreturn df.sort_values(by=\"dists\")\n```\n\n### Perceptual loss function\nOur model can be used as a loss function for iterative optimization (similarly to the LPIPS metric). These are the key lines; for the full example, refer to the [Colab](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1taEOMzFE9g81D9AwH27Uhy2U82tQGAVI?usp=sharing).\n```\nfor i in range(n_iters):\n    dist = model(predicted_image, reference_image)\n    dist.backward()\n    optimizer.step()\n```\n\u003C!--Experiments-->\n## NIGHTS (Novel Image Generations with Human-Tested Similarities) Dataset\nDreamSim is trained by fine-tuning on the NIGHTS dataset. For details on the dataset structure and creation, refer to the [dataset page](https:\u002F\u002Fgithub.com\u002Fssundaram21\u002Fdreamsim\u002Ftree\u002Fmain\u002Fdataset).\n\nRun `.\u002Fdataset\u002Fdownload_dataset.sh` to download and unzip the NIGHTS dataset into `.\u002Fdataset\u002Fnights`. The unzipped dataset size is 58 GB. \n\nHaving trouble with the large file sizes? Run `.\u002Fdataset\u002Fdownload_chunked_dataset.sh` to download the NIGHTS dataset split into 200 smaller zip files. The output of this script is identical to `download_dataset.sh`.\n\n### (new!) Download the entire 100k pre-filtered NIGHTS dataset\nWe only use the 20k unanimous triplets for training and evaluation, but release all 100k triplets (many with few and\u002For split votes) for research purposes. Run `.\u002Fdataset\u002Fdownload_unfiltered_dataset.sh` to download and unzip this unfiltered version of the NIGHTS dataset into `.\u002Fdataset\u002Fnights_unfiltered`. The unzipped dataset size is 289 GB.\n\n### (new!) Download the JND data\nDownload the just-noticeable difference (JND) votes by running `.\u002Fdataset\u002Fdownload_jnd_dataset.sh`. The CSV will be downloaded to `.\u002Fdataset\u002Fjnd_votes.csv`. Check out the [Colab](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1taEOMzFE9g81D9AwH27Uhy2U82tQGAVI?usp=sharing) for an example of loading a JND trial.\n\n### Visualize NIGHTS and embeddings with the [Voxel51](https:\u002F\u002Fgithub.com\u002Fvoxel51\u002Ffiftyone) demo:\n[![FiftyOne](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFiftyOne-blue.svg?logo=data:image\u002Fsvg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA1MjAuNyA0NzIuNyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTIwLjcgNDcyLjc7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRkY2RDAwO30KCS5zdDF7ZmlsbDojOUI5QjlCO30KPC9zdHlsZT4KPGcgaWQ9InN1cmZhY2UxIj4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMjAuOSw0My4yYzAtMi4yLDEuMy0zLjUsMi4yLTMuOGMwLjYtMC4zLDEuMy0wLjYsMi4yLTAuNmMwLjYsMCwxLjYsMC4zLDIuMiwwLjZsMTMuNyw4TDE2Ny42LDMybC0yNi44LTE1LjMKCQljLTkuNi01LjQtMjEuMS01LjQtMzEsMGMtOS42LDUuOC0xNS4zLDE1LjctMTUuMywyNi44djI4Ni4zbDI2LjIsMTUuM3YtMzAyaDAuMlY0My4yeiIvPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTEyNy45LDQyOS42Yy0xLjksMS0zLjgsMC42LTQuNSwwYy0xLTAuNi0yLjItMS42LTIuMi0zLjh2LTE1LjdMOTUsMzk0Ljd2MzFjMCwxMS4yLDUuOCwyMS4xLDE1LjMsMjYuOAoJCWM0LjgsMi45LDEwLjIsNC4yLDE1LjMsNC4yYzUuNCwwLDEwLjUtMS4zLDE1LjMtNC4yTDQwMiwzMDEuN3YtMzAuNEwxMjcuOSw0MjkuNnoiLz4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00NzIuNCwyMDcuOGwtMjQ4LTE0My4ybC0yNi41LDE1TDQ1OSwyMzAuNWMxLjksMS4zLDIuMiwyLjksMi4yLDMuOHMtMC4zLDIuOS0yLjIsMy44bC0xMS44LDYuN3YzMC40CgkJbDI0LjktMTQuNGM5LjYtNS40LDE1LjMtMTUuNywxNS4zLTI2LjhDNDg3LjcsMjIzLjEsNDgyLDIxMy4yLDQ3Mi40LDIwNy44eiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTc5LjcsMzY4LjVsMjIuNywxMy4xbDI2LjIsMTUuM2w3LjcsNC41bDUuNCwzLjJsOTUuNS01NS4zdi05NS4yYzAtMTIuMSw2LjQtMjMuMywxNi45LTI5LjRsODIuNC00Ny42CgkJTDE5MC4yLDkyLjhsLTIyLjctMTMuMWwyMi43LTEzLjFsMjYuMi0xNS4zbDcuNy00LjVsNy43LDQuNWwxNjEsOTMuM2wzLjItMS45YzkuMy01LjQsMjEuMSwxLjMsMjEuMSwxMi4xdjMuOGwxNSw4LjZWMTQyCgkJYzAtMTIuNS02LjctMjQtMTcuMy0zMEwyNTQuNSwxOS4zYy0xMC45LTYuNC0yNC02LjQtMzQuOCwwTDEzNiw2Ny42djMwMy4ybC0yMi43LTEzLjFMODcsMzQyLjNsLTcuMy00LjJ2LTIzOGwtMjAuMSwxMS41CgkJYy0xMC45LDYuMS0xNy4zLDE3LjYtMTcuMywzMHYxODVjMCwxMi41LDYuNywyNCwxNy4zLDMwTDc5LjcsMzY4LjV6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDE3LjEsMjIzLjh2OTQuOWMwLDEyLjEtNi40LDIzLjMtMTYuOSwyOS40bC0xNDEuOSw4Mi4xYy05LjMsNS40LTIxLjEtMS4zLTIxLjEtMTIuMXYtMy44TDE5Ny45LDQzNwoJCWwyMS43LDEyLjVjMTAuOSw2LjQsMjQsNi40LDM0LjgsMEw0MTQuNiwzNTdjMTAuOS02LjQsMTcuMy0xNy42LDE3LjMtMzB2LTk0LjZMNDE3LjEsMjIzLjh6Ii8+CjwvZz4KPC9zdmc+Cg==)](https:\u002F\u002Ftry.fiftyone.ai\u002Fdatasets\u002Fnights\u002Fsamples)\n\n## Experiments\n\n### Download resources\nRun `.\u002Ftraining\u002Fdownload_models.sh` to download and unzip necessary ViT checkpoints (for CLIP, OpenCLIP, and MAE) into `.\u002Fmodels`. \n\n### Training\nTo finetune a perceptual model on the dataset, run `.\u002Ftraining\u002Ftrain.py`. For example, to finetune an ensemble of DINO, CLIP, and OpenCLIP using LoRA, run:\n\n```\npython .\u002Ftraining\u002Ftrain.py --config .\u002Fconfigs\u002Ftrain_ensemble_model_lora.yaml\n```\n\nWe provide more sample configs in `.\u002Fconfigs`, including examples of finetuning with LoRA and with an MLP head. See `.\u002Ftraining\u002Ftrain.py` for a full list and description of training options.\n\n### Evaluation\nTo evaluate a perceptual model on the dataset, run `.\u002Fevaluation\u002Feval_percep.py`. For example, to evaluate a trained checkpoint against a baseline model on the dataset, run:\n\n```\npython .\u002Fevaluation\u002Feval_percep.py --config .\u002Fconfigs\u002Feval_ensemble.yaml\n```\n\nSee `.\u002Fevaluate\u002Feval_percep.py` for a full list and description of evaluation options.\n\u003C!--Experiments-->\n\n\u003Ca name=\"bibtex\">\u003C\u002Fa>\n## Citation\n\nIf you find our work or any of our materials useful, please cite our papers:\n```\n@misc{fu2023dreamsim,\n      title={DreamSim: Learning New Dimensions of Human Visual Similarity using Synthetic Data}, \n      author={Stephanie Fu and Netanel Tamir and Shobhita Sundaram and Lucy Chai and Richard Zhang and Tali Dekel and Phillip Isola},\n      year={2023},\n      eprint={2306.09344},\n      archivePrefix={arXiv},\n      primaryClass={cs.CV}\n}\n```\n```\n@misc{sundaram2024doesperceptualalignmentbenefit,\n      title={When Does Perceptual Alignment Benefit Vision Representations?}, \n      author={Shobhita Sundaram and Stephanie Fu and Lukas Muttenthaler and Netanel Y. Tamir and Lucy Chai and Simon Kornblith and Trevor Darrell and Phillip Isola},\n      year={2024},\n      eprint={2410.10817},\n      archivePrefix={arXiv},\n      primaryClass={cs.CV},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2410.10817}, \n}\n```\n\n## Acknowledgements\nOur code borrows from the [\"Deep ViT Features as Dense Visual Descriptors\"](https:\u002F\u002Fdino-vit-features.github.io\u002F) repository for ViT feature extraction, and takes inspiration from the [UniverSeg](https:\u002F\u002Fgithub.com\u002FJJGO\u002FUniverSeg) respository for code structure.\n\n","\u003C!-- # ![icon](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fssundaram21_dreamsim_readme_42d326751c87.png)  DreamSim 感知度量 -->\n\u003C!-- # DreamSim 感知度量 \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fssundaram21_dreamsim_readme_42d326751c87.png\" align=\"left\" width=\"50px\"\u002F>  -->\n# DreamSim：利用合成数据学习人类视觉相似性的新维度\n### [项目页面](https:\u002F\u002Fdreamsim-nights.github.io\u002F) | [论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2306.09344) | [Bibtex](#bibtex)\n[![在 Colab 中打开](https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg)](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1taEOMzFE9g81D9AwH27Uhy2U82tQGAVI?usp=sharing)\n\n[Stephanie Fu](https:\u002F\u002Fstephanie-fu.github.io)\\* $^{1}$, [Netanel Tamir](https:\u002F\u002Fnetanel-tamir.github.io)\\* $^{2}$, [Shobhita Sundaram](https:\u002F\u002Fssundaram21.github.io)\\* $^{1}$, [Lucy Chai](https:\u002F\u002Fpeople.csail.mit.edu\u002Flrchai\u002F) $^1$, [Richard Zhang](http:\u002F\u002Frichzhang.github.io) $^3$, [Tali Dekel](https:\u002F\u002Fwww.weizmann.ac.il\u002Fmath\u002Fdekel\u002F) $^2$, [Phillip Isola](https:\u002F\u002Fweb.mit.edu\u002Fphillipi\u002F) $^1$.\u003Cbr>\n(*贡献相等，顺序由随机种子决定)\u003Cbr>\n$^1$ MIT，$^2$ 魏茨曼科学研究所，$^3$ Adobe Research。\n\n![teaser](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fssundaram21_dreamsim_readme_64645d6089a2.jpg)\n\n**摘要**\n\n当前用于感知图像相似性的度量方法主要基于像素和图像块。这些度量能够比较图像的低级颜色和纹理特征，但无法捕捉布局、姿态、语义内容等中级差异。而使用图像级嵌入（如 DINO 和 CLIP）的模型则能反映高级别和语义层面的判断，却未必与人类对更细粒度属性的感知完全一致。\n\nDreamSim 是一种新的感知图像相似性度量方法，它弥合了“低级”度量（如 LPIPS、PSNR、SSIM）与“高级”度量（如 CLIP）之间的差距。我们的模型通过拼接 CLIP、OpenCLIP 和 DINO 的嵌入向量进行训练，并进一步在人类感知判断数据上进行微调。我们收集了约 2 万组由扩散模型生成的图像三元组的感知判断数据。实验表明，与现有度量相比，DreamSim 能更好地匹配人类的相似性判断，可用于图像检索等下游任务。\n\n## 🚀 最新更新\n**2024年10月14日：** 我们发布了 DreamSim 的 4 种新变体！这些新检查点包括：\n- 以 DINOv2 B\u002F14 和 SynCLR B\u002F16 作为骨干网络；\n- 使用原始对比损失同时在 CLS 特征和密集特征上训练的 DINOv2 B\u002F14 和 DINO B\u002F16。\n  - 若要从同时利用 CLS 和 patch 特征训练的模型变体中提取特征，请在调用 `dreamsim()` 时设置 `use_patch_model=True`。\n\n这些模型（以及原有模型）将在 **我们最新的 NeurIPS 2024 论文《感知对齐何时有益于视觉表征？》** 中得到进一步评估。\n\n研究发现，我们的感知对齐表征在多种标准计算机视觉任务上均优于基线模型，包括语义分割、深度估计、目标计数、实例检索以及检索增强生成等。这些结果表明，感知对齐可以作为学习通用视觉表征的一个有效目标。更多详情请参阅论文及我们的 [博客文章](https:\u002F\u002Fpercep-align.github.io)。\n\n以下是更新后的 NIGHTS 性能表：\n|                   | NIGHTS - 验证集 | NIGHTS - 测试集 |\n|-------------------|--------------|---------------|\n| `ensemble`        |       96.9%       |     96.2%     |\n| `dino_vitb16`     |        95.6%      |       94.8%      |\n| `open_clip_vitb32`     |     95.6%         |     95.3%    |\n| `clip_vitb32`|      94.9%        |     93.6%       |\n| `dinov2_vitb14`     |      94.9%        |    95.0%     |\n| `synclr_vitb16`|       96.0%       |      95.9%      |\n| `dino_vitb16 (patch)`     |      94.9%        |   94.8%     |\n| `dinov2_vitb14 (patch)`|     95.5%         |      95.1%      |\n\n**2024年9月14日：** 我们发布了与 `peft>=0.2.0` 兼容的集成模型和单分支 DreamSim 模型的新版本。\n\n此外，我们还发布了完整的 [10 万条（未过滤）NIGHTS 数据集](#new-download-the-entire-100k-pre-filtered-nights-dataset)以及 [JND（刚刚可察觉差异）投票数据](#new-download-the-jnd-data)。\n\n## 目录\n* [要求](#requirements)\n* [安装](#setup)\n* [使用](#usage)\n  * [快速入门](#quickstart-perceptual-similarity-metric)\n  * [单分支模型](#single-branch-models)\n  * [特征提取](#feature-extraction)\n  * [图像检索](#image-retrieval)\n  * [感知损失函数](#perceptual-loss-function)\n* [NIGHTS 数据集](#nights-novel-image-generations-with-human-tested-similarities-dataset)\n* [实验](#experiments)\n* [引用](#citation)\n\n## 要求\n- Linux\n- Python 3\n\n## 安装\n\n**选项 1：** 使用 pip 安装：\n\n```pip install dreamsim```\n\n该包用于导入和使用 DreamSim 模型。\n\n**选项 2：** 克隆我们的仓库并安装依赖项。\n这是运行我们的训练\u002F评估脚本所必需的。\n\n```\npython3 -m venv ds\nsource ds\u002Fbin\u002Factivate\npip install -r requirements.txt\nexport PYTHONPATH=\"$PYTHONPATH:$(realpath .\u002Fdreamsim)\"\n```\n若使用 conda 安装：\n```\nconda create -n ds\nconda activate ds\nconda install pip # 用 `which pip` 命令确认\npip install -r requirements.txt\nexport PYTHONPATH=\"$PYTHONPATH:$(realpath .\u002Fdreamsim)\"\n```\n\n## 使用\n**有关以下用例的详细示例，请参阅我们的 [Colab 演示](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1taEOMzFE9g81D9AwH27Uhy2U82tQGAVI?usp=sharing)。**\n\n### 快速入门：感知相似性度量\n基本用法是测量两张图像之间的感知距离。**分数越高表示越不同，分数越低表示越相似**。\n\n以下代码片段即为所需全部内容。首次运行 `dreamsim` 时，它会自动下载模型权重。默认模型设置在 `.\u002Fdreamsim\u002Fconfig.py` 中指定。**若要从同时利用 CLS 和 patch 特征训练的模型变体中提取特征，请在调用 `dreamsim()` 时设置 `use_patch_model=True`。**\n```\nfrom dreamsim import dreamsim\nfrom PIL import Image\n\ndevice = \"cuda\"\nmodel, preprocess = dreamsim(pretrained=True, device=device)\n\nimg1 = preprocess(Image.open(\"img1_path\")).to(device)\nimg2 = preprocess(Image.open(\"img2_path\")).to(device)\ndistance = model(img1, img2) # 模型接受 [0, 1] 范围内的 RGB 图像，尺寸为 batch_sizex3x224x224\n```\n\n要使用示例图像运行，请执行 `demo.py`。该脚本应输出距离（0.4453，0.2756）。\n\n### 单分支模型\n默认情况下，DreamSim 使用 CLIP、DINO 和 OpenCLIP（均为 ViT-B\u002F16）的集成模型。如果您需要更轻量级的模型，可以使用仅微调单一骨干网络的 *单分支* 版本。**单分支模型的速度比集成模型快约 3 倍。**\n\n可用选项按性能排序为：OpenCLIP-ViTB\u002F32、DINO-ViTB\u002F16、CLIP-ViTB\u002F32。要加载单分支模型，请使用 `dreamsim_type` 参数。例如：\n```\ndreamsim_dino_model, preprocess = dreamsim(pretrained=True, dreamsim_type=\"dino_vitb16\")\n```\n\n### 特征提取\n要使用 dreamsim 提取 *单张图像的嵌入*，请按照以下代码片段所示使用 `embed` 方法：\n```\nimg1 = preprocess(Image.open(\"img1_path\")).to(\"cuda\")\nembedding = model.embed(img1)\n```\n两张图像之间的感知距离是它们嵌入向量之间的余弦距离。如果嵌入向量已经归一化（默认情况下为真），也可以使用 L2 距离。\n\n\n### 图像检索\n我们的模型可用于图像检索，并可集成到现有的图像检索流程中。下面的代码根据图像与给定查询图像的相似性对一组图像进行排序。\n\n为了加快速度，我们没有直接对每一对图像调用 `model(query, image)`，而是先使用 `model.embed(image)` 方法预计算单张图像的嵌入，然后计算这些嵌入之间的余弦距离。\n```\nimport pandas as pd\nfrom tqdm import tqdm\nimport torch.nn.functional as F\n\n# 假设 query 是一张示例图像。\n# 假设 images 是我们要搜索的一组图像。\n\n# 计算查询图像的嵌入\nquery_embed = model.embed(preprocess(query).to(\"cuda\"))\ndists = {}\n\n# 计算查询图像与每张搜索图像之间的（余弦）距离\nfor i, im in tqdm(enumerate(images), total=len(images)):\n   img_embed = model.embed(preprocess(im).to(\"cuda\"))\n   dists[i] = (1 - F.cosine_similarity(query_embed, img_embed, dim=-1)).item()\n\n# 按距离排序并返回结果\ndf = pd.DataFrame({\"ids\": list(dists.keys()), \"dists\": list(dists.values())})\nreturn df.sort_values(by=\"dists\")\n```\n\n### 感知损失函数\n我们的模型可以用作迭代优化中的损失函数（类似于 LPIPS 度量）。以下是关键代码行；完整示例请参阅 [Colab](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1taEOMzFE9g81D9AwH27Uhy2U82tQGAVI?usp=sharing)。\n```\nfor i in range(n_iters):\n    dist = model(predicted_image, reference_image)\n    dist.backward()\n    optimizer.step()\n```\n\u003C!--实验-->\n## NIGHTS（人类测试相似性的新型图像生成）数据集\nDreamSim 通过在 NIGHTS 数据集上进行微调来训练。有关数据集结构和创建的详细信息，请参阅 [数据集页面](https:\u002F\u002Fgithub.com\u002Fssundaram21\u002Fdreamsim\u002Ftree\u002Fmain\u002Fdataset)。\n\n运行 `.\u002Fdataset\u002Fdownload_dataset.sh` 可以下载并解压 NIGHTS 数据集到 `.\u002Fdataset\u002Fnights` 目录下。解压后的数据集大小为 58 GB。\n\n如果遇到大文件下载困难的问题，可以运行 `.\u002Fdataset\u002Fdownload_chunked_dataset.sh`，将 NIGHTS 数据集拆分为 200 个小压缩包下载。该脚本的输出与 `download_dataset.sh` 完全相同。\n\n### （新！）下载完整的 10 万条预过滤的 NIGHTS 数据集\n我们仅使用 2 万个一致同意的三元组进行训练和评估，但出于研究目的，我们也发布了全部 10 万个三元组（其中许多投票较少或存在分歧）。运行 `.\u002Fdataset\u002Fdownload_unfiltered_dataset.sh` 可以下载并解压这个未过滤版本的 NIGHTS 数据集到 `.\u002Fdataset\u002Fnights_unfiltered` 目录下。解压后的数据集大小为 289 GB。\n\n### （新！）下载 JND 数据\n运行 `.\u002Fdataset\u002Fdownload_jnd_dataset.sh` 可以下载最小可觉差（JND）投票数据。CSV 文件将被下载到 `.\u002Fdataset\u002Fjnd_votes.csv`。请参阅 [Colab](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1taEOMzFE9g81D9AwH27Uhy2U82tQGAVI?usp=sharing) 中的示例，了解如何加载 JND 实验数据。\n\n### 使用 [Voxel51](https:\u002F\u002Fgithub.com\u002Fvoxel51\u002Ffiftyone) 演示可视化 NIGHTS 和嵌入：\n[![FiftyOne](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFiftyOne-blue.svg?logo=data:image\u002Fsvg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA1MjAuNyA0NzIuNyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTIwLjcgNDcyLjc7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRkY2RDAwO30KCS5zdDF7ZmlsbDojOUI5QjlCO30KPC9zdHlsZT4KPGcgaWQ9InN1cmZhY2UxIj4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMjAuOSw0My4yYzAtMi4sMS4zLTMuNSwyLjItMzUoMTQuNiwxNC40TDExLjUsMTcuN3YtMjguM2wxOC40LDI0LjktMTQuNGM5LjYtNS40LDE1LjMtMTUuNywxNS4zLTI2LjhDNDg3LjcsMjIzLjEsNDgyLDIxMy4yLDQ3Mi40LDIwNy44eiIvPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTEyNy45LDQyOS42Yy0xLjksMS4zLDIuMiwyLjksMi4yLDMuOHMtMC4zLDIuOS0yLjIsMy44bC0xMS44LDYuN3YzMC40CgkJbDI0LjktMTQuNGM5LjYtNS40LDE1LjMtMTUuNywxNS4zLTI2LjhDNDg3LjcsMjIzLjEsNDgyLDIxMy4yLDQ7Mi40LDIwNy44eiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTc5LjcsMzY4LjVsMjIuNywxMy4xbDI2LjIsMTUuM3w3LjcsNC41bDUuNCwzLjJsOTUuNS01NS4zdi05NS4yYzAtMTIuMSw2LjQtMjMuMywxNi45LTI9LjRsODIuNC00Ny42CgkJTDE5MC4yLDkyLjhsLTIyLjctMTMuMWwyMi43LTEzLjFsMjYuMi0xNS4zbDcuNy00LjVsNy43LDQuNWwxNjEsOTMuM2wzLjItMS45YzkuMy01LjQsMjEuMSwxLjMsMjEuMSwxMi4xdjMuOGwxNSw4LjZWMTQyCgkJYzAtMTIuNS02LjctMjQtMTcuMy0zMEWyNTQuNSwxOS4zYy0xMC45LTYuNC0yNC02LjQtMzQuOCwwTDEzNiw6Ny42djMwMy4ybC0yMi43LTEzLjFMODcsMzQyLjNsLTcuMy00LjJ2LTIzOGwtMjAuMSwxMS41CgkJYy0xMC45LDYuMS0xNy4zLDE7LjYtMTcuMywzMHYxODVjMCwxMi41LDYuNywyNCwxNy4zLDMwTDc9LjcsMzY8LjV6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDE3LjEsMjIzLjhhdjOTQuOWMwLDEyLjEtNi40LDIzLjMtMTYuOSwyOS40bC0xNDEuOSw4Mi4xYy05LjMsNS40LTIxLjEtMS4zLTIxLjEtMTIuMXYtMy44TDE5Ny45LDQzNwoJCWwyMS43LDEyLjVjMTAuOSw2LjQsMjQsNi40LDM0LjgsMEw0MTQuNiwzNTdjMTAuOS02LjQsMTcuMy0xNy42LDE7LjMtMzB2LTk0LjZMNDE3LjEsMjIzLjhh6Ii8+CjwvZz4KPC9zdmc+Cg==)](https:\u002F\u002Ftry.fiftyone.ai\u002Fdatasets\u002Fnights\u002Fsamples)\n\n## 实验\n\n### 下载资源\n运行 `.\u002Ftraining\u002Fdownload_models.sh` 可以下载并解压必要的 ViT 检查点（用于 CLIP、OpenCLIP 和 MAE）到 `.\u002Fmodels` 目录下。\n\n### 训练\n要在数据集上微调感知模型，请运行 `.\u002Ftraining\u002Ftrain.py`。例如，要使用 LoRA 微调 DINO、CLIP 和 OpenCLIP 的集成模型，可以运行：\n\n```\npython .\u002Ftraining\u002Ftrain.py --config .\u002Fconfigs\u002Ftrain_ensemble_model_lora.yaml\n```\n\n我们在 `.\u002Fconfigs` 中提供了更多示例配置，包括使用 LoRA 和 MLP 头部进行微调的示例。完整的训练选项列表及说明请参阅 `.\u002Ftraining\u002Ftrain.py`。\n\n### 评估\n要对数据集上的感知模型进行评估，请运行 `.\u002Fevaluation\u002Feval_percep.py`。例如，要评估一个训练好的检查点与基准模型在数据集上的表现，可以运行：\n\n```\npython .\u002Fevaluation\u002Feval_percep.py --config .\u002Fconfigs\u002Feval_ensemble.yaml\n```\n\n完整的评估选项列表及说明请参阅 `.\u002Fevaluate\u002Feval_percep.py`。\n\u003C!--实验-->\n\n\u003Ca name=\"bibtex\">\u003C\u002Fa>\n\n## 引用\n\n如果您认为我们的工作或任何相关材料有用，请引用我们的论文：\n```\n@misc{fu2023dreamsim,\n      title={DreamSim：利用合成数据学习人类视觉相似性的新维度}, \n      author={Stephanie Fu、Netanel Tamir、Shobhita Sundaram、Lucy Chai、Richard Zhang、Tali Dekel 和 Phillip Isola},\n      year={2023},\n      eprint={2306.09344},\n      archivePrefix={arXiv},\n      primaryClass={cs.CV}\n}\n```\n```\n@misc{sundaram2024doesperceptualalignmentbenefit,\n      title={感知对齐何时有益于视觉表征？}, \n      author={Shobhita Sundaram、Stephanie Fu、Lukas Muttenthaler、Netanel Y. Tamir、Lucy Chai、Simon Kornblith、Trevor Darrell 和 Phillip Isola},\n      year={2024},\n      eprint={2410.10817},\n      archivePrefix={arXiv},\n      primaryClass={cs.CV},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2410.10817}, \n}\n```\n\n## 致谢\n我们的代码在ViT特征提取方面借鉴了“Deep ViT Features as Dense Visual Descriptors”仓库，并在代码结构上受到UniverSeg仓库的启发。","# DreamSim 快速上手指南\n\nDreamSim 是一种新型感知图像相似度度量工具，旨在弥合“低级”指标（如 LPIPS、PSNR）与“高级”语义指标（如 CLIP）之间的差距。它通过结合人类感知判断进行微调，能更准确地捕捉图像在布局、姿态和语义内容上的中层次差异。\n\n## 环境准备\n\n*   **操作系统**: Linux\n*   **Python 版本**: Python 3\n*   **硬件建议**: 推荐使用 NVIDIA GPU (CUDA) 以获得最佳推理速度，CPU 亦可运行但较慢。\n*   **前置依赖**: `Pillow`, `torch`, `tqdm` 等（安装时会自动处理）。\n\n## 安装步骤\n\n你可以选择直接通过 pip 安装（推荐用于仅使用模型），或克隆仓库安装（用于运行训练\u002F评估脚本或访问数据集）。\n\n### 方式一：使用 pip 安装（推荐）\n\n```bash\npip install dreamsim\n```\n\n### 方式二：从源码安装\n\n如果你需要运行示例脚本或访问完整数据集，请克隆仓库并配置环境：\n\n**使用 venv:**\n```bash\npython3 -m venv ds\nsource ds\u002Fbin\u002Factivate\ngit clone https:\u002F\u002Fgithub.com\u002Fssundaram21\u002Fdreamsim.git\ncd dreamsim\npip install -r requirements.txt\nexport PYTHONPATH=\"$PYTHONPATH:$(realpath .\u002Fdreamsim)\"\n```\n\n**使用 Conda:**\n```bash\nconda create -n ds python=3.8\nconda activate ds\ngit clone https:\u002F\u002Fgithub.com\u002Fssundaram21\u002Fdreamsim.git\ncd dreamsim\npip install -r requirements.txt\nexport PYTHONPATH=\"$PYTHONPATH:$(realpath .\u002Fdreamsim)\"\n```\n\n> **提示**: 国内用户若下载依赖较慢，可在 `pip install` 命令后添加 `-i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple` 使用清华镜像源。\n\n## 基本使用\n\n### 1. 计算图像感知距离\n\n这是最常用的功能。首次运行时会自动下载预训练权重。**分数越高表示差异越大，分数越低表示越相似。**\n\n```python\nfrom dreamsim import dreamsim\nfrom PIL import Image\n\n# 设置设备 (cuda 或 cpu)\ndevice = \"cuda\"\n\n# 加载模型和预处理函数\n# 首次运行会自动下载权重\nmodel, preprocess = dreamsim(pretrained=True, device=device)\n\n# 加载并预处理图片\nimg1 = preprocess(Image.open(\"img1_path\")).to(device)\nimg2 = preprocess(Image.open(\"img2_path\")).to(device)\n\n# 计算距离\ndistance = model(img1, img2) \nprint(f\"Perceptual Distance: {distance.item()}\")\n```\n\n### 2. 使用单分支模型（轻量级）\n\n默认模型是 CLIP、DINO 和 OpenCLIP 的集成版。如果需要更快的推理速度（约快 3 倍），可以使用单分支模型（如 `dino_vitb16`），性能略有取舍。\n\n```python\n# 加载 DINO 单分支模型\nmodel, preprocess = dreamsim(pretrained=True, dreamsim_type=\"dino_vitb16\", device=\"cuda\")\n\nimg1 = preprocess(Image.open(\"img1_path\")).to(\"cuda\")\nimg2 = preprocess(Image.open(\"img2_path\")).to(\"cuda\")\n\ndistance = model(img1, img2)\n```\n\n### 3. 提取特征向量 (用于图像检索)\n\n在进行图像检索时，建议先提取嵌入向量，再计算余弦距离，以避免重复计算。\n\n```python\nimport torch.nn.functional as F\n\n# 提取查询图像的特征\nquery_img = preprocess(Image.open(\"query.jpg\")).to(\"cuda\")\nquery_embed = model.embed(query_img)\n\n# 提取待检索图像的特征\ntarget_img = preprocess(Image.open(\"target.jpg\")).to(\"cuda\")\ntarget_embed = model.embed(target_img)\n\n# 计算余弦距离 (1 - 余弦相似度)\n# 如果 embeddings 已归一化（默认情况），也可使用 L2 距离\ndist = (1 - F.cosine_similarity(query_embed, target_embed, dim=-1)).item()\nprint(f\"Distance: {dist}\")\n```\n\n### 4. 作为损失函数使用\n\nDreamSim 可微分，可直接用作深度学习训练中的感知损失函数（类似 LPIPS）。\n\n```python\n# 假设 predicted_image 和 reference_image 是需要优化的张量\ndist = model(predicted_image, reference_image)\ndist.backward()\noptimizer.step()\n```","某电商平台的视觉算法团队正在构建一个“以图搜图”功能，旨在帮助用户通过上传商品照片，快速找到风格、款式或构图高度相似的替代商品。\n\n### 没有 dreamsim 时\n- **语义匹配过于粗糙**：依赖 CLIP 等传统模型时，系统常将“红色跑车”与“红色消防车”判定为相似，仅因颜色和高阶语义接近，却忽略了物体类别和形态的巨大差异。\n- **细节感知能力缺失**：使用 LPIPS 或 SSIM 等底层指标时，只要图片经过轻微裁剪或旋转，相似度得分便急剧下降，导致无法识别同一商品的不同拍摄角度。\n- **人工校准成本高昂**：由于自动排序结果不符合人类直觉，团队不得不雇佣大量标注人员对检索结果进行人工重排，严重拖慢了产品迭代速度。\n- **长尾场景表现糟糕**：对于布局复杂或具有特定艺术风格的商品图，现有指标难以捕捉中层的版式结构和纹理质感，导致推荐结果杂乱无章。\n\n### 使用 dreamsim 后\n- **人类视觉对齐精准**：dreamsim 融合了多层级特征并经过人类感知数据微调，能准确区分“同色不同物”，确保检索结果在物体类别、姿态和语义上与查询图真正一致。\n- **鲁棒性显著提升**：即使目标图片经历了裁剪、缩放或视角变换，dreamsim 仍能敏锐捕捉到核心的视觉相似性，稳定召回同一商品的不同展示图。\n- **自动化流程闭环**：检索排序结果直接符合人类直觉，大幅减少了对人工干预的依赖，使团队能将精力集中于优化业务逻辑而非修正算法偏差。\n- **中层特征捕捉力强**：无论是商品的摆放布局还是独特的材质纹理，dreamsim 都能有效量化这些中层差异，显著提升了时尚类和家居类商品的推荐准确度。\n\ndreamsim 通过填补底层像素差异与高层语义鸿沟之间的空白，让机器的视觉相似度判断真正拥有了“人类的眼光”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fssundaram21_dreamsim_64645d60.jpg","ssundaram21","Shobhita Sundaram","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fssundaram21_a73328ba.png","AI\u002FML PhD @ MIT",null,"ssundaram21.github.io","https:\u002F\u002Fgithub.com\u002Fssundaram21",[84,88],{"name":85,"color":86,"percentage":87},"Python","#3572A5",97.3,{"name":89,"color":90,"percentage":91},"Shell","#89e051",2.7,596,32,"2026-04-05T17:30:50","MIT","Linux","代码示例显示支持 CUDA (device=\"cuda\")，暗示需要 NVIDIA GPU，但 README 未明确指定具体型号、显存大小或 CUDA 版本要求。","未说明（下载完整未过滤数据集需较大空间，但运行模型本身未提及具体内存需求）",{"notes":100,"python":101,"dependencies":102},"1. 官方明确要求操作系统为 Linux。2. 首次运行代码时会自动下载模型权重。3. 若需提取同时基于 CLS 和 patch 特征训练的模型特征，调用 dreamsim() 时需设置 use_patch_model=True。4. 提供多种单分支模型选项（如 dino_vitb16），相比默认集成模型速度提升约 3 倍。5. 完整 NIGHTS 数据集解压后高达 289GB，普通用户仅需使用默认的 20k 子集或预训练模型即可。","3",[103,104,105,106,107],"torch","Pillow","pandas","tqdm","peft>=0.2.0",[15,62],"2026-03-27T02:49:30.150509","2026-04-07T09:55:34.446105",[112,117,122,127,132,137],{"id":113,"question_zh":114,"answer_zh":115,"source_url":116},21578,"遇到 PEFT 版本不兼容或 'layer_replication' 参数错误怎么办？","当出现 '__init__() got an unexpected keyword argument' 错误时，通常是因为检查点是由更高版本的 PEFT 创建的。解决方法有两种：\n1. 升级 PEFT 到最新版本（例如 peft > 0.7.0）。\n2. 手动编辑适配器目录下的 adapter_config.json 文件，删除不被当前版本识别的字段（如 \"layer_replication\" 或 \"enable_lora\": null），然后从本地文件夹加载模型。","https:\u002F\u002Fgithub.com\u002Fssundaram21\u002Fdreamsim\u002Fissues\u002F12",{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},21579,"训练时遇到多进程（multiprocessing）相关的报错如何解决？","如果训练过程中出现与加载图像或预处理函数相关的错误，且怀疑是多进程问题，可以尝试将数据加载器中的 num_workers 参数设置为 0。这可以禁用多进程数据加载，从而避免某些环境下的兼容性错误。","https:\u002F\u002Fgithub.com\u002Fssundaram21\u002Fdreamsim\u002Fissues\u002F3",{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},21580,"下载模型时出现 'RemoteDisconnected: Remote end closed connection' 网络错误怎么办？","该错误通常由网络连接不稳定引起。建议检查网络连接，并重试多次直到下载完成。如果问题持续，可能需要配置代理或检查防火墙设置。","https:\u002F\u002Fgithub.com\u002Fssundaram21\u002Fdreamsim\u002Fissues\u002F11",{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},21581,"如何计算不同长宽比裁剪图像的相似度而不导致人物变形？","建议在裁剪后不要直接拉伸图像以匹配固定形状。推荐的做法是：以边界框（bounding box）为中心，裁剪出一个能完全包含该边界框的正方形区域（包含部分背景）。这样输入给模型的就是正方形图像，模型内部会自动调整大小并保持原始长宽比，避免人物变形。","https:\u002F\u002Fgithub.com\u002Fssundaram21\u002Fdreamsim\u002Fissues\u002F36",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},21582,"训练时报错 'PerceptualModel object has no attribute config' 是什么原因？","这通常是由于 dreamsim 库的版本过旧或不匹配导致的。请确保安装的是最新版本的 dreamsim（例如通过 pip install --upgrade dreamsim 升级到 0.2.1 或更高版本），旧版本（如 0.1.3）可能与当前的 PEFT 或训练脚本不兼容。","https:\u002F\u002Fgithub.com\u002Fssundaram21\u002Fdreamsim\u002Fissues\u002F25",{"id":138,"question_zh":139,"answer_zh":140,"source_url":126},21583,"DreamSim 输出的相似度数值非常小（如 0.01），即使两张图片看起来差异很大，这是正常的吗？","DreamSim 的输出值范围通常在 0 到 1 之间，数值越小表示相似度越高（距离越近），数值越大表示差异越大。如果你得到的值非常小（接近 0），说明模型认为这两张图片非常相似。如果视觉上差异很大但数值很小，建议参考官方 Colab 示例对比正常输出范围，或检查输入图像预处理是否正确。",[142,147,152,157,162,167,172],{"id":143,"version":144,"summary_zh":145,"released_at":146},127590,"v0.2.1","我们发布了 DreamSim 的 4 个新版本！这些新检查点包括：\n- 以 DINOv2 B\u002F14 和 SynCLR B\u002F16 作为骨干网络；\n- 使用原始的对比损失，在 CLS 特征和密集特征上同时训练的 DINOv2 B\u002F14 和 DINO B\u002F16。\n\n这些模型（以及原始模型）还在 **我们最新的 NeurIPS 2024 论文《感知对齐何时有益于视觉表征？》** 中得到了进一步评估：[https:\u002F\u002Farxiv.org\u002Fabs\u002F2410.10817](https:\u002F\u002Farxiv.org\u002Fabs\u002F2410.10817)。\n\n研究发现，我们的感知对齐表征在多种下游标准计算机视觉任务上均优于基线模型，包括语义分割、深度估计、目标计数、实例检索以及检索增强生成等。这些结果表明，感知对齐可以作为一种有效的目标，用于学习通用视觉表征。更多详情请参阅 [论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2410.10817) 和我们的 [博客文章](https:\u002F\u002Fpercep-align.github.io\u002F)。\n\n以下是它们在 NIGHTS 数据集上的表现：\n\n|                   | NIGHTS - 验证集 | NIGHTS - 测试集 |\n|-------------------|------------------|-------------------|\n| `ensemble`        |       96.9%       |     96.2%     |\n| `dino_vitb16`     |        95.6%      |       94.8%      |\n| `open_clip_vitb32`     |     95.6%         |     95.3%    |\n| `clip_vitb32`|      94.9%        |     93.6%       |\n| `dinov2_vitb14`     |      94.9%        |    95.0%     |\n| `synclr_vitb16`|       96.0%       |      95.9%      |\n| `dino_vitb16 (patch)`     |      94.9%        |   94.8%     |\n| `dinov2_vitb14 (patch)`|     95.5%         |      95.1%      |\n\n此外，我们修复了嵌入归一化中的一个错误。这不应显著影响模型性能，但可能解释了在使用 DreamSim（`normalize_embeds=True`）的流水线中出现的极小变化。","2024-10-15T03:16:13",{"id":148,"version":149,"summary_zh":150,"released_at":151},127591,"v0.2.1-checkpoints","v0.2.1 版本发布检查点。","2024-10-14T23:58:30",{"id":153,"version":154,"summary_zh":155,"released_at":156},127592,"v0.2.0","**我们发布了与 peft 新版本兼容的全新 DreamSim 模型！**\n\n如果您已经在使用 DreamSim 模型，只需进行以下更改：\n* 将 `dreamsim` 包更新至 `0.2.0` 版本。\n* 更新您的环境，使其使用 `peft >= 0.2.0`。\n* 删除所有旧的本地或缓存的 DreamSim 检查点。下次调用主 `dreamsim` 函数时，它会自动下载更新后的检查点。\n\n以下是新模型在 NIGHTS 数据集上的表现：\n|                   | NIGHTS - 验证集 | NIGHTS - 测试集 |\n|-------------------|--------------|---------------|\n| `ensemble`        |      96.6%        |    96.1%      |\n| `dino_vitb16`     |       95.7%       |     94.8%        |\n| `open_clip_vitb32`     |        95.6%      |   93.6%      |\n| `clip_vitb32`|         95.5%     |      95.3%      |\n\n**我们还发布了 NIGHTS 数据集的更新和补充：**\n* 如果您在下载 NIGHTS 数据集时遇到文件过大的问题，现在可以运行 `.\u002Fdataset\u002Fdownload_chunked_dataset.sh`，将数据集拆分为 200 个较小的压缩包。\n* 我们仅使用 2 万个一致同意的三元组进行训练和评估，但出于研究目的，会公开全部 10 万个三元组（其中许多投票数量较少或存在分歧）。运行 `.\u002Fdataset\u002Fdownload_unfiltered_dataset.sh` 即可下载并解压这个未过滤的 NIGHTS 数据集版本（大小为 289 GB）。\n* 运行 `.\u002Fdataset\u002Fdownload_jnd_dataset.sh` 可以下载显著性差异（JND）投票数据。我们还更新了 [DreamSim Colab](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1taEOMzFE9g81D9AwH27Uhy2U82tQGAVI?usp=sharing)，其中包含加载 JND 实验示例的代码。","2024-09-14T19:26:42",{"id":158,"version":159,"summary_zh":160,"released_at":161},127593,"v0.2.0-checkpoints","v0.2.0 版本发布检查点。","2024-09-14T18:20:12",{"id":163,"version":164,"summary_zh":165,"released_at":166},127594,"v0.1.3","* 修复了集成模型检查点缓存的 bug。","2023-07-27T14:08:26",{"id":168,"version":169,"summary_zh":170,"released_at":171},127595,"v0.1.2","我们发布了 DreamSim 的三个轻量级版本，每个版本仅使用一个 ViT 模型（而非完整的集成模型）。骨干网络选项包括 DINO-ViTB\u002F16、CLIP-ViTB\u002F32 和 OpenCLIP-ViTB\u002F32。\n\n要加载单骨干版本的 DreamSim，可以使用新的 `dreamsim_type` 参数（默认值为 \"ensemble\"）。例如：\n```python\ndreamsim_dino_model, preprocess = dreamsim(pretrained=True, dreamsim_type=\"dino_vitb16\")\n```\n\n以下是这些单骨干微调模型在 NIGHTS 数据集上的表现与集成模型的对比：\n* **集成模型**：96.2%\n* **OpenCLIP-ViTB\u002F32**：95.5%\n* **DINO-ViTB\u002F16**：94.6%\n* **CLIP-ViTB\u002F32**：93.9%\n\n更多详细信息请参阅我们的论文。","2023-07-14T17:48:25",{"id":173,"version":174,"summary_zh":80,"released_at":175},127596,"v0.1.0","2023-06-15T21:45:59"]