表情包搜索应用、演示和教程
使用Python和人工智能对你的表情包进行内容和文本索引,让你在表情包大战中轻松检索所需素材。
本README的目录如下:
简介
本仓库包含代码、教程笔记本(meme_search_walkthrough.ipynb
)和Streamlit演示应用,用于索引、搜索和轻松检索基于语义搜索的表情包内容和文本。
所有处理过程 - 从图像到文本提取、向量嵌入到搜索 - 都在本地完成。
流程概览
这个表情包搜索流程使用以下开源组件构建:
- moondream:一个小巧但强大的视觉语言模型,用于图像说明/提取图像文本
- all-MiniLM-L6-v2:一个非常流行的文本嵌入模型
- faiss:一个快速高效的向量数据库
- sqlite:史上最伟大的数据库,用于数据索引
- streamlit:用于提供应用服务
安装说明
要为你自己的表情包创建一个方便的工具,请拉取仓库并安装requirements文件
pip install -r requirements.txt
请注意,这里特定版本的要求是为了避免目前与sentence-transformers
有关的严重分段错误截至2024年6月5日。
或者,你可以使用仓库中的compose文件通过docker安装所需的所有要求。使用docker-compose安装上述要求并启动服务器的命令是
docker compose up
启动Streamlit服务器
索引你的表情包后,你可以启动Streamlit应用,让你能够语义搜索并检索你的表情包
python -m streamlit run meme_search/app.py
要通过docker-compose启动应用,请使用
docker compose up
注意:你可以直接从Streamlit应用中拖放任何检索到的表情包到你选择的任何消息应用中。
索引你自己的表情包
将你想为搜索应用索引的任何图像/表情包放在这个仓库的子目录中
data/input/
你可以先清除此位置的默认测试图像,或者保留它们。
接下来,点击"刷新索引"按钮来更新你的索引,当图像被添加或从图像目录中删除时,只会影响新添加或删除的图像。
或者,在你的终端中粘贴以下命令
python meme_search/utilities/create.py
如果通过docker运行服务器,请使用
docker exec meme_search python meme_search/utilities/create.py
你将在终端看到打印输出,表示使你的表情包可搜索的3个主要阶段的成功。这些步骤是
-
提取:使用小巧但强大的视觉语言模型moondream获取每个图像的文本描述,包括图像上任何文本的OCR
-
嵌入:使用流行的嵌入模型sentence-transformers/all-MiniLM-L6-v2对每个图像的文本描述进行窗口处理和嵌入
-
索引:在开源本地向量数据库faiss数据库中索引嵌入,并在史上最伟大的小型数据库sqlite中建立连接嵌入与其图像的引用
更新日志
表情包搜索正在积极开发中!查看本仓库中的CHANGELOG.md
以了解最近的变更记录。
功能请求和贡献
欢迎功能请求和贡献!
查看本仓库的讨论区以了解建议的增强功能,你可以参与贡献或发表意见!
请查看CONTRIBUTING.md
以了解贡献的一些基本规则。
运行测试
首先安装测试要求
pip install -r requirements.test
然后可以运行测试套件
python -m pytest tests/