GEMM生成式多模态表征模型-英文-large
GEMM是在4亿公开英文图文数据训练的多模态模型。视觉encoder采用vit-large-patch14结构,文本encoder采用bert-base结构。 模型在图像分类、图文检索等数据集上进行了zero-shot效果测试。
  • 模型资讯
  • 模型资料

生成式多模态表征模型GEMM

GEMM是在4亿公开英文图文数据训练的多模态模型。视觉encoder采用vit-large-patch14结构,文本encoder采用bert-base结构。
模型在图像分类、图文检索等数据集上进行了zero-shot效果测试。

模型结构信息

Model layers width heads embedding dim
Vision Transformer 24 1024 16 768
Text Transformer 12 768 12 768

使用方式和范围

如何使用

  • 直接推理,对输入的图像、文本数据进行特征提取, 或生成文本描述
  • 用户可根据自身场景特点,收集自己的数据进行fine-tune

代码范例

from modelscope.models import Model
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from PIL import Image
import requests

model = Model.from_pretrained('damo/multi-modal_gemm-vit-large-patch14_generative-multi-modal-embedding')
p = pipeline(task=Tasks.generative_multi_modal_embedding, model=model)

url = 'http://clip-multimodal.oss-cn-beijing.aliyuncs.com/lingchen/demo/dogs.jpg'
image = Image.open(requests.get(url, stream=True).raw)
text = 'dogs playing in the grass'

img_embedding = p.forward({'image': image})['img_embedding']
print('image embedding: {}'.format(img_embedding))

text_embedding = p.forward({'text': text})['text_embedding']
print('text embedding: {}'.format(text_embedding))

image_caption = p.forward({'image': image, 'captioning': True})['caption']
print('image caption: {}'.format(image_caption))

使用场景

  • 适用于通用场景下的图像识别、图文跨模态检索任务
  • 对于其他图像/文本多模态任务,可以考虑使用该模型作为特征提取器

模型局限性以及可能的偏差

模型在数据集上训练,有可能产生一些偏差,请用户自行评测后决定如何使用。

训练数据

训练数据共约4亿公开图文数据集,包含CC3M/CC12M/LAION-400M/YFCC100M公开数据集。

模型训练

预处理

–图像输入:RandomResizedCrop到224*224,随机水平翻转

–文本输入:最多保留77个token

LR scheduler

初始LR为0.001,每30000个iteration之后减小为1/5,共训练90000个iteration。

数据评估及结果

该模型在3个公开图像识别或图文检索数据集上进行了zero-shot评测,对比CLIP相同参数量模型,达到SOTA效果,详细Top1识别或检索准确率如下表所示:

ImageNet-Top1 ImageNet-Top5 Flickr30K-I2T Flickr30K-T2I MSCOCO-I2T MSCOCO-T2I
CLIP (Large) 75.3 94.6 85.7 64.6 57.3 36.1
GEMM (Large) 78.7 95.6 89.2 71.1 59.2 43.0