一、介绍:

给定mplug_image-captioning_coco_base_zh一张图片,模型根据图片信息生成一句对应描述。可以应用于给一张图片配上一句文字或者打个标签的场景。本模型为mPLUG-图像描述的中文Base模型,参数量约为3.5亿。

本任务是mPLUG,在翻译成中文的图像描述MS COCO Caption数据集进行finetune的图像描述下游任务。mPLUG模型是统一理解和生成的多模态基础模型,该模型提出了基于skip-connections的高效跨模态融合框架。

给定mplug_image-captioning_coco_base_zh一张图片,模型根据图片信息生成一句对应描述。可以应用于给一张图片配上一句文字或者打个标签的场景。本模型为mPLUG-图像描述的中文Base模型,参数量约为3.5亿。

仓库链接:mPLUG图像描述模型-中文-base · 模型库 (modelscope.cn)

二、下载模型

文章百度链接提供

三、配置环境

conda create -y --name mPLUG python=3.7
conda activate mPLUG
pip install modelscope
pip install "modelscope[multi-modal]"
pip install open_clip_torch

四、使用教程

此模型官方并未给出一个详细的脚本,本站针对不同场景,写了几个简单的Python脚本,可以满足你在各个环境下的基本使用要求。

代码编辑器

使用pycharm运行以下Python脚本即可。在运行该脚本之前,请先对以下Python脚本中的名称格式路径根据自身情况进行修改。

注意:使用VS Code执行该脚本时,VS Code会提示您选择一个Python环境,此时您可以选择名为mPLUGPython环境,这就是我们刚刚使用Conda所生成的虚拟环境。

示例代码

请将其中input_caption变量的,修改为你需要的文件路径,然后运行该脚本即可。

# 此脚本由openai.wiki提供转载请注明出处谢谢配合

from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks


# 图像文件路径
input_caption = 'D:/image.png'

# 以下代码不要修改保持默认即可
model_id = 'damo/mplug_image-captioning_coco_base_zh'

pipeline_caption = pipeline(Tasks.image_captioning, model=model_id)
result = pipeline_caption(input_caption)
print(result)

执行此段代码后需要等待片刻,具体时间与硬件和系统配置相关。

官方参考

以下为官方所提供的参考参数等,本站并未进行整理,大家可根据自身需求浏览自己需要的部分。

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

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

训练数据介绍

本模型训练数据集是MS COCO Caption, 具体数据可以下载

微调代码范例

import tempfile

from modelscope.msdatasets import MsDataset
from modelscope.metainfo import Trainers
from modelscope.trainers import build_trainer

datadict = MsDataset.load('coco_captions_small_slice')

train_dataset = MsDataset(
    datadict['train'].remap_columns({
        'image:FILE': 'image',
        'answer:Value': 'answer'
    }).map(lambda _: {'question': 'what the picture describes?'}))
test_dataset = MsDataset(
    datadict['test'].remap_columns({
        'image:FILE': 'image',
        'answer:Value': 'answer'
    }).map(lambda _: {'question': 'what the picture describes?'}))

# 可以在代码修改 configuration 的配置
def cfg_modify_fn(cfg):
    cfg.train.hooks = [{
        'type': 'CheckpointHook',
        'interval': 2
    }, {
        'type': 'TextLoggerHook',
        'interval': 1
    }, {
        'type': 'IterTimerHook'
    }]
    return cfg

kwargs = dict(
    model='damo/mplug_image-captioning_coco_base_zh',
    train_dataset=train_dataset,
    eval_dataset=test_dataset,
    max_epochs=2,
    cfg_modify_fn=cfg_modify_fn,
    work_dir=tempfile.TemporaryDirectory().name)

trainer = build_trainer(
    name=Trainers.nlp_base_trainer, default_args=kwargs)
trainer.train()

数据评估及结果

mPLUG在VQA数据集,同等规模和预训练数据的模型中取得SOTA,VQA榜单上排名前列。

相关论文以及引用信息

如果我们的模型对您有帮助,请您引入我们的文章:

@inproceedings{li2022mplug,
      title={mPLUG: Effective and Efficient Vision-Language Learning by Cross-modal Skip-connections},
      author={Li, Chenliang and Xu, Haiyang and Tian, Junfeng and Wang, Wei and Yan, Ming and Bi, Bin and Ye, Jiabo and Chen, Hehong and Xu, Guohai and Cao, Zheng and Zhang, Ji and Huang, Songfang and Huang, Fei and Zhou, Jingren and Luo Si},
      year={2022},
      journal={arXiv}
}

五、效果展示