本文将用最简单的方式帮助你快速上手ModelScope的OFA模型(点这里查看模型),玩转当前全球最强的图像描述(Image Captioning)模型(目前OFA位列MSCOCO Leaderboard第一名,点这里查看)。阅读本文大约需要5分钟。
Case体验
最强的图像描述模型有多强?下面两个case可以给大家看看:
模型能够精确的描述图像内容,甚至电影海报里面还被识别出了月球,是不是真的非常强?
环境准备
开始一个项目,往往最难的是环境的准备。但今天你完全不需要担心这个问题,我们提供了配置好环境的Notebook,包含CPU和GPU环境,任君选择。具体操作如下:
当然,如果你依然希望选择自己配置环境,请参考快速开始,也不算是很麻烦(可以选择只安装multi-modal哦,还是很贴心的。)
让代码跑起来
接下来你将进入一个jupyter notebook中,环境已经ready,你只需要输入ModelScope相关的代码,就可以把OFA的image captioning功能玩起来了。
首先,你需要import相关的module,具体如下:
frommodelscope.pipelinesimportpipelinefrommodelscope.utils.constantimportTasks
import成功将出现如下提示:
接下来,通过如下两行命令,你实现了ModelScope中的pipeline和Tasks的import,后续则需要通过Tasks指定具体任务传入pipeline中,便能搭建起image captioning的pipeline,如下所示:
img_captioning=pipeline(Tasks.image_captioning, model='damo/ofa_image-caption_coco_large_en')
执行这一行命令,pipeline将下载OFA的image captioning的模型,具体模型为OFA在MSCOCO数据集上Finetune的Large模型,随后将模型load到pipeline中。出现如下提示,则initialize模型完成:
完成上述步骤,便可以开始体验,具体方式即将你需要生成caption的图片传入img_captioning中,如下所示:
result=img_captioning({'image': 'data/test/images/image_captioning.png'}) # 同样支持url, 是不是非常方便# result = img_captioning({'image': 'http://xingchen-data.oss-cn-zhangjiakou.aliyuncs.com/maas/image-captioning/image_captioning.png'})
上述命令只需要将图片路径构造dict传入img_captioning,就可以得到结果,通过`print(result['caption'])`即可看到结果:
a man in a blue and white striped shirt is making a face with his mouth
result是一个dict,其中的key: sample包含了所有输入数据,这很方便得到输入输出的pair。
部署&分享
图像描述的能力真的很有意思,但是部署给其他人怎么操作呢?
目前我发现了一个小神器:gradio,可以轻松将模型分享,下面是一个简单的例子。
importgradioasgrfrommodelscope.pipelinesimportpipelinefrommodelscope.utils.constantimportTasksfrommodelscopeimportoutputsimg_captioning=pipeline(Tasks.image_captioning, model='damo/ofa_image-caption_coco_large_en') defgen_caption(image): result=img_captioning({'image': image}) returnresult[outputs.OutputKeys.CAPTION] demo=gr.Interface( fn=gen_caption, inputs=gr.Image(type='pil'), outputs="label", ) demo.launch(share=True) # 会生成一个可供临时使用的大家都可以访问的URL
例子结果如下,是不是很简单:
结语
上述用最简单的方式帮助读者快速上手OFA的image captioning模型,读者可以根据自己的需求根据上述方法实现更加复杂的功能及应用制作等。
注:以上内容由tzjz89首发,如有引用请标明出处,感谢。