这是一个基于深度学习的图片相似度检测工具,能够快速识别和分组文件夹中的相似或重复图片。该工具使用预训练的MobileNetV2模型提取图片特征,通过计算余弦相似度来判断图片的相似程度,适用于整理照片、删除重复图片等场景。
- 支持多种常见图片格式(JPG、JPEG、PNG、BMP)
- 采用深度学习模型(MobileNetV2)提取图片特征
- 使用余弦相似度算法进行图片相似度计算
- 多线程并行处理,提高处理速度
- 图形用户界面(GUI),操作简单直观
- 自动对相似图片进行分组和归类
- 生成详细的分析报告
- 支持批量处理大量图片
- Python 3.6 或更高版本
- 主要依赖包:
- tensorflow >= 2.6.0
- numpy >= 1.19.5
- Pillow >= 8.4.0
- scikit-learn >= 0.24.2
- tqdm >= 4.62.3
-
克隆或下载项目到本地:
git clone https://github.com/yourusername/image-similarity-detector.git cd image-similarity-detector -
创建并激活虚拟环境(推荐):
python -m venv venv # Windows .\venv\Scripts\activate # Linux/MacOS source venv/bin/activate
-
安装依赖包:
pip install -r requirements.txt
-
准备图片:
- 创建
images文件夹(如果不存在) - 将需要检测的图片放入
images文件夹
- 创建
-
运行程序:
python same_img_serach.py
-
在图形界面中设置参数:
- 相似度阈值(0-1):值越高要求图片越相似,建议范围0.90-0.98
- 批处理大小:每批处理的图片数量,可根据内存大小调整
- 线程数:并行处理的线程数,建议设置为CPU核心数
-
点击"开始处理"按钮,等待处理完成
程序会在 results 目录下生成以下内容:
-
分析报告(model_duplicates.txt):
- 相似图片组的详细列表
- 每组中的图片完整路径
- 统计信息(组数、图片总数)
-
分组文件夹:
- 每个相似图片组独立存放在
group_1、group_2等文件夹中 - 保留原始图片文件名
- 每个相似图片组独立存放在
-
图片特征提取:
- 使用预训练的MobileNetV2模型
- 将图片调整为224x224大小
- 提取2048维特征向量
-
相似度计算:
- 使用余弦相似度算法
- 构建相似度矩阵
- 根据阈值进行分组
-
性能优化:
- 多线程并行处理
- 批量处理减少内存占用
- 异常处理确保程序稳定性
-
内存使用:
- 处理大量图片时需要足够的内存
- 可通过调整批处理大小控制内存使用
-
处理时间:
- 首次运行需要下载预训练模型
- 处理时间与图片数量和大小成正比
- 可通过增加线程数提高处理速度
-
使用建议:
- 建议先用少量图片测试
- 根据实际需求调整相似度阈值
- 确保有足够的磁盘空间存储结果
MIT License
欢迎提交Issue和Pull Request来帮助改进项目。