OFA一把梭(1)——玩转图像描述

简介: 本文将用最简单的方式帮助你快速上手ModelScope的OFA模型,并快速上手使用图像描述能力。

本文将用最简单的方式帮助你快速上手ModelScope的OFA模型(点这里查看模型),玩转当前全球最强的图像描述(Image Captioning)模型(目前OFA位列MSCOCO Leaderboard第一名,点这里查看)。阅读本文大约需要5分钟。

Case体验

最强的图像描述模型有多强?下面两个case可以给大家看看:

模型能够精确的描述图像内容,甚至电影海报里面还被识别出了月球,是不是真的非常强?

环境准备

开始一个项目,往往最难的是环境的准备。但今天你完全不需要担心这个问题,我们提供了配置好环境的Notebook,包含CPU和GPU环境,任君选择。具体操作如下:

notebook.jpg

当然,如果你依然希望选择自己配置环境,请参考快速开始,也不算是很麻烦(可以选择只安装multi-modal哦,还是很贴心的。)

让代码跑起来

接下来你将进入一个jupyter notebook中,环境已经ready,你只需要输入ModelScope相关的代码,就可以把OFA的image captioning功能玩起来了。

首先,你需要import相关的module,具体如下:

frommodelscope.pipelinesimportpipelinefrommodelscope.utils.constantimportTasks

import成功将出现如下提示:

import_success.jpg

接下来,通过如下两行命令,你实现了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模型完成:

load_success.jpg

完成上述步骤,便可以开始体验,具体方式即将你需要生成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

例子结果如下,是不是很简单:

image.png

结语

上述用最简单的方式帮助读者快速上手OFA的image captioning模型,读者可以根据自己的需求根据上述方法实现更加复杂的功能及应用制作等。


注:以上内容由tzjz89首发,如有引用请标明出处,感谢。

相关文章
|
4月前
|
存储 Python
【数据结构】期中考试一把梭(通宵版上)
【数据结构】期中考试一把梭(通宵版上)
81 1
|
8月前
|
人工智能 Serverless 云计算
快来解锁你家萌宠专属 AI 形象!
快来解锁你家萌宠专属 AI 形象!
|
程序员
程序猿的中秋夜,利用这些“代码”,解锁团聚新姿态
水也水了这么多字,其实我想说的是,疫情,让我们原有的生活方式发生了翻天覆地的改变,友情、爱情、亲情,都受到了不同程度的改变,节日的庆祝方式或许不同,但月还是那片月,没有什么是熬不过去的。也正是如此,我踏入了计算机的门槛,或许大家有人的想法,和我不约而同,想用自己的双手,去创造些东西,行前人所不能,利后人之利。程序猿们,这个中秋,不会还在学习,还在修bug吧?记得某一年,国庆还是和中秋在一块,今年又来个双节,猿粪呐,不知道是不是又有小盆友要不满了,明明能放两次假,最后1+1=1,妙极了。什么,女朋友不认账?.
程序猿的中秋夜,利用这些“代码”,解锁团聚新姿态
|
存储 XML 编解码
图形学 | 蓄势待发!说一说图片相关的那些概念
图形学 | 蓄势待发!说一说图片相关的那些概念
125 0
图形学 | 蓄势待发!说一说图片相关的那些概念
|
存储 缓存 Java
反制面试官-14张原理图-再也不怕被问 volatile!
反制面试官-14张原理图-再也不怕被问 volatile!
118 0
反制面试官-14张原理图-再也不怕被问 volatile!
|
网络协议 算法 机器人
Halcon标定系列(3):我个人总结的“眼在手外“和“眼在手上”的心得笔记
Halcon标定系列(3):我个人总结的“眼在手外“和“眼在手上”的心得笔记
2550 0
Halcon标定系列(3):我个人总结的“眼在手外“和“眼在手上”的心得笔记
|
图形学
Unity 捏脸整理及基于骨骼的捏脸功能实现
目前实现捏脸功能的方式主要有两种。一个是Blendshape(融合变形),一个是基于骨骼驱动的方式,通过修改骨骼矩阵(bindpose)来影响SkinMesh。这两种方式的最终原理都是在shader 生效之前修改顶点。
4101 0
|
算法 物联网 大数据
15个未来高科技产品会让你无法想象!这些开脑洞的设计太牛了!
从衣食住行到生活的方方面面,未来必将会有天翻地覆的变化。大数据、云计算、物联网和人工智能这些年的发展,让我们对并不遥远的未来有了更多想象和期待。那些我们现阶段不可企及的所思所想,将在未来成为大部分人的日常。
5182 0