mPLUG|支持中文的自动识别图像内容描述模型
给定mplug_image-captioning_coco_base_zh
一张图片,模型根据图片信息生成一句对应描述。可以应用于给一张图片配上一句文字或者打个标签的场景。本模型为mPLUG-图像描述的中文Base模型,参数量约为3.5亿。
本任务是mPLUG,在翻译成中文的图像描述MS COCO Caption数据集进行finetune的图像描述下游任务。mPLUG模型是统一理解和生成的多模态基础模型,该模型提出了基于skip-connections的高效跨模态融合框架。
项目仓库
仓库链接:mPLUG图像描述模型-中文-base · 模型库 (modelscope.cn)
前置条件
在执行项目安装之前,我们还需要安装Git
和Conda
,如果您的电脑还未安装这两款软件,请先根据本站所给出的教程安装。
Windows系统安装Git请参阅此文章:
Windows系统安装Conda请参阅此文章:
网络问题
在安装过程中,你可能即便开启了魔法上网也无法下载一些编程依赖库,关于魔法上网的相关配置问题不方便在站内讲解,请自行查看【魔法上网】的教程内容。
适用范围
本模型主要用于给问题和对应图片生成答案。用户可以自行尝试各种输入文档。具体调用方式请参考代码示例。
如何使用
在安装完成MaaS-lib
之后即可使用image-captioning
的能力。
部署教程
如果您是初学者,对于命令行不太理解,那么请按下键盘上的Win键+R键
后,在弹出的新窗口内输入CMD
并按下回车
键,打开CMD窗口,按顺序执行
如下的每一条命令。
环境部署
在CMD中执行下面的命令行,创建一个名为mPLUG
的Conda
虚拟环境,且Python
版本为3.7
。
conda create -y --name mPLUG python=3.7
初始化Conda
环境,防止后续操作可能存在报错等问题。
conda init cmd.exe
激活
名为mPLUG
的Conda环境
,这样我们可以将我们后续所需要的所有环境依赖都安装至此环境下。
conda activate mPLUG
执行如下命令,安装阿里达摩院
的魔塔
模块。
pip install modelscope
执行如下命令,安装阿里达摩院
所提供魔塔
的多模态
相关环境依赖。
pip install "modelscope[multi-modal]"
另外,该项目还需要一些其它模块的支持,执行如下代码自动安装。
pip install open_clip_torch
此时我们已经完成了关于此项目的所有相关环境部署,下面进入使用环节的介绍。
模型下载
官方下载
在你首次使用Python调用该环境时,项目将会自动从阿里云拉取相应模型至本地。
网盘下载
关于此项目的模型,本站已为您下载并整理好。如果你不方便通过官网下载,可以使用本站所提供的网盘下载地址。
该项目的模型默认路径为%USERPROFILE%\.cache\modelscope\hub\damo
,如果你是初次使用,可能不存在此路径,可以在CMD中执行如下代码判断该路径是否存在,如果不存在则自动创建。
if not exist %USERPROFILE%\.cache\modelscope\hub\damo mkdir %USERPROFILE%\.cache\modelscope\hub\damo
执行完上面的代码之后,我们可以通过在CMD
中执行
下面的代码
,自动打开模型目录
。
start %USERPROFILE%\.cache\modelscope\hub\damo
将我们下载完成的模型
文件解压
缩,然后将解压后的文件移动
至damo
文件夹下即可。
使用教程
此模型官方并未给出一个详细的脚本,本站针对不同场景,写了几个简单的Python脚本,可以满足你在各个环境下的基本使用要求。
代码编辑器
使用VSCode
运行以下Python
脚本即可。在运行该脚本之前,请先对以下Python脚本中的名称
|格式
|路径
根据自身情况进行修改。
注意:使用VS Code执行该脚本时,VS Code
会提示您选择一个Python环境,此时您可以选择名为mPLUG
的Python环境
,这就是我们刚刚使用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} }
总结
总得来说,该模型对于图像的描述准确性高达90%,甚至比肉眼总结的还要好,因为那只猫站长都没有看出来是在篮子上的。
该模型可能对于训练图像打标非常好用,可SD打标又不支持中文……
其实就是基于CLIP图像反推魔改的,那个第四张图给出的描述“一个女孩躺在沙发上双手放在臀部”,蚌阜不住了(ps:官方下载那一栏里还有句写错“使用Python调用该环境进行语音转文本”,应该是图像转文本)
@HawkingEye 感谢勘误,刚有时间更新网站,前几天一直在医院忙,所提问题已修复。