随着人工智能技术飞速发展,大规模预训练模型(以下简称大模型)的出现使零样本建模成为可能。现在,百度飞桨文心大模型为开发者提供多样化的在线API调用、Prompt-tuning、本地API参数调优等服务,助力各位创意大师“花式”完成代码实践、前端页面搭建等任务。现在,已经有飞桨社区开发者基于飞桨框架和文心大模型在零样本或小样本场景下,完成了兼具技术创新与新颖创意的优质项目。为此,飞桨开发者说专栏特别推出文心大模型专题,邀请飞桨社区开发者show出“脑洞”与开发心得,与大家一同探索用文心大模型完成趣味无穷、高实用价值项目的无限可能。
作者简介
剪纸是我国古老的民间艺术。对于民间艺人而言,一张纸、一把剪刀、一套代代流传的精美图样,就能变幻出无穷的剪纸花样。从祝福新人的大红“囍”字,再到迎春贺岁时的锦绣窗花,人们把对生活的美好期盼、把对家乡的无尽思念绘入这精美的艺术中。而现在,文心大模型将这份传统的浪漫与前沿人工智能技术整合,AI画笔让绘制剪纸图样不再是繁琐的工序,而是充满趣味与创新的艺术探索。
我使用飞桨框架,结合对文心文生图大模型ERNIE-ViLG的调用,使其能够实现AI一键生成城市特色剪纸图。
先为大家展示一些由文心ERNIE-ViLG模型生成的剪纸画样例,是不是很好玩?
杭州 阴
南京 雨
接下来跟我一起动手,用AI给家乡城市绘制满含心意的剪纸画吧!为了让生成的剪纸更加生动有趣,我们可以尝试将该城市实时的天气情况等作图所需的内容信息整合到提示词中。因此,该项目可以通过两步来实现更好的效果:
# 定义获取城市id的函数,传入的名称为None时随机获取一个城市,返回城市id和城市名称
def get_city_id(city_name = None):
# 读取城市列表
city_json = "city.json" # json文件,
city_id = None
with open(city_json) as f:
citys = json.load(f)
if city_name == None:
idx = random.randint( 0,len(citys) -1) # 随机选取一个城市
city_id = citys[idx][ "id"] # 获取城市id
city_name = citys[idx][ "cityZh"]
else:
for c in citys:
if city_name == c[ "cityZh"]:
city_id = c[ "id"]
break
if city_id == None:
print( f"Can't find city_id for {city_name}!")
return (city_id,city_name)
# 获取城市id
city_id,city_name = get_city_id(city_name= "北京")
print( f"{city_id},{city_name}")
获取到城市代码之后,我们就可以调用天气API来获取天气状况。具体可以参考你所使用的API说明文档进行调整。
代码片段:获取实时天气状况
# 读取天气数据
tianqi_appid = <天气API接口的appid>
tianqi_appsecret = <天气API接口的appsecret>
#tianqi_url = f"https://v0.yiketianqi.com/api?unescape=1&version=v61&appid={tianqi_appid}&appsecret={tianqi_appsecret}"
tianqi_url = f "https://www.yiketianqi.com/free/day?appid={tianqi_appid}&appsecret={tianqi_appsecret}&unescape=1&cityid={city_id}"
tianqi_resp = requests.get(tianqi_url)
tianqi_resp = tianqi_resp.json()
print(tianqi_resp)
# 提取天气字段
txt_tianqi = tianqi_resp[ "wea"]
txt_city = tianqi_resp[ "city"]
print(f"{txt_city}:{txt_tianqi}")
调用文心ERNIE-ViLG开放API生成剪纸画
安装文心ERNIE-ViLG API
# 安装文心api
pip install --upgrade wenxin-api
配置文心ERNIE-ViLG API
有了AK和SK,就可以配置提示词,调用文心大模型来画图,点击下方链接,自行在右上角个人中心申请即可。
代码片段:调用文心开放API画图
# 调用模型
# -*- coding: utf-8 -*
import wenxin_api # 可以通过"pip install wenxin-api"命令安装
from wenxin_api.tasks.text_to_image import TextToImage
wenxin_api.ak = "<申请到的ak>"
wenxin_api.sk = "<申请到的sk>"
input_txt = f "红白,剪纸,城市:{txt_city},{txt_tianqi}"
input_dict = {
"text": input_txt,
"style": "写实风格"
}
rst = TextToImage.create(**input_dict) # 转换成关键字参数传递给接口
调用模型生成图片并显示
调用文心ERNIE-ViLG模型后,返回的结果是一个dict类型,里面即为图片的URL,我们需要定义一个函数使图片得以显示出来。
# 图片显示函数
def show_img(img_path):
response = requests.get(img_path) #图片地址
response = response.content
BytesIOObj = BytesIO()
BytesIOObj.write(response)
img = Image.open(BytesIOObj)
plt.figure(dpi = 144)
plt.axis( 'off')
plt.imshow(img)
# 显示图片
imgUrls = rst[ "imgUrls"] # 提取图片地址,list格式
for imurl in imgUrls:
#print(imurl)
show_img(imurl)
接下来就是见证奇迹的时刻!输入你的家乡或者计划前去旅行的城市名称,看看AI会怎样绘制这座城市的定制剪纸画吧。
左右滑动查看更多剪纸画
本项目通过调用文心ERNIE-ViLG API接口实现了给城市定制天气剪纸画的功能。文生图大模型比比皆是,但想要展示我国优良传统文化,生成作为非物质文化遗产的中国剪纸,文心ERNIE-ViLG无疑做到了表率。只需简单几行代码,即可为你的家乡绘制根据天气实时定制的精美剪纸。
文心大模型是百度自主研发的产业级知识增强大模型,从大规模知识和海量数据中融合学习,效率更高、效果更好,具备领先的理解和生成能力。基于飞桨深度学习平台,文心已发布20多个大模型,并打造了丰富的工具与平台,支撑企业与开发者进行高效便捷的应用开发。
近期文心ERNIE-ViLG文图生成算法迎来升级,通过渐进式扩散模型,生成空间由小及大、生成轮廓由粗到细,同时根据生成阶段自动选择最优生成网络,文本生成图像的效果取得进一步提升。欢迎大家访问文心大模型官网,在开放API中心体验文心ERNIE-ViLG文生图服务。
往期精彩
关注【飞桨PaddlePaddle】公众号
获取更多技术内容~