“万物皆可 Embedding”这句话仿佛每个做算法模型小伙伴都听过了。“万物”具体是指什么呢?Embedding 又是如何实现的呢?本文介绍了一款像积木般易于组合、开箱即用的 Embedding 流水线。
本文转载自知乎用户 CSY,转载已取得原作者受权。原文请见:https://zhuanlan.zhihu.com/p/…
万物皆可 Embedding
在大数据的事实世界中,包含了任何内容:图片、视频、语音、文本,甚至 3D 模型等,这些可统称为非结构化数据。理解了所谓的“万物”,那 Embedding 又指什么?如下图所示,针对非结构化数据,咱们利用 AI 技术来对其进行编码,转换成特征向量,通过计算向量实现对非结构化数据的剖析。通常将非结构化数据提取向量的过程称为 Embedding。
开箱即用的 Embedding 流水线——Towhee
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?l…
图像 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)。
- Pipeline: 一条流水线是由多个算子组成的 Embeddding 工作。
- Operator: 算子是管道中的单个节点。它能够是机器学习模型、简单算法或 Python 函数。Towhee 将多个算子连贯在一起组成流水线。
- Engine: 引擎是 Towhee 的外围。给定一个流水线,引擎会驱动各个算子之间的数据流、调度工作,并监控计算资源(CPU/GPU/ 等)的应用状况。
- Layers: 模型层用于疾速构建机器学习模型,它反对各种经典和新公布的模型。
- Trainer: 训练提供模型训练与优化,它治理着模型训练的各个组件。
总结
正如 Towhee Logo 的设计初衷——帮忙用户把机器学习利用中所用到的流水线模块化,就像积木或拼图一样易于组合。Towhee 不光提供了开箱即用的 Embedding 流水线,你还能够创立任何你想要的 operator,而后拼图式的搭建各种所需的流水线。
Towhee 作为一个开源我的项目,如果你有任何需要都能够给社区提 ISSUE 并退出社区的探讨,十分欢送大家成为 Towhee 的贡献者!
Towhee website: https://towhee.io
GitHub: https://github.com/towhee-io/…
Slack: https://slack.towhee.io
Twitter: https://twitter.com/towheeio