Dinov2 + Faiss 图片检索

如何实现图像搜索,文搜图,图搜图,CLIP+faiss向量数据库实现图像高效搜索 如何实现图像搜索,文搜图,图搜图,CLIP+faiss向量数据库实现图像高效搜索 这是AIGC的时代,各种GPT大模型生成文本,还有多模态图文并茂大模型, 以及stable diffusion和stable video diffusion 图像生成视频生成等新模型, 层出不穷,如何生成一个图文并貌的文章,怎么在合适的段落加入图像,图像用什么方式获取, 图像可以使用搜索的形式获取,也可以使用sta... 阅读详情
AI摘要

MetaAI的DINOv2模型在包含1.42亿张图像的数据集上训练出通用特征,应用于图像和像素级视觉任务。Faiss库被用于高效处理和搜索这些特征,包括GPU加速。文章介绍了如何使用DINo2模型提取COCO数据集的图像特征,并演示了Faiss在检索过程中的性能。,

MetaAI 通过开源 DINOv2,在计算机视觉领域取得了一个显着的里程碑,这是一个在包含1.42 亿张图像的令人印象深刻的数据集上训练的模型。产生适用于图像级视觉任务(图像分类、实例检索、视频理解)以及像素级视觉任务(深度估计、语义分割)的通用特征。
Dinov2网站

Faiss是一个用于高效相似性搜索和密集向量聚类的库。它包含的算法可以搜索任意大小的向量集,甚至可能无法容纳在 RAM 中的向量集。

Faiss安装
可以选择 GPU 或 CPU 版本,这里选GPU版本

pip install faiss-gpu

embedding的预处理
使用 Faiss 时的一个重要考虑因素是它需要 Numpy 格式的embedding。因此,我们需要在将它们添加到索引之前对其进行转换。

处理embedding的步骤:

1.Detach the tensor并将其转换为 numpy 数组
2.转换为 numpy float 32 数组
3.使用 Faiss 使用 L2 归一化对 numpy 数组进行归一化

def add_vector_to_index(embedding, index):
    vector = embedding.detach().cpu().numpy()
    vector = np.float32(vector)
    faiss.normalize_L2(vector)
    index.add(vector)

存储 Faiss 索引
计算embedding然后存储它们。
这里以COCO数据集的val2017为例。
把每个图片的feature保存在index里面。

import torch
from transformers import AutoImageProcessor, AutoModel
from PIL import Image
import faiss
import numpy as np
import os
import matplotlib.pyplot as plt
import cv2

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
#你可以换成dinov2-base/large/giant模型
processor = AutoImageProcessor.from_pretrained('./dinov2_small')
model = AutoModel.from_pretrained('./dinov2_small').to(device)

data_folder = './coco/val2017'
images = []
for root,dirs,files in os.walk(data_folder):
    for file in files:
        if file.endswith('jpg'):
            images.append(root + '/' + file)

#feature dim 是384维,所以建立dim=384的index,type是FlatL2
index = faiss.IndexFlatL2(384)
#t0 = time.time()
for image_path in images:
    img = Image.open(image_path).convert('RGB')
    with torch.no_grad():
        inputs = processor(images=img,return_tensors='pt').to(device)
        outputs = model(**inputs)
    features = outputs.last_hidden_state
    add_vector_to_index(features.mean(dim=1), index)

#print('Extraction done in: ', time.time() - t0)
faiss.write_index(index, 'coco.index')

下面以这张图片为例来检索图片。

请添加图片描述

先提取图片的特征,转为Faiss要求的格式。

image = Image.open('ski.jpg')
#Extract the features
with torch.no_grad():
    inputs = processor(images=image, return_tensors="pt").to(device)
    outputs = model(**inputs)

#Normalize the features before search
embeddings = outputs.last_hidden_state
embeddings = embeddings.mean(dim=1)
vector = embeddings.detach().cpu().numpy()
vector = np.float32(vector)
faiss.normalize_L2(vector)

用之前保存的index, 检索top3相似的图片。

index = faiss.read_index("coco.index")
d,i = index.search(vector,3)
print('distances:', d, 'indexes:', i)

#images[[i][0][k]]为检索到的图片,k为0,1,2

检索效果
请添加图片描述
Faiss本身检索速度很快,GPU下COCO数据集检索仅需0.7ms,
但Dinov2提取特征需要时间。

参考资料

【FAISS指南】打造高性能图像检索应用 使用 FAISS 构建高性能的图像检索应用是一种非常有效的方法,可以帮助您在大规模图像数据集中快速找到最相似的图像。 阅读详情

相关推荐

从原理到部署:手把手教你用DINOv2-base搭建一个本地图片搜索引擎(附完整代码)

本文详细介绍了如何利用DINOv2-base模型和FAISS向量数据库搭建本地图片搜索引擎,涵盖从原理到部署的完整流程。通过实战案例和代码示例,帮助开发者掌握深度学习在图像相似度检索中的应用,实现高效、安全的私有化图像搜索系统。

weixin_42524499的博客 269

深度学习之以图搜图实战(PyTorch + Faiss)

 《深度学习之以图搜图实战(PyTorch + Faiss) 》课程从实战的角度出发,方案来源于工业界实际业务应用(例如:京东、淘宝、拍照搜题、搜索引擎搜索业务等)。通过深度学习工具PyTorch 完成图片特征抽取,结合Facebook AI团队开源的针对聚类和相似性搜索库,完成图片特征索引构建和在线图片检索。    从0到1完成以图搜图的功能实现,针对课程业务分析、数据处理,图片特征索引构建和优化,在线图片检索功能全程实战操作,以最接地气的方式详解每一步流程、解决方案和代码实现。   老师的授课风格: 以实战为主,结合理论,提供免费技术答疑和交流。让大家彻底掌握基于深度学习的图像搜索方案和功能实现。

从零开始:CLIP与DINOv2在图像相似度任务中的实战对比

本文深入对比了CLIP与DINOv2在图像相似度任务中的表现差异,通过实战代码展示了从环境配置到特征提取、相似度计算的全流程。实验表明,CLIP更擅长语义理解,而DINOv2对视觉细节更敏感,两者在图像相似度计算中各具优势。文章还探讨了特征融合和量化加速等优化策略,为开发者提供了实用的技术选型建议。

cuda7parallel的博客 871

DINOv2:结合FAISS进行图像相似性搜索

早些时候,MetaAI 通过开源 DINOv2 在计算机视觉领域取得了一个重要的里程碑,该模型是在 1.42 亿张图像的庞大数据集上训练的。此版本使 DINOv2 与 OpenAI CLIP直接竞争,初步评估表明它甚至可能在某些任务上超越它。然而,浏览现有文档可能难以利用 DINOv2 的功能。在本文中,我们将探讨图像相似性任务需要采取的步骤,并对其性能进行全面评估。图像相似性的意义在之前的故事...

Warmer_Sweeter 4091

避坑指南:Windows本地部署DINOv2图像查重工具的5个关键步骤

本文详细介绍了在Windows系统上本地部署DINOv2图像查重工具的完整流程与关键步骤。针对Windows环境特有的挑战,提供了从环境配置、模型获取、核心代码编写到性能优化的实战指南,并重点分享了使用预训练模型DINOv2进行图像相似性计算的高效方法,帮助开发者避开常见陷阱,快速构建稳定的图像查重系统。

weixin_29089057的博客 546

CV-图像分割-20230405:DINOv2【预训练大模型,拥有 10 亿级参数量,采用Transformer架构;可在语义分割、图像检索、深度估计等方面实现自监督训练。无需微调即可应用于多种下游】

国盛证券分析师刘高畅表示,DINOv2 能比用图像文本对做训练的模型得到更丰富的图像特征,这将让整个系统能更好地理解图像,对多模态 AI 的发展起到加速作用。据官方介绍,Meta 开源了多个不同参数规模的预训练模型,在相同的规模下比较,DINOv2 在多种测试基准的得分都能优于目前开源视觉模型中表现最好的 OpenCLIP。DINOv2将会得到极其广泛的应用,正如马克·扎克伯格所说,DINOv2还能被用于改善医学成像、粮食作物生长,更重要的是,可以制作更具真实感和沉浸感的元宇宙。

u013250861的博客 1996

通过Faiss和DINOv2进行场景识别

【代码】通过Faiss和DINOv2进行场景识别。

697

基于DINOv2+CLIP特征融合的图像检索系统实践

在计算机视觉领域,图像检索的核心是将图片映射为高维特征向量,通过相似度计算返回结果。传统方法依赖手工特征,而如今以CLIP和DINOv2为代表的深度学习模型,分别从语义对齐和视觉结构两个维度提升了特征质量。CLIP通过图文对比学习,将图像与文本映射到同一语义空间,擅长理解内容含义;DINOv2则利用自监督学习,捕捉纹理、形状等细粒度视觉信息。将两者特征融合,可构建兼顾语义与结构的图像检索系统。结合FAISS等向量索引工具,能高效实现海量图片的相似搜索,广泛应用于电商以图搜款、素材管理、相册聚类等场景。本文基

weixin_33402252的博客 335

零代码玩转DINOv2:快马平台5分钟搭建工业级视觉搜索系统

上传图片后,前端通过axios向后端发送请求,后端返回JSON格式的相似图片列表和热力图数据。最惊喜的是,我完全不需要手动配置GPU环境,平台已经预装好了CUDA和cuDNN,模型推理直接跑在GPU上。在快马平台上,我直接使用了Meta官方提供的预训练模型。这个模型已经在大规模无标注数据上完成了自监督学习,能够提取512维的特征向量,非常适合图像相似度计算任务。我的这个图像搜索系统从零开始到最终上线,实际编码时间不超过2小时,这要是在本地环境配置,可能光装依赖就得折腾半天。

SapphireOwl29的博客 850

基于DINOv2+CLIP的双塔图像检索系统实战解析

图像检索是计算机视觉领域的核心应用之一,长期面临语义理解与细节匹配难以兼得的困境。传统哈希与CNN特征在光照变化、跨模态检索等场景下表现有限,而DINOv2与CLIP的互补特性恰好提供了新的解决思路:CLIP通过大规模图文对比学习实现跨模态语义对齐,支持以文搜图;DINOv2自监督模型则提取高区分度视觉特征,对形变与遮挡鲁棒。二者特征融合后,可在零样本条件下同时覆盖语义检索与近重复检索,并兼顾精度与效率。该技术适用于以图搜图、商品推荐、版权查重、数据集去重等典型业务场景,已成为构建高可用图像检索系统的重要方

weixin_29057163的博客 311

DINOv2+CLIP双塔特征融合的图像检索实战

图像检索作为计算机视觉领域的经典任务,核心在于提取具有区分度的视觉特征。传统分类网络提取的特征偏向类别语义,难以应对“风格相似但构图不同”的细粒度检索需求。多模态模型CLIP通过图文对齐将图像与文本映射到同一向量空间,擅长理解整体语义;而自监督模型DINOv2则具备更强的图像局部结构感知能力,能捕捉纹理、边缘等细节信息。将两者特征分别归一化后加权拼接,借助FAISS构建向量索引,可实现兼顾语义与视觉结构的混合检索系统。该方案支持以图搜图和文本搜图两种查询方式,在商品推荐、素材管理、电商同款检索等场景中具有显

weixin_29053695的博客 276

DINOv2实战指南 | 构建高效图像检索系统的核心步骤

本文详细介绍了如何利用DINOv2深度学习模型构建高效的图像检索系统。从模型概述、系统架构设计到特征提取与处理实战,提供了全面的技术指南和优化技巧,帮助开发者快速实现基于图像相似度的高性能检索应用。

weixin_30924087的博客 307

SAP BASIS运维之三方SSL证书导入

事情的起因是我司SAP使用的SSL证书即将要到期了(上一个的SAP BASIS也辞职了),需要进行证书的更换。如上图所示,我司的证书有效期到2024年4月30日到期,需要提前预防并更换,防止过期后导致接口和访问出现问题。9.在弹出的框中,选择我们在第5个步骤中导出的转换结果存储地址,并选择导出的转换文件,点打开。12.最后一步也是关键的一步,不然就会无法更新证书,再点击左上角的个人安全环境,点另存为。10.在打开后的弹窗中,输入我们在第4个步骤中设置的密码。6.经过以上步骤后,我们获得了最终的证书文件。

fegda的专栏 1882

实战DINOv2:从零构建图像相似度检索系统(附完整源码与数据)

本文详细介绍了如何利用DINOv2模型从零构建高效的图像相似度检索系统。通过自监督学习,DINOv2在图像特征提取方面表现出色,特别适合商品去重等场景。文章提供了完整的代码实现、环境配置指南和性能优化技巧,帮助开发者快速部署实用的图像检索解决方案。

weixin_32830601的博客 345

YOLO系列算法改进 | 自研篇 | C3k2融合Circulant Attention注意力模块 | 给局部特征提取器装上了全局动态卷积核,兼顾效率、精度与泛化能力!| AAAI 2026

YOLO系列算法改进 | 自研篇 | C3k2融合Circulant Attention注意力模块 | 给局部特征提取器装上了全局动态卷积核,兼顾效率、精度与泛化能力!| AAAI 2026 (以YOLO26最新目标检测模型为基础,融合C3k2_Circulant创新模块改进Backbone)

2502_91881744的博客 242

自然语言处理:长文本场景下的关键词抽取实践

自然语言处理:长文本场景下的关键词抽取实践

丨汀、的博客 2076

Meta开源DINOv2背后:1.4亿张图片的清洗秘籍与自监督学习数据工程

本文深入解析了Meta开源的DINOv2模型如何通过自监督学习技术,从12亿原始图像中筛选出1.4亿高质量数据构建LVD-142M数据集。详细介绍了数据清洗、聚类去重、语义保持增强等关键技术,以及分布式数据处理流水线的工程实现,为计算机视觉领域的大规模自监督学习提供了实践指南。

i7j8k9l的博客 953

基于逆向工程的中国裁判文书网爬虫技术深度解析:从反爬破解到合规抓取

最近承接了一个法律大数据分析的项目,需要获取某类合同纠纷的裁判文书数据,用于分析不同地区的判决规律、法官的裁判倾向以及法条适用情况。原本以为用常规的Python爬虫就能搞定,结果刚对着中国裁判文书网发了几个请求,就遭遇了“滑铁卢”:要么请求直接返回403 Forbidden,要么触发滑块验证码,甚至连IP都被临时封禁了。普通的requests+BeautifulSoup组合在裁判文书网面前完全失效,这也让我意识到,想要获取这里的数据,必须先通过逆向工程拆解网站的请求逻辑和反爬机制。经过一周的摸索,从抓包分析

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 3168

DINOv2实战:不用标注数据,5行代码提取图像特征做相似图片搜索

本文详细介绍了如何利用Meta开源的DINOv2模型实现零样本图像特征提取与相似图片搜索系统搭建。DINOv2通过自监督学习技术,无需标注数据即可提取高质量图像特征,显著提升图像检索准确率。文章包含5行代码快速实现的实战示例,并对比了不同模型在跨域检索任务中的性能表现,为计算机视觉开发者提供了高效解决方案。

weixin_30412167的博客 221

DO-254标准详解:航空电子硬件设计保证指南全方位解析

RTCA DO-254, 也被称为《机载电子硬件设计保证指南》,是航空电子硬件设计和验证中的关键标准,旨在为确保机载电子硬件的安全性提供设计保证。自2000年首次发布以来,DO-254就成为了民航和军用飞机中电子硬件设计认证的基准文件。随着航空硬件技术的进步和日益复杂化,确保硬件设计的准确性、可靠性和安全性变得至关重要。本标准是由RTCA和EUROCAE共同开发的,适用于涉及机载硬件的航空公司、飞机制造商、供应商和认证机构。

qq_41854911的博客 3682

MIT液态神经网络(LNN)深度研究:原理、应用与未来

液态神经网络(Liquid Neural Networks, LNNs)代表了人工智能领域,特别是神经网络架构设计中的一次范式转移。它从根本上挑战了传统深度学习模型依赖大规模参数和静态架构的惯例,转而寻求一种更为动态、高效且受生物神经系统启发的计算范式。LNN的核心创新在于其将神经网络的计算过程从离散的、基于时间步的更新,转变为连续的、由微分方程驱动的动态系统演化。这种转变不仅赋予了模型前所未有的适应性和鲁棒性,还使其在处理复杂的时序数据和因果推断任务时表现出色。本章节将深入剖析LNN的技术原理,从其核心的

步子哥的博客 2583

单视图3D检索:基于DINOv3知识蒸馏与姿态感知的端到端方法

单视图3D检索是一种将2D图像与三维模型跨模态对齐的关键技术,其核心在于解决‘语义-几何对齐’断点问题——即如何让模型从一张图片中理解物体的空间结构、朝向与骨架关系。该技术依赖于具备姿态不变性与几何敏感性的视觉特征表示,而DINOv3通过自监督动量蒸馏习得的长程空间关系建模能力,恰好满足这一需求;知识蒸馏则成为将大模型先验迁移到轻量学生网络的核心路径。结合姿态感知机制(如可微分坐标变换),系统可在特征空间实现视角归一化,显著提升跨视角匹配精度。典型应用场景包括AR/VR内容检索、工业数字孪生、电商3D试摆及

weixin_30906185的博客 453

TenserRt平台SMOKE 3D目标检测部署完整教程:从理论到实践

本教程详细介绍了在RK3588平台上部署SMOKE 3D目标检测模型的完整流程。SMOKE是一种创新的单阶段单目3D检测方法,通过关键点估计直接预测3D目标信息,有效解决了深度信息缺失等挑战。文章从理论基础出发,解析了SMOKE的核心算法和网络架构,包括DLA-34主干网络和关键点中心化策略。同时提供了详细的Docker环境配置、模型导出到ONNX格式的实践指南,以及TensorRT引擎构建和性能优化的关键技术要点。该教程为开发者在嵌入式平台上实现高效3D目标检测提供了完整的技术参考。

LXY_LOVE36的博客 371

手把手教你用DINOv2搭建个人图片搜索引擎:从环境配置到相似度排序实战

本文详细介绍了如何使用DINOv2构建个人图片搜索引擎,从环境配置到相似度排序的完整实战流程。通过DINOv2模型提取图像特征,结合FAISS实现高效相似度搜索,帮助用户快速搭建跨场景图片搜索系统,提升图片管理效率。

dianchunhui2654的博客 354

【RKNN】RKNN(Rockchip Neural Network)​​ 的详解

RKNN 为 Rockchip 硬件提供了高效的 AI 推理解决方案,适合需要低功耗、实时响应的边缘场景

浩瀚之水的专栏 1683

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

DINOv2:Meta开源视觉大模型如何革新AI开发流程

最近在做一个图像检索相关的项目,正好体验了一把Meta开源的DINOv2视觉大模型,不得不说这个自监督学习的视觉大模型确实给开发流程带来了不少便利。为了提升效率,我还实现了批量处理功能,可以一次性处理多张图片,这对构建图像库特别有用。这个在线的开发环境已经预装了PyTorch等常用库,还能一键部署成可访问的Web应用,省去了配置环境的麻烦。这里我封装了一个预处理函数,可以同时处理单张图片和批量图片,方便后续扩展。不需要任何微调,直接使用预训练模型就能得到不错的效果,这大大降低了开发门槛。

SilverMoon18的博客 843

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: CLIP模型 图片问答
下一篇: 自定义数据 微调CLIP (结合paper)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值