《博主简介》

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

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

一、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性能对比专栏【链接】,持续更新中~

《------正文------》

引言

最近在研究刚出不久的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. 提取数据库中所有图片的特征
  3. 计算它们之间的相似度
  4. 按相似度排序,返回最相似的图片

系统主要功能

在这里插入图片描述

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

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 - 交互逻辑

应用场景

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

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

项目亮点

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

总结

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

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

在这里插入图片描述

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐