统一12种模态的多模态学习框架
Meta-Transformer是一个创新的多模态学习框架,可处理12种不同模态的数据,包括自然语言、图像、点云和音频等。该框架采用共享编码器架构和数据到序列转换方法,支持分类、检测和分割等多种任务。项目提供开源预训练模型和代码实现,为多模态AI研究提供了有力支持。
<a href="https://twitter.com/_akhaliq/status/1682248055637041152"><img src="https://yellow-cdn.veclightyear.com/835a84d5/774051ba-d803-4782-9004-d0a46755b8a0.png" width="25" height="25"></a>
<a href="https://www.youtube.com/watch?v=V8L8xbsTyls&ab_channel=CSBoard"><img src="https://yellow-cdn.veclightyear.com/835a84d5/174f679c-4932-4c70-82d4-0d9a4d665536.png" width="25" height="25"></a> <a href='https://huggingface.co/kxgong/Meta-Transformer'> <img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\icons\huggingface.png" width="25" height="25"> </a> <a href='https://open.spotify.com/episode/6JJxcy2zMtTwr4jXPQEXjh'> <img src="https://yellow-cdn.veclightyear.com/835a84d5/2bdcdabd-4a80-494e-9e65-76b71f341b6d.svg" width="20" height="20"></a>
我们很高兴呈现OneLLM,它将Meta-Transformer框架与多模态大语言模型相结合,实现了多模态联合训练🚀,支持更多模态包括fMRI、深度图和法线图🚀,并在25个基准测试中展示了非常令人印象深刻的性能🚀🚀🚀。
🔥🔥 代码、预训练模型和数据集可在OneLLM公开获取。
🔥🔥 项目网站在OneLLM。
作为基础模型,Meta-Transformer可以处理来自12种模态的数据,这决定了它可以支持广泛的应用。如图所示,Meta-Transformer可为下游任务提供服务,包括股票分析📈、天气预报☀️ ☔ ☁️ ❄️ ⛄ ⚡、遥感📡、自动驾驶🚗、社交网络🌍、语音识别🔉等。
<p align="center" width="100%"> <img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\Meta-Transformer_application.png" width="100%" height="100%"> </p>表1:Meta-Transformer能够处理多达12种模态,包括自然语言<img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\icons\text.jpg" width="15" height="15">、RGB图像<img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\icons\img.jpg" width="15" height="15">、点云<img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\icons\pcd.jpg" width="15" height="15">、音频<img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\icons\audio.jpg" width="15" height="15">、视频<img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\icons\video.jpg" width="15" height="15">、表格数据<img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\icons\table.jpg" width="15" height="15">、图<img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\icons\graph.jpg" width="15" height="15">、时间序列数据<img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\icons\time.jpg" width="15" height="15">、高光谱图像<img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\icons\hyper.jpg" width="15" height="15">、IMU<img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\icons\imu.jpg" width="15" height="15">、医学图像<img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\icons\xray.jpg" width="15" height="15">和红外图像<img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\icons\infrared.jpg" width="15" height="15">。
<p align="left"> <img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\Meta-Transformer_cmp.png" width=100%> </p>本仓库旨在探索Transformer在多模态学习中的潜力和可扩展性。我们利用Transformer处理可变长度序列的优势,提出了遵循元方案的"数据到序列"标记化,然后将其应用于12种模态,包括文本、图像、点云、音频、视频、红外、高光谱、X射线、表格、图、时间序列和惯性测量单元(IMU)数据。
<p align="left"> <img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\Meta-Transformer_data2seq.png" width=100%> </p>获得标记序列后,我们采用模态共享编码器来提取不同模态的表示。通过特定任务的头部,Meta-Transformer可以处理不同模态的各种任务,如分类、检测和分割。
<p align="left"> <img src="https://raw.githubusercontent.com/invictus717/MetaTransformer/master/assets\Meta-Transformer_framework.png" width=100%> </p> # 🌟 新闻模型 | 预训练 | 规模 | 参数量 | 下载 | 国内下载源 |
---|---|---|---|---|---|
Meta-Transformer-B16 | LAION-2B | Base | 85M | ckpt | ckpt |
Meta-Transformer-L14 | LAION-2B | Large | 302M | ckpt | ckpt |
import torch import torch.nn as nn from timm.models.vision_transformer import Block from Data2Seq import Data2Seq video_tokenier = Data2Seq(modality='video',dim=768) audio_tokenier = Data2Seq(modality='audio',dim=768) time_series_tokenier = Data2Seq(modality='time-series',dim=768) features = torch.concat([video_tokenizer(video), audio_tokenizer(audio), time_series_tokenizer(time_data)],dim=1) # 对于基础规模编码器: ckpt = torch.load("Meta-Transformer_base_patch16_encoder.pth") encoder = nn.Sequential(*[ Block( dim=768, num_heads=12, mlp_ratio=4., qkv_bias=True, norm_layer=nn.LayerNorm, act_layer=nn.GELU ) for i in range(12)]) encoder.load_state_dict(ckpt,strict=True) # 对于大规模编码器: ckpt = torch.load("Meta-Transformer_large_patch14_encoder.pth") encoder = nn.Sequential(*[ Block( dim=1024, num_heads=16, mlp_ratio=4., qkv_bias=True, norm_layer=nn.LayerNorm, act_layer=nn.GELU ) for i in range(24)]) encoder.load_state_dict(ckpt,strict=True) encoded_features = encoder(features)
🚀🚀🚀 我们希望将这个仓库打造成一个强大的基础,用于各种模态的主流AI感知任务。您的贡献可以在这个努力中发挥重要作用,我们热烈欢迎您参与我们的项目!
如需联系我们,请随时发送电子邮件至yiyuanzhang.ai@gmail.com
、kaixionggong@gmail.com
、zhangkaipeng@pjlab.org.cn
或xyyue@ie.cuhk.edu.hk
!
<br></br>
如果代码和论文对您的研究有帮助,请引用:
@article{zhang2023meta,
title={Meta-transformer: A unified framework for multimodal learning},
author={Zhang, Yiyuan and Gong, Kaixiong and Zhang, Kaipeng and Li, Hongsheng and Qiao, Yu and Ouyang, Wanli and Yue, Xiangyu},
journal={arXiv preprint arXiv:2307.10802},
year={2023}
}
本项目基于Apache 2.0许可证发布。
本代码基于优秀的开源项目开发,包括MMClassification、MMDetection、MMsegmentation、OpenPoints、Time-Series-Library