调用百度文心AI作画API实现中文-图像跨模态生成

作者介绍

乔冠华,女,西安工程大学电子信息学院,2020级硕士研究生,张宏伟人工智能课题组。
研究方向:机器视觉与人工智能。
电子邮件:1078914066@qq.com

一.文心AI作画API介绍

1. 文心AI作画

文心ERNIE-ViLG,一款适合中文的跨模态AI绘画大模型。
论文地址:https://arxiv.org/pdf/2112.15283.pdf
体验连接:https://wenxin.baidu.com/ernie-vilg

文心ERNIE-ViLG是一个大规模的中文跨模态生成模型,其参数规模达到100亿。该模型首次通过自回归算法将图像生成和文本生成统一建模,增强模型的跨模态语义对齐能力,显著提升图文生成效果。

ERNIE-ViLG生成的不同风格的图像如下:

ERNIE-ViLG生成的不同风格的图像

利用AI技术生成图片的最终目的是要便捷地为人类创造美的作品,激发人的想象力和创作力。在艺术创作、虚拟现实、图像编辑、AI 辅助设计、虚拟数字人等领域,文心 ERNIE-ViLG 这类跨模态大模型有着广泛的应用前景,也为这些领域未来的发展提供了无限的创意和可能。作为百度“文心”大模型全景图中的重要一员,文心 ERNIE-ViLG 也代表着百度文心在跨模态大模型领域迈出坚实步伐,从技术自主创新和加速产业应用方面持续推动中国 AI 发展。

2.接口介绍

文心AI作画API基于文心ERNIE-ViLG大模型,可根据用户输入的中文文本,自动创作图片。

文心AI作画涉及2个接口,分别为:提交请求、查询结果。

  • 提交请求:传入文本、分辨率、风格参数,创建ERNIE-ViLG AI作画任务,获得任务ID。
  • 查询结果:用于在任务创建后,查看图片生成状态。待图片生成完毕,通过查询接口即可查看生成图片的地址链接。

该接口通过自定义丰富的修饰词,生成不同风格、不同构图、不同流派的图片(每次可自定义生成1张至6张图片)。

二.注册账号并获取API Key

进入:百度智能云并创建应用获取API Key,Secret Key

1. 注册百度智能云账号

免费注册登录百度智能云账号进入下图界面,选择右上角 “控制台”模块:

在这里插入图片描述

选择“产品服务”中“人工之智能”模块的“智能创作平台”项目:

在这里插入图片描述

点击领取免费的接口资源(根据要求实名认证后可获取):

在这里插入图片描述

在这里插入图片描述

2. 获取API

在“应用列表”中点击“创建应用”,免费创建个人文本-图像生成应用模块:

在这里插入图片描述

创建成功的应用模块如下,从中可以获取个人应用模块的API Key和Secret Key:

在这里插入图片描述

三.代码实现

完整代码

  • 提交请求代码
    创建“提交请求”接口文件,并根据申请的个人API Key和Secret Key,以及自定义输入的文本和参数信息,修改并运行以下代码。(该代码可得到图片生成任务ID——“taskId”)
import requests
import jsonAPI_KEY = "自己申请的API Key"
SECRET_KEY = "自己申请的Secret Key"def main():url = "https://aip.baidubce.com/rpc/2.0/ernievilg/v1/txt2img?access_token=" + get_access_token()payload = json.dumps({"text": "中国山水画",#输入中文描述"resolution": "1024*1024",#选择图片分辨率,可支持1024*1024、1024*1536、1536*1024"style": "古风",#选择图像风格,古风、二次元、写实风格、浮世绘、未来主义、赛博朋克等等"num": 2#输入要生成的图片数量,可选1~6张})headers = {'Content-Type': 'application/json','Accept': 'application/json'}response = requests.request("POST", url, headers=headers, data=payload)print(response.text)#获取Access Token
def get_access_token():"""使用 AK,SK 生成鉴权签名(Access Token):return: access_token,或是None(如果错误)"""url = "https://aip.baidubce.com/oauth/2.0/token"params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}return str(requests.post(url, params=params).json().get("access_token"))if __name__ == '__main__':main()
  • 查询结果代码
    创建“查询结果”接口文件,根据申请的个人API Key和Secret Key,以及“提交请求”代码得到的图片生成任务ID——“taskId”(有效期一个月),修改并运行以下代码。(该代码可得到最终生成的图片)
import requests
import json
from io import BytesIO#BytesIO实现了在内存中读写bytes
from PIL import Image
import os
API_KEY = "自己申请的API Key"
SECRET_KEY = "自己申请的Secret Key"def main():#API接口的url url = "https://aip.baidubce.com/rpc/2.0/ernievilg/v1/getImg?access_token=" + get_access_token()#发送请求获取网页内容 payload = json.dumps({"taskId": "提交请求代码返回的 'taskId' 的值"})headers = {'Content-Type': 'application/json','Accept': 'application/json'}    response = requests.request("POST", url, headers=headers, data=payload)print('请求的返回值:',response.text)json_result = json.loads(response.text)imgUrls=json_result['data']['imgUrls']#返回imgUrls的结果print("imgUrls的返回值:", imgUrls)#imgUrls":[{"image":"https://wenxin.baidu.com/younger/file/ERNIE-ViLG/4a90992981919xxxxxx"},{"image":"https://wenxin.baidu.com/younger/file/ERNIE-ViLG/4a90992981919a74f0b4xxxxx"}]print("imgUrls类型:",type(imgUrls))#查看imgUrls类型,是列表print("imgUrls数量:",len(imgUrls))#获得图片网址并将图片保存到本地for i in range(0,len(imgUrls)):img_url=imgUrls[i]print('imges_url:',img_url)img_url=img_url['image']print('image_url:',img_url)#保存图片到本地req=requests.get(img_url)#获取图片网址image = Image.open(BytesIO(req.content))#在内存中打开图片image.save(os.path.join('图片保存路径','{}.jpg'.format(i)), 'JPEG')#获取Access Token
def get_access_token():"""使用 AK,SK 生成鉴权签名(Access Token):return: access_token,或是None(如果错误)"""url = "https://aip.baidubce.com/oauth/2.0/token"params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}return str(requests.post(url, params=params).json().get("access_token"))if __name__ == '__main__':main()

四.效果展示

  • 运行“提交请求”代码后,可以得到获得任务ID——“taskId”:

在这里插入图片描述

  • 根据获得的任务ID运行“查询结果”代码后即可得到最终生成的.jpg图片:

在这里插入图片描述
参考链接:
https://zhuanlan.zhihu.com/p/600247099
https://zhuanlan.zhihu.com/p/455523289

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿基米德签证小程序管理系统功能清单

阿基米德签证小程序管理系统,底层架构采用当前国内最流行的php框架thinkphp8.0、采用广泛使用的MYSQL数据库,管理后台前后台分离,同时使用了当今最流行的基于VUE3和elementPlus前端框架,小程序采用了支持多端合一的UNI-APP开发&am…

Kernel 地图

前言 在 Linux Kernel 中,根据 Makefile 和 Kconfig,可以快速地了解一个小的内核子系统。所以我将这两个文件称之为 Kernel 地图。 Kernel 地图 基本上,Linux 内核中,每一个目录下面都有一个 Makefile 和一个 Kconfig 文件。这…

Day11-Linux系统iNode及链接知识及企业按哪里精讲

Day11-Linux系统iNode及链接知识及企业按哪里精讲 1. 文件核心 属性知识1.1 什么是索引节点(inode)。1.2 索引节点作用1.3 inode是怎么产生的?1.4 inode的特点?1.5 Linux系统读取文件的原理1.6 企业生产案例:No space …

行人重识别综述

Deep Learning for Person Re-identification: A Survey and Outlook 论文地址https://arxiv.org/pdf/2001.04193 1. 摘要 we categorize it into the closed-world and open-world settings. closed-world:学术环境下 open-world :实际应用场景下 2…

儿时游戏“红色警戒”之“AI警戒”

一、红色警戒里“警戒”命令背后的算法原理是什么 在《红色警戒》系列即时战略游戏中,“警戒”命令背后的算法原理相对简单但又实用,其核心目标是让单位能够自动检测并反击一定范围内的敌方单位。虽然具体的实现细节未公开,但可以推测其基本…

Slack 给平台加入了 AI 驱动的搜索和总结功能

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

有什么办法解决SQL注入问题

随着互联网的普及和数字化进程的加速,Web攻击已经成为网络安全领域的一大威胁。Web攻击不仅可能导致个人隐私泄露、财产损失,还可能对企业和国家的安全造成严重影响。下面德迅云安全就分享一种常见的web攻击方式-SQL注入,了解下什么是SQL注入…

123.买卖股票的最佳时机II

123.买卖股票的最佳时机II 原题链接:完成情况:参考代码:_122买卖股票的最佳时机II_可以多次买入卖出01_122买卖股票的最佳时机II_可以多次买入卖出02_122买卖股票的最佳时机II_常规dp_122买卖股票的最佳时机II_一维dp_122买卖股票的最佳时机…

leetcode(动态规划)53.最大子数组和(C++详细解释)DAY12

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 提示 2.解答思…

【阅读笔记】红外探测器盲元国标标准及盲元识别

1、盲元定义 盲元的定义:盲元是红外焦平面探测器中响应过高或过低的探测单元,即无法准确成像的像元。盲元主要分为噪声盲元和响应率差异盲元两大类。 线阵红外探测器应用中,经常存在相邻的像元之间响应率有明显差异,其灰度响应输…

Allegro172版本如何用自带功能改变过孔网络属性操作指导

Allegro172版本如何用自带功能改变过孔网络属性操作指导 在用Allegro做PCB设计的时候,时常会需要将过孔的网络进行变更,可以将原来的过孔删除,再重新打一个,这种方法难免会繁琐一些。 当然我们可以借助skill工具来完成更换过孔网络的更改,除此之外,Allegro自带的功能完成…

[计算机网络]---Https协议

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、https协…

消息中间件之RocketMQ源码分析(十)

Namesrv启动流程 第一步:脚本和启动参数配置。 启动命令 nohup ./bin/mqnamesrv -c ./conf/namesrv.conf > dev/null 2>&1 & 通过脚本配置启动基本参数,比如配置文件路径、JVM参数,调用NamesrvStartup.main()方法,解析命令行的…

【PyQt6] 框选截图功能

1 简介 书接上回, 全屏截图实现起来很简单, 来点稍微复杂点的, 框选截图 原理很简单, 弄个控件实现全屏半透视, 在全屏控件上画一个选框或者再弄一个几乎全透的子控件,实现鼠标拖动,缩放,移动, 键盘wasd 微调 用一个控件实现起来会很完美, 但是逻辑全部堆砌在一起,看代码会很…

Mac电脑玩《幻兽帕鲁》卡怎么办?2024年最新解决方法

幻兽帕鲁目前已经在steam卖出了100多万份数,可谓是爆火现象级的游戏。如今在游戏中,我们可以实现工农业自动化,为了实现自动化,将手工作业交给帕鲁就尤为重要。建造工厂,并安排帕鲁在其中工作吧。只要有足够的食物&…

K8s服务发现组件之CoreDNS/NodeLocalDNS /kubeDNS

1 coredns 1.1 概述 1.1.1 什么是CoreDNS CoreDNS 是一个灵活可扩展的 DNS 服务器,可以作为 Kubernetes 集群 DNS,在Kubernetes1.12版本之后成为了默认的DNS服务。 与 Kubernetes 一样,CoreDNS 项目由 CNCF 托管。 coredns在K8S中的用途,…

spring aop @annotation的用法

直接看原文: spring aop annotation的用法-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- annotation用在定义连接点时,对连接点进行限制。比如我们想对标注了…

prometheus+mysql_exporter监控mysql

prometheus+mysql_exporter监控mysql 一.安装mysql 1.下载:wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 2.安装客户端:yum -y install mysql57-community-release-el7-10.noarch.rpm 3.安装服务端:yum -y install mysql-community-se…

day10:分割链表

问题描述: 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 示例 1: 输入:head [1,4…

【HTML】SVG实现炫酷的描边动画

前沿 今天闲来无事,看到Antfu大佬的个性签名,觉得还是非常炫酷的,于是也想要搞一个自己的个性签名用来装饰自己的门面,不过由于手写的签名太丑了,遂放弃。于是尝试理解原理,深入研究此等密法,终…