本项目为前几天收费帮学妹做的一个项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。

一、项目描述

基于 CNN 特征提取的本地图片/视频重复检测与整理工具
一个基于 CNN 特征提取的本地图片/视频重复检测与整理工具,用于在海量照片中自动识别并归档重复、相似、不同介质的内容,无需 GPU 即可运行。

二、项目功能

图片重复检测:用 CNN(mobilenet/convnext/squeezenet)提取特征向量,余弦相似度判定重复/相似,取舍后只保留一张
视频重复检测:MD5 快判 → 5 秒抽帧粗筛 → 疑点区 1 秒密集抽帧复核三级流程,支持时间裁剪/画面裁剪/翻转/色彩变换等场景
文件归档:按 images/videos 介质分目录,每目录下再分 processed(保留)/remove(去重剔除)/other(无法判定)
检测与归档解耦:检测阶段只产清单 temp/operations.txt,可人工审查后再单独执行归档
多线程:特征提取预处理与视频指纹提取并行,CNN 推理全局串行;归档纯 IO 并行
节奏控制:仅检测 / 执行归档清单 / 优雅停止
双入口:tkinter 图形界面 ui.py 与命令行 main.py

三、运行环境

操作系统:Windows
Python:3.12+(实测 3.13.5 可用)
硬件:CPU 即可推理,无需 GPU;机械硬盘归档并行度建议调低
启动命令:python ui.py(图形)或 python main.py –input_dir=… –output_dir=…(命令行)
已知坑:Windows + Anaconda 环境下 PyTorch 与其他库 OpenMP 冲突,需设 KMP_DUPLICATE_LIB_OK=TRUE

四、项目技术

语言:Python
深度学习:PyTorch + torchvision(mobilenet_v3_large 为默认模型,权重随项目附带)
图像处理:Pillow、opencv-python
数值计算:numpy
GUI:tkinter(标准库,无额外依赖)
并发:threading(预处理、归档多线程;推理全局锁串行)
工具:tqdm 进度条、requests

以上系统源码经过技术整理与调试,确保能正常运行

五、项目截图

更多推荐