以图搜番。这是一个动漫场景搜索引擎服务端。可以通过番剧某一刻的截图,反向搜索它出自哪部番,以及出现的确切时间。网站前端
与trace.moe相比,由于使用的是深度学习模型提取图像特征,此项目或许能够提供鲁棒性更高,更准确的搜索服务。也因此性能开销更大,收录比较慢。目前仍处于测试阶段
测试图片
搜索结果
需要安装python3
;需要安装ffmpeg
安装依赖项:
pip install bilibili_api imagehash tensorflow keras flask pymilvus opencv-python sklearn bilili
# Linux
pip install plyvel
# Windows
pip install plyvel-win32
- 初始化配置文件
python run.py
- 安装并启动milvus
- 配置
config.json
- 运行下载程序(bilibili)
python run.py download-bilibili
- 运行视频处理/录入程序
# 将会处理已下载的视频
python run.py process
- 运行网站后端
python app.py
此方法仅供测试。生产环境请参考Flask部署方式
下面 的例子使用gunicorn
, 4 worker 进程( -w 4
)来运行 Flask 应用,绑定到 localhost
的 4000 端口( -b 127.0.0.1:4000
):
gunicorn -w 4 -b 127.0.0.1:4000 app:flask_app
-
通过bilibili(或其他网站)的API,自动下载番剧,并初步保存番剧信息
-
使用ffmpeg压缩视频并转为mp4,放到网站静态目录下
-
使用ffmpeg,将视频以一定采样率转为图片,放到临时目录
-
逐帧读取图片,通过
phash
算法过滤掉相邻的相似图片,其余的图片用模型提取特征向量,插入到milvus
。添加的每帧的id
、time
、所属epid
等对应信息存到leveldb
数据库 -
搜索时同样提取图像特征向量,用
milvus
搜索,返回相似帧的id
,再通过数据库查询其他信息
-
支持Xception
预训练模型与PCA
降维 - 训练更符合需求的模型
- 实现对op/ed的优化
-
自动从樱花动漫下载 - 开放搜索API