[开源]ACG2Vec——ACG 相关深度学习应用(以图搜图、插画评分、文本搜图等)

305 天前
 OysterQAQ

ACG2vec全称为Anime Comics Games to vector 。本 repo 会持续维护一些基于二次元相关的深度学习领域实践与探索。

在线预览(目前包含文本搜索、以图搜图、文本搜图、图片分数预测):https://cheerfun.dev/acg2vec/

开源仓库:https://github.com/OysterQAQ/ACG2vec

演示页前端开源仓库:https://github.com/wewewe131/acg2vec-frontend

以上两个仓库求个 star QAQ🌟🌟🌟

目前模块包括:

💡预览

语义文本搜索

语义图像搜索

插画综合评分预测

以图搜图

6626 次点击
所在节点    分享创造
42 条回复
lopssh
301 天前
谢谢分享。
zzzlight
299 天前
厉害的,虽然我研究生是做向量搜索的,曾经也有过做这个的想法,可惜行动力不足+实验室折磨导致彻底被恶心到了。楼主研一虽然都是开源库,把这一套搞出来真的很不容易了。
OysterQAQ
299 天前
@zzzlight 感谢认可🙏,没有啥模型创新能力,喜欢用受得住工业界检验的,例如分类模型用 ResNet 而不去魔改 vit 之类的。可能代码上有帮助的就是一些模型应用经验,例如大的生产数据集如何去训练,以及大数据集训练过程出现的问题解决🥳。
zzzlight
299 天前
这玩意核心还是数据,我还记得以前实验室师弟高强度爬数据的日子 5555555555 。以及被硬盘爆满支配的恐惧。
zzzlight
299 天前
@OysterQAQ resnet 够用了(这方面真的越经典的越好用,确实是有原因的,很多灌水的或者好像很火的论文在工业应用上是大粪)
zzzlight
299 天前
检索上 milvus 的集成了不少算法,可以都试试(最后会发现还是经典的 HNSW 最好用)。工业上主流还是 ivfpq 、HNSW 这些,milvus 好像把 diskann 这种超大规模的集成了,但是还是不如经典的 HNSW (听说 milvus 最近魔改进 Diskann 了)。反正检索方面是这个情况。
OysterQAQ
299 天前
@zzzlight #26 我现在近似度量用的是预先 L2+dot ( milvus 文档示例也是这种方式)来等效 Cos Similarity 的方式,milvus 默认聚类索引好像是 faiss ,没有比较过 faiss 和 ann 的差别
zzzlight
299 天前
@OysterQAQ faiss 是 Facebook 的一个库,里面有常见的一些算法比如 pq 、ivfpq 、HNSW 这些,ann 是近似最近邻搜索的意思(现在换了个皮叫向量检索),faiss 是 ann 的搜索算法库。是这么个关系。
zzzlight
299 天前
除了用 faiss 的话,没事你可以看看 milvus 的配置,换换别的方法,底层用基于图的一些算法或者聚类量化+图结合的应该能提高不少检索精度(不过这个也看你数据量,上亿如果一亿数据还能勉强用用图,更多就只能 pq 算法(又叫基于量化的算法)或者他们的魔改版 diskann 了)。
zzzlight
299 天前
距离度量的话 l2 是没啥毛病的。
@OysterQAQ
zzzlight
299 天前
检索上就是速度和精度的权衡,根据你的数据量、内存大小的取舍。
zzzlight
299 天前
向量检索是个大坑,发论文啥的就别碰这个了,对 c++实力要求太高了,而且很多现在的论文也是想尽办法水(属于水都不好水了)
zzzlight
299 天前
不过 milvus 上那些已经算是能用的算法可以都了解一下,就那么几篇论文,应该对你提高搜索精度上能有所帮助。名字就是我上面提到的一些,考虑到你主要估计是做学习的,省事可以直接看知乎,勤快点就看看论文原文。
OysterQAQ
299 天前
@zzzlight #33 好的,感谢前辈指路🥳
zzzlight
299 天前
解释一下为啥 milvus 里面有 faiss ,因为所谓的 milvus 核心的代码还是从 faiss 的开源库里面拿过来魔改的,反正现在就是啥开源啥拿来魔改缝合,我不知道你是用的哪个语言接口,里面提供的方法还有哪些,但是这个玩意核心还是用 c++实现的,提供的 mode 溯源的核心算法应该就是那几个(抱歉好久没看 milvus 的调用接口了,现在也不记得了)。
LancerComet
297 天前
@zzzlight 您好打扰了,想向您请教一下,我现在准备更新图库的相似图片搜索功能,之前用的是图片哈希这种传统方式,现在打算用 pgvector 直接在 postgres 上存储并索引 Resnet 152 的特征来实现这个功能,查询就打算直接用 pgvector 提供的 L2 distance 方法,非常简陋的一套,不知道您是否能评估类似这样的方案一般能应对多大的数据量的查询
zzzlight
297 天前
@LancerComet 你好,我稍微看了下 pgvector 的 git ,好像他们提供的 l2 距离的搜索是直接用的 faiss 的 ivfflat 方法(也就是是聚类大致分几个桶之后查询点和图库中数据暴力遍历的思路)(也叫倒排索引)。具体的 pgvector 的表现情况可以看: https://ann-benchmarks.com/pgvector.html 这里用常用的一些数据集(基本就是手写数字和一些经典图像转换过来的究极经典数据集)评估了 qps 情况,查询量可以参考这个的 qps ,理论上来说这些数据集都是被算法极大适应的数据类型,真实世界的查询情况只会差不会好(单由于你这个本来也就是暴力遍历,我估计会和真实环境下差不多)。大致达到 90 多的召回率在 10-100 的 qps 这个范围。
LancerComet
297 天前
@zzzlight 非常感谢您的指点,我去看看
GoRoad
295 天前
还记得当年认识你的时候 买你自己搭的服务 现在都这么强了
OysterQAQ
294 天前
@GoRoad 哈哈老哥,认识得有四年了吧,一直在折腾,没得安定下来

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/959669

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX