“万物皆可 Embedding”这句话似乎每个做算法模型小伙伴都听过了。“万物”具体是指什么呢?Embedding 又是如何实现的呢?本文介绍了一款像积木般易于组合、开箱即用的 Embedding 流水线。
本文转载自知乎用户 CSY,转载已获得原作者授权。
Embedding 过程通常利用 AI 模型来实现,而模型使用包括调研、选型、训练与调优等复杂且成本较高的流程,好在业界已提供很多预训练好的模型可以直接用,但如何切换模型以及快速上手,就需要一套开箱即用的流水线(Pipeline)。
"X2Vec, Towhee is all you need!" 是 Towhee 这个开源项目的口号,它提供开箱即用的 Embedding 流水线,你无需了解内部工作原理,就可以开发和部署各种各样的流水线。
如上图所示,针对各种各样的视频应用场景,可以将流水线进行拆分,如图像处理和音频处理两个流水线。首先,截取视频帧,然后对截取到的图片集进行处理,得到特征向量;再获取视频中的音频数据,提取音频的特征向量。通过对图片帧和音频的处理来进一步分析视频,当然图片和音频的 embedding 也可以各自定义为一个流水线,并且流水线的使用非常简单,只需要运行 pipeline(pipeline_name:str)
,而这些流水线都被管理在 Towhee Hub 上,你也可以在 Hub 上寻找你需要的 Embedding 流水线。
Towhee Hub 地址(点击右侧的 Categories 可以进行筛选):https://towhee.io/pipelines?limit=30&page=1
图像 Embedding
Towhee 目前支持多个图像 Embedding 流水线,包括 resnet50,resnet101,efficientnetb5,efficientnetb7,vitlarge,swinbase,swinlarge,efficientnetb7-swinlarge-ensemble。值得关注的是 efficientnetb7-swinlarge-ensemble,它将 efficientnetb7 和 swinlarge 模型融合得出更优的模型效果。
>>> from towhee import pipeline
>>> embedding_pipeline = pipeline('towhee/image-embedding-resnet50')
>>> embedding = embedding_pipeline('path/to/your/image')
音频 Embedding
Towhee 支持基于 VGGish 和 CLM 模型的音频 Embedding 流水线,vggish 可以帮助实现音频分类任务,clmr 通常用于提取音频或者音乐的指纹。
>>> embedding_pipeline = pipeline('towhee/audio-embedding-vggish')
>>> embedding = embedding_pipeline('path/to/your/audio')
视频 Embedding
就像拼图一样,Towhee 可以将图片 Embedding 流水线和音频 Embedding 流水线结合实现视频 Embedding 流水线(开发中)。
>>> embedding_pipeline = pipeline('towhee/video-embedding-resnet50-vggish')
>>> embedding = embedding_pipeline('path/to/your/video')
上面列举了图片、音频、视频 Embedding 流水线的例子,除了这些,Towhee 还会持续完善各种非结构化数据处理的模型,比如文本、多模态 Embedding 等。当然如果你有什么好的模型建议,或者不同的需求,都十分欢迎在 Towhee 项目下提 issue,为 Towhee 社区做贡献~
Towhee GitHub 地址:https://github.com/towhee-io/towhee
你可能会好奇,为什么 towhee 使用 Embedding 流水线如此简单?似乎只需要指定模型就可以直接运行,接下来为你简单介绍下 Towhee 框架。Towhee 主要包含了流水线(Pipelines),算子(Operators),引擎(Engine),以及模型相关的模型层(Layers)和训练(Trainer)。
正如 Towhee Logo 的设计初衷——帮助用户把机器学习应用中所用到的流水线模块化,就像积木或拼图一样易于组合。Towhee 不光提供了开箱即用的 Embedding 流水线,你还可以创建任何你想要的 operator,然后拼图式的搭建各种所需的流水线。
Towhee 作为一个开源项目,如果你有任何需求都可以给社区提 ISSUE 并加入社区的讨论,非常欢迎大家成为 Towhee 的贡献者!
Towhee website: https://towhee.io
GitHub: https://github.com/towhee-io/towhee
Slack: https://slack.towhee.io
Twitter: https://twitter.com/towheeio
Zilliz 以重新定义数据科学为愿景,致力于打造一家全球领先的开源技术创新公司,并通过开源和云原生解决方案为企业解锁非结构化数据的隐藏价值。
Zilliz 构建了 Milvus 向量数据库,以加快下一代数据平台的发展。Milvus 数据库是 LF AI & Data 基金会的毕业项目,能够管理大量非结构化数据集,在新药发现、推荐系统、聊天机器人等方面具有广泛的应用。