Towhee 可以让用户像搭积木一样,轻松地完成 AI 应用程序的构建和落地。
通过使用神经网络数据处理流水线(neural data processing pipeline)的方式,我们可以将 Towhee 社区中数百个现成的模型、算法组合为标准的 AI 流水线。不仅如此,你还可以使用 Towhee 提供的 Pythonic API 来完成各种 AI 流水线和 AI 应用的原型设计,享受自动代码优化,低成本实现生产环境的应用性能优化。
🎨 多模态数据支持:支持不同模态的数据处理,包括:图像、视频、文本、音频、分子结构等。
🎓 SOTA 模型 提供跨 5 个领域(CV、NLP、多模态、音频、医学)、15 种任务、140 个模型架构、700 个预训练的 SOTA 模型(例如:BERT、CLIP、ViT、SwinTransformer、MAE、data2vec 等)。
📦 数据处理 除了神经网络模型,Towhee 同时提供了丰富的传统数据处理算子,包括:视频解码(Video decoding)、音频切片(audio slicing)、帧采样(frame sampling)、特征向量降维(feature vector dimension reduction)、模型融合(model ensemble)、数据库操作(database operations)等。配合各种模型、算法、数据处理方法,用户可以构建端到端的数据处理流水线。
🐍 Pythonic API: 恪守 “Pythonic”,提供简洁、优雅、地道的 Python API。支持链式调用,能够快速定义富有表现力的数据处理流水线,让你处理非结构化数据和像处理表格数据一样简单。
v0.7.1 2022年7月1日
- 新增一个图片嵌入模型(image embedding): MPViT.
- 添加两个视频检索模型(video retrieval): BridgeFormer, collaborative-experts.
- 添加 FAISS-based ANNSearch 算子: to_faiss, faiss_search.
v0.7.0 2022年6月24日
- 添加六个视频理解/分类模型(video understanding/classification) Video Swin Transformer, TSM, Uniformer, OMNIVORE, TimeSformer, MoViNets.
- 添加四个视频检索模型(video retrieval) CLIP4Clip, DRL, Frozen in Time, MDMMT.
v0.6.1 2022年5月13日
- 添加三个文本图像检索模型(text-image retrieval): CLIP, BLIP, LightningDOT.
- 从 PyTorchVideo 添加六个视频理解/分类模型(video understanding/classification): I3D, C2D, Slow, SlowFast, X3D, MViT.
Towhee 需要 Python 3.6 及以上的运行环境,可以通过 pip
来完成快速安装:
pip install towhee towhee.models
安装就绪后,就能够创建你的第一个 AI 流水线啦。下面示例中,我们使用 15 行左右的代码,来创建一个基于 CLIP 的跨模态检索流水线。
import towhee
# 创建 image embeddings 并构建索引
(
towhee.glob['file_name']('./*.png')
.image_decode['file_name', 'img']()
.image_text_embedding.clip['img', 'vec'](model_name='clip_vit_b32', modality='image')
.tensor_normalize['vec','vec']()
.to_faiss[('file_name', 'vec')](findex='./index.bin')
)
# 通过指定文本进行内容检索
results = (
towhee.dc['text'](['puppy Corgi'])
.image_text_embedding.clip['text', 'vec'](model_name='clip_vit_b32', modality='text')
.tensor_normalize['vec', 'vec']()
.faiss_search['vec', 'results'](findex='./index.bin', k=3)
.select['text', 'results']()
)
程序执行完毕,结果如下:
不够过瘾,想要了解更多例子吗?那么来👉 Towhee 训练营 👈 看看吧!
Towhee 由四个主要模块组成:“算子(Operators)”、“流水线(Pipelines)”、“数据处理 API(DataCollection API)”和“执行引擎(Engine)”。
-
算子(Operator):算子是构成神经网络数据处理水流线(neural data processing pipeline)的“积木块”(基础组件)。这些基础组件按照任务类型进行组织,每种任务类型都具有标准的调用接口。一个算子可以是某种神经网络模型,某种数据处理方法,或是某个 Python 函数。
-
流水线(Pipeline):流水线是由若干个算子组成的 DAG(有向无环图)。流水线可以实现比单个算子更复杂的功能,诸如特征向量提取、数据标记、跨模态数据理解等。
-
数据处理 API(DataCollection): DataCollection API 是用于描述流水线的编程接口。基于 DataCollection 定义的流水线,既可以在 Jupyter Notebook 中本地运行,支持快速原型设计,也可以通过自动优化,一键构建出满足生产需要的高性能流水线服务,以及对应的 Docker 镜像。
-
执行引擎(Engine): 执行引擎负责实例化流水线、任务调度、资源管理,以及运行期性能优化。面向快速原型构建,Towhee 提供了轻量级的本地执行引擎;面向生产环境需求,Towhee 提供了基于 Nvidia Triton 的高性能执行引擎。
编写代码并不是参与项目的唯一方式!
你可以通过很多方式来参与 Towhee 社区:提交问题、回答问题、改进文档、加入社群讨论、参加线下 Meetup 活动等。
你的参与对于项目的持续健康发展至关重要。欢迎查阅🎁贡献页面 的文档内容,了解更多详细信息。
特别感谢下面的同学为 Towhee 社区做出的贡献 🌹:
如果你正在寻找用于存储和检索向量的数据库,不妨看看Milvus。