【2022 CCF BDCI 文心大模型创意项目】AI百科介绍

★★★ 本文源自AI Studio社区精品项目,【点击此处】查看更多精品内容 >>>


项目介绍

文心大模型的预训练模型已经学习了大量的数据知识,基本囊括了常识及各种行业专业知识,因而文心大模型很适合作为一种百科全书式的工具,这也是这个项目想法的出发点。

我们期望最终能够完成的效果是:

  • 用户输入一个希望查询的意象/关键词/短句等等

  • 利用文心的文生图模型得到该内容的图片描述

  • 利用文心的文本生成得到对应的科普介绍。(科普介绍通过更改prompt也可改成文学介绍、文学作文等多种形式)

  • 将图片和文本组合

## 具体实现

### 安装必要的依赖

目前不能通过paddlehub调用文心模型,修改为api调用

调用api不需要GPU环境,当时需要安装文心api包


```python
# !pip install paddlehub --upgrade
# !pip install docarray
!pip install wenxin_api 
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting wenxin_api
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/0e/32/fb1e931cc0436205fb53193a4c1f9fd8aae75ba71dbd999fd55b9899428b/wenxin_api-0.1.0-py3-none-any.whl (24 kB)
Requirement already satisfied: requests>=2.20 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from wenxin_api) (2.24.0)
Requirement already satisfied: tqdm in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from wenxin_api) (4.64.1)
Requirement already satisfied: chardet<4,>=3.0.2 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests>=2.20->wenxin_api) (3.0.4)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests>=2.20->wenxin_api) (1.25.6)
Requirement already satisfied: idna<3,>=2.5 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests>=2.20->wenxin_api) (2.8)
Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from requests>=2.20->wenxin_api) (2019.9.11)
Installing collected packages: wenxin_api
Successfully installed wenxin_api-0.1.0

[1m[[0m[34;49mnotice[0m[1;39;49m][0m[39;49m A new release of pip available: [0m[31;49m22.1.2[0m[39;49m -> [0m[32;49m22.3.1[0m
[1m[[0m[34;49mnotice[0m[1;39;49m][0m[39;49m To update, run: [0m[32;49mpip install --upgrade pip[0m

安装文心模型

  • ERNIE 3.0 Zeus 是 ERNIE 3.0 系列模型的最新升级。其除了对无标注数据和知识图谱的学习之外,还通过持续学习对百余种不同形式的任务数据学习。实现了任务知识增强,显著提升了模型的零样本/小样本学习能力。

  • 文心ERNIE-ViLG参数规模达到100亿,是目前为止全球最大规模中文跨模态生成模型,在文本生成图像、图像描述等跨模态生成任务上效果全球领先,在图文生成领域MS-COCO、COCO-CN、AIC-ICC等数据集上取得最好效果。你可以输入一段文本描述以及生成风格,模型就会根据输入的内容自动创作出符合要求的图像。

# 文心模型
!hub install ernie_zeus
!hub install ernie_vilg

以‘长城’为例

  • 文本生成:主要使用文心的作文创作部分,输入作为题目,模型就可以给出一篇作文。其中在题目中,我们指定【科普】这一关键词,生成的作文即和科普内容有关,更适合用来作为百科介绍。

  • 文生图: 主要的参数有下面几个

文心api方法实现

前往文心官网申请api

import wenxin_api
from wenxin_api.tasks.text_to_image import TextToImage
from wenxin_api.tasks.composition import Composition
from PIL import Image, ImageDraw, ImageFont
import os

target = '长城'

# 替换自己申请的ak和sk
wenxin_api.ak = "<ak>" 
wenxin_api.sk = "<sk>"

input_dict = {
    "text": f'{target}科普介绍',
    "seq_len": 512,
    "topp": 0.9,
    "penalty_score": 1.2,
    "min_dec_len": 128,
    "is_unidirectional": 0,
    "task_prompt": "zuowen"
}
txt = Composition.create(**input_dict)
print(txt['result'])

input_txt = f'{target}'
input_dict = {
    "text": input_txt,
    "style": "油画",
    "topk": 1, # 只取生成的第一张图片 
    "output_dir": f'./' 
}
rst = TextToImage.create(**input_dict)    # 转换成关键字参数传递给接口

# 将关键词写到图像上
img = Image.open(f'{target}_0.png')
draw = ImageDraw.Draw(img)
ttfont = ImageFont.truetype('simhei.ttf', 60)
draw.text((700, 20), f'{target}', fill=(255, 255, 255), font=ttfont)
img.save(f'{target}_0.png')

Image.open(f'{target}_0.png').show()
2022-11-17 13:44:15,985 - model 1: starts writing
长城是世界文化遗产,全国重点保护文物,国家级风景名胜区。自1990年以来,长城被列为世界濒危遗产之一。从八达岭到山海关,早就有句俗话说“不到长城非好汉”;如今人们更能领略到它作为我国古代劳动人民智慧和血汗结晶体现出来的伟大和古朴!并吸引了千百万游客慕名前往观赏。
远在公元前8世纪,我国就开始修筑长城了。据记载,秦始皇使用了近百万劳动力修筑长城,占全国人口的十分之一。春秋战国时期,诸侯各国为了防御别国入侵,也修筑了长城。以后历代君王几乎都加固增修长城。长城东西南北交错,构成了复杂的防御体系。
最著名的四个烽火台:东起山海关、西至嘉峪关东侧,北起狼山、南至海岸,明长城约2000多华里,长度超过了2500公里!当年是举世瞩目的工程,令人惊叹古代劳动人民的智慧与血汗。气势恢弘的《万里长城》诗:雄关有险咽喉通,万马来临莫敢空!无限风光天外有,谁云中土不长雄?
现代长城起于河北省宣化县,止于内蒙古杭锦旗,绵延六千余里。穿过无数崇山峻岭。峰峦叠嶂。跨越不少湍急江河。奔腾万里。由于时代久远
2022-11-17 13:44:38,682 - model is painting now!, taskId: 8309724, waiting: 4m
2022-11-17 13:44:58,989 - model is painting now!, taskId: 8309724, waiting: 30s

在这里插入图片描述

Paddlehub方法实现

import paddlehub as hub
import matplotlib.pyplot as plt
from PIL import Image, ImageDraw, ImageFont
import os


target = '长城'

model = hub.Module(name='ernie_zeus')
ernie_vilg_module = hub.Module(name='ernie_vilg')

txt = model.composition_generation(text=f'{target}的科普介绍')
ernie_vilg_module.generate_image(text_prompts=f"{target}", style="油画", topk=1, output_dir=f'./')

img = Image.open(f'{target}_0.png')
draw = ImageDraw.Draw(img)
ttfont = ImageFont.truetype('simhei.ttf', 60)
draw.text((700, 20), f'{target}', fill=(255, 255, 255), font=ttfont)
img.save(f'{target}_0.png')

Image.open(f'{target}_0.png').show()
print(txt)
HBox(children=(IntProgress(value=0), HTML(value='')))


Saving Images...
Done

在这里插入图片描述

大家好!我叫长城,说到长城人们不由得会想起这样几句话:万里长城万里长。不到长城非好汉,爱我中华,修我长城……在我眼中的长城,就像一条龙那么雄壮;又如威严的狮子,也可以像温顺的小羊羔;它即能运输物品又能防御外敌的侵入和偷袭等,它还可以美化环境,给庄稼林带来养分,为人类提供凉爽的休息场所呢!听了我的介绍你认识我了吗?跟随着名字快速看一下吧!有些地方因山路险峻陡峭而显得比较荒芜,为什么要修建这座长城呀?对啦!当时秦始皇派孟姜女去修长城,她来回一趟都花了一年多的时间,怎能让两国交战再耗费百姓辛勤劳动得来的心血与汗水啊!况且,已经好几千年过去了的遥远的明朝,没准过来灾难也十分活跃,如果真是“养兵千日,用兵一时”就派他二丈三尺高,这样孟姜女就转回工作量,慢走就会好的话,百姓就会忍受太多痛苦,就只要喊几声杀人魔王的绰号人们想必都退缩不敢见面接触但就很少表现出害怕我相信每天孟姜女都希望早点早点儿结束工程吧!她想找一处安定避开风寒和酷暑啊!人们谈及孟姜女,都流露出同情和怜悯。其实在30多年前就有革命者冒死挑担担茶缸闯娘娘庙
import paddlehub as hub
import matplotlib.pyplot as plt
from PIL import Image, ImageDraw, ImageFont
import os

target = '金丝猴'

model = hub.Module(name='ernie_zeus')
ernie_vilg_module = hub.Module(name='ernie_vilg')

txt = model.composition_generation(text=f'{target}的科普介绍')
ernie_vilg_module.generate_image(text_prompts=f"{target}", style="油画", topk=1, output_dir=f'./')

img = Image.open(f'{target}_0.png')
draw = ImageDraw.Draw(img)
ttfont = ImageFont.truetype('simhei.ttf', 60)
draw.text((700, 20), f'{target}', fill=(255, 255, 255), font=ttfont)
img.save(f'{target}_0.png')

Image.open(f'{target}_0.png').show()
print(txt)
HBox(children=(IntProgress(value=0), HTML(value='')))


Saving Images...
Done

在这里插入图片描述

有一种美,让你心旷神怡,它如同大自然赠予我们那么纯洁和高尚。每当清晨来临时,随着阳光慢慢升起,生活在这群山峻岭中的精灵—金丝猴身上的毛皮散发出淡雅的馨香,花一样温柔迷人的小脸可爱极了!看见这美丽、娇憨的国家级保护动物后,全世界从此就多了“金丝猴”三个字而无人不晓!
金丝猴的尾巴像绳子一样,可以帮助它很快地爬到树顶;鼻子扁平的金丝猴仿佛可以闻到鲜花散发出的芬芳气味;尖尖的耳朵比小壁虎的尾巴还长呢!但是,有这样一只既聪明又调皮的小猴子:它穿梭于丛林之间,相互嬉戏。瞧!一场紧张刺激的“捉虱大战”正在悄悄地展开……快乐极了!最值得观赏的便要算珍贵的白毛丝猴,它天真的性格非常讨人喜欢,唯独爱做恶作剧。据说,曾有数名游客遭遇过袭击,其中年纪最轻的也已50岁左右,但没受伤害的只他一个。在和妈妈玩耍时被反捆双手:吓唬刚从营寨回村时当眼线惹祸:抢走司机行李卷登车:顺窗户跳进商店里翻箱倒柜扒窃财物等。

模型推理

  • 推理时间大概30秒左右,会有对应的进度条显示

  • 调用上述的generate_image接口,输入想要的内容和风格,就能生成对应的图像

import paddlehub as hub
import matplotlib.pyplot as plt
from PIL import Image, ImageDraw, ImageFont
import os

target = '高铁'

model = hub.Module(name='ernie_zeus')
ernie_vilg_module = hub.Module(name='ernie_vilg')

txt = model.composition_generation(text=f'{target}的科普介绍')
ernie_vilg_module.generate_image(text_prompts=f"{target}", style="油画", topk=1, output_dir=f'./')

img = Image.open(f'{target}_0.png')
draw = ImageDraw.Draw(img)
ttfont = ImageFont.truetype('simhei.ttf', 60)
draw.text((700, 20), f'{target}', fill=(255, 255, 255), font=ttfont)
img.save(f'{target}_0.png')

Image.open(f'{target}_0.png').show()
print(txt)
HBox(children=(IntProgress(value=0), HTML(value='')))


Saving Images...
Done

在这里插入图片描述

中国铁路实行新的列车运行图。12月21日,国家发改委批准同意新增武汉至广州高速、西安至北京等区际列车,调整相关线路旅客列车运行经停站及对数,变更部分旅客列车运行径路;增开汉口至上海、西安北至乌鲁木齐南等方向直通动车组列车;新增呼和浩特东至广州南 G40次、襄阳至深圳北 D901/2、昆明至六盘水等旅客列车。在春节小长假之前能再次出去走一走真是太好啦!因此我写下这篇文章来纪念今年不同寻常的春节.
始于北京,终到上海沿途有华中四省一市,在第二十五届米兰国际列车运行图调整时将正式纳入全国高铁网络,成为中国高速铁路“八纵八横”主骨架——“八纵”通道沿海通道的重要组成部分,中国迈向高速铁路的里程碑,从而引领世界高速铁路的建设与发展。2012年底铁路总公司制定实施了《中长期铁路网规划》,其中包括多条跨区域,连接多个大城市的快速客运系统建设,力争在2050年使基本覆盖全国的快速客运网络,并将原目标提早三十年(2017年)实现。其中沪宁高铁客运专线专项规划正拟请国家审查通过,2018年以建成。可见这又进一步证明了高铁必须在该技术路面实施开展,才能取得科学性认识。
### Prompt

prompt非常重要

prompt 可以是 形容词+主语+细节设定+更多的修饰词

大家可以按照上述的模板进行修改,生成更符合自己想法的内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值