文心大模型之谐音梗挑战

文心大模型可以玩啦,这么久,大家有没有什么有趣的idea呢,在此我想发起一个文心创作挑战之

谐音梗挑战!!!

1.首先我的谐音梗表情包申请出战,下面是我做的

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2. 接下来我就为大家分步讲解表情包图片创作流程

  1. 根据文字生成图片
  2. 再给生成的图片添加文字

这里讲解两种方式文字生成图片

2.1 首先是直接调用文心API的方式生成图片

参考文心大模型文档

2.1.1 第一步pip安装
#运行一次就行
!pip install --upgrade wenxin-api
2.1.2 获取独属于你的AK和SK(API Key和Secrect Key)
  1. 点击https://wenxin.baidu.com/moduleApi/key
    在这里插入图片描述

  2. 登录你的百度账号,然后点击右上角创建API key
    在这里插入图片描述

3.分别复制你的API Key和Secrect Key替换下方代码块的第4行和第5行中的your api key和your Secrect Key。

2.1.3 表情包主体图片生成

下方代码块中第6行代码为文心大模型ERNIE-ViLG文字生成图片中你需要输入的文字,第7行为你需要的图片风格可以在 水彩 油画 粉笔画 卡通 蜡笔画 儿童画 中选择。

图片会保存在 input_text加img_style这个文件夹下

运行下方代码块需要50秒左右

每张图片大小为1024*1024

import requests
import wenxin_api
from wenxin_api.tasks.text_to_image import TextToImage
wenxin_api.ak = 'your api key' # 输入您的API Key
wenxin_api.sk = 'your Secrect Key' # 输入您的Secrect Key
input_text = "绿色的香蕉"
img_style = "油画"
input_dict = {
    "text": input_text, # 输入图片描述
    "style": img_style, # 输入图片风格
}
rst = TextToImage.create(**input_dict)
print(rst)

# 生成存图的目录
import os
def init_mkdir(data_path):
    if not os.path.exists(data_path): # 判断文件夹是否存在
        os.makedirs(data_path) # 不存在则新建文件夹

init_mkdir(input_text+img_style)
method2 = 'get'
for i in range(len(rst["imgUrls"])):
    res2 = requests.request(url=rst["imgUrls"][i], method=method2)
    print(res2.cookies)
    content=res2.content
    with open(input_text+img_style+"/"+input_text+str(i)+'.jpg','wb') as f:
        f.write(content)

2.2 下方为使用paddlehub生成图片

这里参考了PaddleHub:使用文心大模型-ERNIE VILG 进行高质量图文生成

2.2.1. 模型参数说明
  •   def __init__(ak: Optional[str]=None, sk: Optional[str]=None)
    
    • 初始化模块,可自定义用于申请访问文心API的ak和sk。

    • 参数

      • ak:(Optional[str]): 用于申请文心api使用token的ak,可不填。
      • sk:(Optional[str]): 用于申请文心api使用token的sk,可不填。
  •   def generate_image(
                text_prompts:str,
                style: Optional[str] = "油画",
                topk: Optional[int] = 10,
                output_dir: Optional[str] = 'ernievilg_output')
    
    • 文图生成API,生成文本描述内容的图像。

    • 参数

      • text_prompts(str): 输入的语句,描述想要生成的图像的内容。
      • style(Optional[str]): 生成图像的风格,当前支持’油画’,‘水彩’,‘粉笔画’,‘卡通’,‘儿童画’,‘蜡笔画’。
      • topk(Optional[int]): 保存前多少张图,最多保存10张。
      • output_dir(Optional[str]): 保存输出图像的目录,默认为"ernievilg_output"。
    • 返回

      • images(List(PIL.Image)): 返回生成的所有图像列表,PIL的Image格式。
2.2.2 模型推理

推理时间:

该模块将会访问文心大模型API进行推理,返回时间大概30s左右,会有相应的进度条提示。

使用方式

调用上述generate_image接口,输入您想要的内容和风格,即可生成相应内容的图像。

!pip install --upgrade paddlehub

#下面我们安装并导入ernie_vilg模块
import paddlehub as hub
ernie_vilg_module = hub.Module(name='ernie_vilg')
results = ernie_vilg_module.generate_image(text_prompts="鲨鱼 蜜蜂", style="油画", output_dir='./ernievilg_output')
HBox(children=(IntProgress(value=0), HTML(value='')))


Saving Images...
Done

2.3 表情包的文字添加

核心代码为下方代码块的第5行代码和第11行代码,这两行代码的函数的具体应用我已经拿来了,方便大家自行调整


truetype 为字体设置

用法: PIL.ImageFont.truetype(font=None, size=10, index=0, encoding=”)
参数:

  1. font-TrueType字体文件。在Windows下,如果在该文件名中找不到该文件,则加载程序还会在Windows fonts /目录中查找。
  2. size-请求的大小(以磅为单位)。
  3. index-要加载的字体(默认为第一个可用的字体)。
  4. encoding-使用哪种字体编码(默认为Unicode)。

返回:字体对象。
异常:IOError-如果无法读取文件。


ImageDraw.Draw.text()在给定位置绘制字符串。
用法:

ImageDraw.Draw.text(xy, text, fill=None, font=None, anchor=None, spacing=0, align=”left”)

参数:

  1. xy-文字的左上角。
  2. text-要绘制的文本。如果包含任何换行符,则文本将传递到multiline_text()
  3. fill-用于文本的颜色。
  4. font-一个ImageFont实例。
  5. spacing-如果文本传递到multiline_text(),则行之间的像素数。
  6. align-如果文本已传递到multiline_text(),“left”,“center”或“right”。

返回类型:
返回带有文本的图像。

from PIL import ImageFont
from PIL import Image
from PIL import ImageDraw

font = ImageFont.truetype("simhei.ttf",250)#设置字体和字体大小
imageFile = "绿色的香蕉油画/绿色的香蕉9.jpg"#设置需要添加文字的图片路径
tp=Image.open(imageFile)
print(tp.size)
# 在图片上添加文字 1
draw = ImageDraw.Draw(tp)
draw.text((0, 512+150),"我蕉绿了",(255,255,255),font=font) #分别设置文字的xy坐标,文字内容,文字颜色,字体
draw = ImageDraw.Draw(tp)

# 保存
tp.save("jiaolv.png") #图片保存路径


(1024, 1024)

2.4 把上面代码块中第15行图片保存路径位置的表情包图片下载就行

I pick you!!!

大家一起来玩吧,一个独属于你的谐音梗表情包,你值得拥有


此文章为搬运
原项目链接

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐