扫描本地的图片以及视频,使用自然语言进行检索。
- 文字搜图
- 以图搜图
- 文字搜视频(会给出符合描述的视频片段)
- 以图搜视频(通过视频截图搜索所在片段)
- 图文相似度计算(只是给出一个分数,仅作参考)
注意,首次运行会自动下载模型。下载速度可能比较慢,请耐心等待。如果网络不好,模型可能会下载失败,这个时候重新执行程序即可。
- 首次使用前需要安装依赖:
pip install -r requirements.txt
,Windows系统可以双击install.bat
。如果你用Wi - ndows且打算使用GPU加速,请根据官方文档手动安装torch。
install.bat
只会安装仅支持CPU的torch。 - 如果你打算使用GPU加速,则执行基准测试判断是CPU快还是GPU快:
python benchmark.py
,Windows系统可以双击benchmark.bat
。GPU不一定比CPU快,在我的Mac上CPU更快。 - 如果不是CPU最快,则修改
config.py
中的DEVICE
和DEVICE_TEXT
,改为对应设备,如DEVICE = "cuda"
。 - 启动程序:
python main.py
,Windows系统可以双击run.bat
。
如遇到requirements.txt
版本依赖问题(比如某个库版本过新会导致运行报错),请提issue反馈,我会添加版本范围限制。
所有配置都在config.py
文件中,里面已经写了详细的注释。
如果你发现某些格式的图片或视频没有被扫描到,可以尝试在IMAGE_EXTENSIONS
和VIDEO_EXTENSIONS
增加对应的后缀。如果你发现一些支持的后缀没有被添加到代码中,欢迎提issue或pr增加。
小图片没被扫描到的话,可以调低IMAGE_MIN_WIDTH
和IMAGE_MIN_HEIGHT
重试。
在 J3455 CPU 上,语言为English,1秒钟可以进行大约5000-8300次匹配。目前只能用到单核,计划后续优化。
- 部分图片和视频无法在网页上显示,原因是浏览器不支持这一类型的文件(例如tiff文件,svq3编码的视频等)。
- 暂时无法通过多进程优化查询速度。
欢迎提PR!不过为了避免无意义的劳动,建议先提issue讨论一下。
提PR前请确保代码已经格式化。
本项目受MaterialSearch启发,因考虑到数据量大,改用MongoDB数据库,加快向量检索匹配速度。