欢迎光临
我们一直在努力

【开源】基于DINOv3的以图搜图系统,告别手动翻图!AI帮你一秒找到相似图片

《博主简介》

小伙伴们好,我是阿旭。 专注于计算机视觉领域,包括目标检测、图像分类、图像分割和目标跟踪等项目开发,提供模型对比实验、答疑辅导等。

《——往期经典推荐——》

一、AI应用软件开发实战专栏【链接】

项目名称项目名称
1.【人脸识别与管理系统开发】 2.【车牌识别与自动收费管理系统开发】
3.【手势识别系统开发】 4.【人脸面部活体检测系统开发】
5.【图片风格快速迁移软件开发】 6.【人脸表表情识别系统】
7.【YOLOv8多目标识别与自动标注软件开发】 8.【基于深度学习的行人跌倒检测系统】
9.【基于深度学习的PCB板缺陷检测系统】 10.【基于深度学习的生活垃圾分类目标检测系统】
11.【基于深度学习的安全帽目标检测系统】 12.【基于深度学习的120种犬类检测与识别系统】
13.【基于深度学习的路面坑洞检测系统】 14.【基于深度学习的火焰烟雾检测系统】
15.【基于深度学习的钢材表面缺陷检测系统】 16.【基于深度学习的舰船目标分类检测系统】
17.【基于深度学习的西红柿成熟度检测系统】 18.【基于深度学习的血细胞检测与计数系统】
19.【基于深度学习的吸烟/抽烟行为检测系统】 20.【基于深度学习的水稻害虫检测与识别系统】
21.【基于深度学习的高精度车辆行人检测与计数系统】 22.【基于深度学习的路面标志线检测与识别系统】
23.【基于深度学习的智能小麦害虫检测识别系统】 24.【基于深度学习的智能玉米害虫检测识别系统】
25.【基于深度学习的200种鸟类智能检测与识别系统】 26.【基于深度学习的45种交通标志智能检测与识别系统】
27.【基于深度学习的人脸面部表情识别系统】 28.【基于深度学习的苹果叶片病害智能诊断系统】
29.【基于深度学习的智能肺炎诊断系统】 30.【基于深度学习的葡萄簇目标检测系统】
31.【基于深度学习的100种中草药智能识别系统】 32.【基于深度学习的102种花卉智能识别系统】
33.【基于深度学习的100种蝴蝶智能识别系统】 34.【基于深度学习的水稻叶片病害智能诊断系统】
35.【基于与ByteTrack的车辆行人多目标检测与追踪系统】 36.【基于深度学习的智能草莓病害检测与分割系统】
37.【基于深度学习的复杂场景下船舶目标检测系统】 38.【基于深度学习的农作物幼苗与杂草检测系统】
39.【基于深度学习的智能道路裂缝检测与分析系统】 40.【基于深度学习的葡萄病害智能诊断与防治系统】
41.【基于深度学习的遥感地理空间物体检测系统】 42.【基于深度学习的无人机视角地面物体检测系统】
43.【基于深度学习的木薯病害智能诊断与防治系统】 44.【基于深度学习的野外火焰烟雾检测系统】
45.【基于深度学习的脑肿瘤智能检测系统】 46.【基于深度学习的玉米叶片病害智能诊断与防治系统】
47.【基于深度学习的橙子病害智能诊断与防治系统】 48.【基于深度学习的车辆检测追踪与流量计数系统】
49.【基于深度学习的行人检测追踪与双向流量计数系统】 50.【基于深度学习的反光衣检测与预警系统】
51.【基于深度学习的危险区域人员闯入检测与报警系统】 52.【基于深度学习的高密度人脸智能检测与统计系统】
53.【基于深度学习的CT扫描图像肾结石智能检测系统】 54.【基于深度学习的水果智能检测系统】
55.【基于深度学习的水果质量好坏智能检测系统】 56.【基于深度学习的蔬菜目标检测与识别系统】
57.【基于深度学习的非机动车驾驶员头盔检测系统】 58.【太基于深度学习的阳能电池板检测与分析系统】
59.【基于深度学习的工业螺栓螺母检测】 60.【基于深度学习的金属焊缝缺陷检测系统】
61.【基于深度学习的链条缺陷检测与识别系统】 62.【基于深度学习的交通信号灯检测识别】
63.【基于深度学习的草莓成熟度检测与识别系统】 64.【基于深度学习的水下海生物检测识别系统】
65.【基于深度学习的道路交通事故检测识别系统】 66.【基于深度学习的安检X光危险品检测与识别系统】
67.【基于深度学习的农作物类别检测与识别系统】 68.【基于深度学习的危险驾驶行为检测识别系统】
69.【基于深度学习的维修工具检测识别系统】 70.【基于深度学习的维修工具检测识别系统】
71.【基于深度学习的建筑墙面损伤检测系统】 72.【基于深度学习的煤矿传送带异物检测系统】
73.【基于深度学习的老鼠智能检测系统】 74.【基于深度学习的水面垃圾智能检测识别系统】
75.【基于深度学习的遥感视角船只智能检测系统】 76.【基于深度学习的胃肠道息肉智能检测分割与诊断系统】
77.【基于深度学习的心脏超声图像间隔壁检测分割与分析系统】 78.【基于深度学习的心脏超声图像间隔壁检测分割与分析系统】
79.【基于深度学习的果园苹果检测与计数系统】 80.【基于深度学习的半导体芯片缺陷检测系统】
81.【基于深度学习的糖尿病视网膜病变检测与诊断系统】 82.【基于深度学习的运动鞋品牌检测与识别系统】
83.【基于深度学习的苹果叶片病害检测识别系统】 84.【基于深度学习的医学X光骨折检测与语音提示系统】
85.【基于深度学习的遥感视角农田检测与分割系统】 86.【基于深度学习的运动品牌LOGO检测与识别系统】
87.【基于深度学习的电瓶车进电梯检测与语音提示系统】 88.【基于深度学习的遥感视角地面房屋建筑检测分割与分析系统】
89.【基于深度学习的医学CT图像肺结节智能检测与语音提示系统】 90.【基于深度学习的舌苔舌象检测识别与诊断系统】
91.【基于深度学习的蛀牙智能检测与语音提示系统】 92.【基于深度学习的皮肤癌智能检测与语音提示系统】
93.【基于深度学习的工业压力表智能检测与读数系统】 94.【基于深度学习的CT扫描图像肝脏肿瘤智能检测与分析系统】
95.【基于深度学习的CT扫描图像脑肿瘤智能检测与分析系统】 96.【基于深度学习的甲状腺结节智能检测分割与诊断系统】

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~ 三、深度学习【Pytorch】专栏【链接】 四、【Stable Diffusion绘画系列】专栏【链接】 五、YOLOv8改进专栏【链接】,持续更新中~~ 六、YOLO性能对比专栏【链接】,持续更新中~

《——正文——》

目录

  • 引言
  • 核心原理
    • 1. 什么是DiNOv3?
    • 2. 特征提取:图片变数字
    • 3. 相似度计算:如何判断两张图像不像?
  • 系统主要功能
    • 1. 以图搜图
    • 2. 文件夹选择
    • 3. 相似度展示
    • 4. 灵活的搜索设置
    • 5. 实时预览
  • 技术栈
  • 应用场景
  • 项目亮点
  • 总结

引言

最近在研究刚出不久的DINOv3模型,基于它强大的特征提取能力,顺便做了一个基于DiNOv3的图像检索系统,能够基于给定图片搜索相似图片,也就是以图搜图的功能。代码已开源,感兴趣的小伙伴文末获取即可。实现界面如下: 在这里插入图片描述

核心原理

1. 什么是DiNOv3?

DiNOv3是Facebook(现Meta)推出的一个强大的视觉模型。它通过自监督学习,从海量图片中学习到了丰富的视觉特征。简单来说,它能把一张图片转换成一个数字向量,这个向量就代表了图片的"内容"和"含义"。

2. 特征提取:图片变数字

当我们把一张图片输入DiNOv3模型时,它会输出一个768维的向量。这个向量就像图片的"指纹":

  • 相似的图片,它们的"指纹"很接近
  • 不同的图片,"指纹"差距很大

核心代码示例:

class DINOv3Encoder:
"""DINOv3特征提取器"""

def __init__(self, model_name="PreModels/dinov3-vits16-pretrain-lvd1689m"):
"""初始化DINOv3模型"""
try:
logger.info(f"正在加载模型: {model_name}")
self.processor = AutoImageProcessor.from_pretrained(model_name)
self.model = AutoModel.from_pretrained(model_name, device_map="auto").eval()
self.device = self.model.device
logger.info(f"模型加载成功,设备: {self.device}")
except Exception as e:
logger.error(f"模型加载失败: {e}")
raise

@torch.inference_mode()
def encode(self, image):
"""提取图像特征向量"""
try:
# 确保图像是RGB格式
if image.mode != 'RGB':
image = image.convert('RGB')

inputs = self.processor(images=image, return_tensors="pt").to(self.device)
outputs = self.model(**inputs)
features = outputs.pooler_output[0].cpu().numpy()
return features
except Exception as e:
logger.error(f"特征提取失败: {e}")
raise

3. 相似度计算:如何判断两张图像不像?

有了特征向量,我们就可以计算两张图片的相似度了。最常用的方法是余弦相似度:

  • 相似度 = 1:完全相同
  • 相似度 = 0:完全不同
  • 相似度 = 0.8:相似度80%

核心代码示例:

from sklearn.metrics.pairwise import cosine_similarity

# 计算查询图片和数据库图片的相似度
similarity = cosine_similarity([query_features], [db_features])[0][0]

整个流程就是:

  • 提取查询图片的特征
  • 提取数据库中所有图片的特征
  • 计算它们之间的相似度
  • 按相似度排序,返回最相似的图片
  • 系统主要功能

    在这里插入图片描述

    这个图像检索系统虽然代码简洁,但功能非常实用:

    1. 以图搜图

    上传一张图片作为"查询图",系统会在你选择的文件夹中搜索所有图片,找出最相似的几张。不需要手动打标签,不需要复杂的配置,一键搜索!

    2. 文件夹选择

    点击按钮选择文件夹,系统会自动:

    • 扫描文件夹中的所有图片
    • 支持JPG、PNG、BMP等多种格式
    • 自动过滤非图片文件
    • 实时显示找到的图片数量

    3. 相似度展示

    每张搜索结果上方都会显示相似度百分比,让你清楚知道:

    • 这张图和查询图有多像
    • 是否符合你的预期
    • 是否需要调整搜索参数

    4. 灵活的搜索设置

    • 显示数量:想看多少张结果?1到100张,默认12张
    • 相似度阈值:只看相似度高的图片?设置阈值即可,默认0.1(10%)

    5. 实时预览

    选择图片和文件夹时,界面会实时显示预览,所见即所得,操作体验流畅。

    技术栈

    • 后端:

      • Flask – Web框架
      • PyTorch – 深度学习框架
      • Transformers – Hugging Face模型库
      • PIL/Pillow – 图像处理
      • scikit-learn – 余弦相似度计算
      • NumPy – 数值计算
    • 前端:

      • HTML5
      • Tailwind CSS – 样式框架
      • Font Awesome – 图标库
      • JavaScript – 交互逻辑

    应用场景

    这个系统可以应用在很多地方:

    • 个人相册管理:快速找到相似的照片
    • 设计素材整理:找风格相似的图标、插画
    • 电商图片检索:根据商品图找相似商品
    • 版权检测:查找是否有重复或相似的图片
    • 内容审核:识别违规图片的变种

    项目亮点

  • 开箱即用:无需复杂配置,安装依赖即可运行
  • 代码简洁:前后端分离,结构清晰,易于理解
  • 功能完整:从图片选择到结果展示,一应俱全
  • 可扩展性强:可以轻松替换模型、添加新功能
  • 总结

    这个基于DiNOv3的图像检索系统,展示了AI如何让我们的生活更便捷。它不需要复杂的算法知识,不需要昂贵的硬件,却能解决实际的问题。

    如果你对图像检索、深度学习感兴趣,不妨试试这个项目。代码开源,可以自由修改和扩展。以下方式获取即可。

    在这里插入图片描述

    好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~ 关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

    赞(0)
    未经允许不得转载:171主机测评 » 【开源】基于DINOv3的以图搜图系统,告别手动翻图!AI帮你一秒找到相似图片
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址