Skip to content

AI语义搜索本地素材。以图搜图、查找本地素材、根据文字描述匹配画面、视频帧搜索、根据画面描述搜索视频。Semantic search. Search local photos and videos through natural language.

License

Notifications You must be signed in to change notification settings

rogerstao/MaterialSearch

Repository files navigation

MaterialSearch 本地素材搜索

中文 | English

扫描本地的图片以及视频,并且可以用自然语言进行查找。

功能

  • 文字搜图
  • 以图搜图
  • 文字搜视频(会给出符合描述的视频片段)
  • 以图搜视频(通过视频截图搜索所在片段)
  • 图文相似度计算(只是给出一个分数,用处不大)

使用说明

通过源码部署

注意,首次运行会自动下载模型。下载速度可能比较慢,请耐心等待。如果网络不好,模型可能会下载失败,这个时候重新执行程序即可。

  1. 首次使用前需要安装依赖:pip install -r requirements.txt,Windows系统可以双击install.bat。如果你用Windows且打算使用GPU加速,请根据官方文档手动安装torch。install.bat只会安装仅支持CPU的torch。
  2. 如果你打算使用GPU加速,则执行基准测试判断是CPU快还是GPU快:python benchmark.py,Windows系统可以双击benchmark.bat。GPU不一定比CPU快,在我的Mac上CPU更快。
  3. 如果不是CPU最快,则修改config.py中的DEVICEDEVICE_TEXT,改为对应设备,如DEVICE = "cuda"
  4. 启动程序:python main.py,Windows系统可以双击run.bat

通过Docker部署

目前只有一个docker镜像,打包了默认模型(openai/clip-vit-base-patch32IDEA-CCNL/Taiyi-CLIP-Roberta-102M-Chinese)并且支持GPU。

启动镜像前,你需要准备:

  1. 数据库的保存路径
  2. 你的扫描路径以及打算挂载到容器内的哪个路径
  3. 根据你的路径信息,准备一个config.py
  4. 根据你的路径信息,修改docker-compose.yml里面的volume路径
  5. 如果打算使用GPU,则需要取消注释docker-compose.yml里面的对应部分

具体请参考docker-compose.yml,已经写了详细注释。

最后执行docker-compose up -d启动容器即可。

配置说明

所有配置都在config.py文件中,里面已经写了详细的注释。

如果你发现某些格式的图片或视频没有被扫描到,可以尝试在IMAGE_EXTENSIONSVIDEO_EXTENSIONS增加对应的后缀。如果你发现一些支持的后缀没有被添加到代码中,欢迎提issue或pr增加。

小图片没被扫描到的话,可以调低IMAGE_MIN_WIDTHIMAGE_MIN_HEIGHT重试。

搜索速度

在 J3455 CPU 上,语言为English,1秒钟可以进行大约5000-8300次匹配。目前只能用到单核,计划后续优化。

已知问题

  1. 部分图片和视频无法在网页上显示,原因是浏览器不支持这一类型的文件(例如tiff文件,svq3编码的视频等)。
  2. 暂时无法通过多进程优化查询速度。

About

AI语义搜索本地素材。以图搜图、查找本地素材、根据文字描述匹配画面、视频帧搜索、根据画面描述搜索视频。Semantic search. Search local photos and videos through natural language.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 70.6%
  • HTML 28.5%
  • Other 0.9%