调用讯飞星火API实现图像生成
目录
- 1. 作者介绍
 - 2. 关于理论方面的知识介绍
 - 3. 关于实验过程的介绍,完整实验代码,测试结果
 - 3.1 API获取
 - 3.2 代码解析与运行结果
 - 3.2.1 完整代码
 - 3.2.2 运行结果
 
- 3.3 界面的编写(进阶)
 
- 4. 问题分析
 - 5. 参考链接
 
1. 作者介绍
刘来顺,男,西安工程大学电子信息学院,2023级研究生
 研究方向:机器视觉与人工智能
 电子邮件:lls2405559452@163.com
黄浩磊,男,西安工程大学电子信息学院,2023级研究生,张宏伟人工智能课题组
 研究方向:智能视觉检测与工业自动化技术
 电子邮件:hhl57303@163.com
2. 关于理论方面的知识介绍
图像生成技术是计算机视觉和人工智能领域中一项极具革命性的进展,尤其是在深度学习技术的推动下,我们已经能够创建出前所未有的真实和复杂的图像。
- 生成对抗网络(GANs)
方法论: GANs包括两个神经网络——生成器和判别器,它们同时进行训练。生成器的任务是创造看起来真实的图像,而判别器的任务是区分训练集中的真实图像和生成器产生的假图像。通过这种竞争,生成器学习制造越来越令人信服的图像。
优势: GANs特别擅长生成高质量和详细的图像。它们在需要创造性和视觉内容创新的任务中表现出色,例如创建艺术作品和时尚设计。
应用: 除了艺术创作,GANs还用于照片增强、超分辨率以及生成真实人脸或改变照片中的面部表情。 - 变分自编码器(VAEs)
方法论: VAEs是一种使用概率变换的自编码器。它们通过编码器将输入数据映射到具有定义概率分布的潜在空间,然后从这个空间解码以重构输入。训练过程涉及最小化原始图像与其重建之间的差异,这鼓励潜在空间的良好组织和连续性。
优势: VAEs特别适用于需要平滑和连续图像生成的任务,如无缝地从一幅图像过渡到另一幅图像。
应用: 常用于图像去噪、异常检测以及数据增强,通过调整潜变量来生成新图像。 - 扩散模型
方法论: 扩散模型通过一个过程生成图像,该过程首先逐渐向数据样本添加噪声,直到原始内容完全被遮蔽。然后,在一个逆过程中,模型学习从噪声数据中重建原始图像,通过迭代减少噪声。
优势: 这些模型在生成详细和逼真的图像方面表现出色,常常超过GANs在需要精细纹理细节的任务中的质量。
应用: 最近用于创造艺术、提高照片分辨率以及以高度逼真的方式生成复杂场景。 - 自回归模型
方法论: 自回归模型像PixelRNN和PixelCNN这样的模型,通过基于之前生成的像素预测新像素来逐像素或逐块生成图像。
优势: 这些模型在生成过程中具有高度控制能力,这对于需要特定图像结构或属性的应用非常有益。
应用: 常用于需要顺序数据生成的场景,如视频帧预测或复杂场景生成,每一个细节都很重要。 - 基于能量的模型(EBMs)
方法论: EBMs为图像的每个可能状态定义一个标量能量,其中能量较低的状态更可能。训练涉及学习一个函数,为更合理的输入数据配置赋予较低的能量。
优势: EBMs在学习不同类型的数据分布方面非常灵活,可以精细地从复杂的多模态分布中采样。
应用: 它们用于图像恢复。 
3. 关于实验过程的介绍,完整实验代码,测试结果
3.1 API获取
- 确保电脑正确连接网络。
 - 浏览器搜索“讯飞开放平台”,或者输入网址:讯飞开放平台-以语音交互为核心的人工智能开放平台(xfyun.cn)
 - 进行简单的注册、实名认证。

 - 打开控制台创建新应用,填写相应的“应用名称”,“应用分类”,“应用功能描述”并且提交。

 - 找到图片生成功能

 - 购买服务,并且选择刚才创建的应用

 - 查看API调用文档,获取相应的代码


 
3.2 代码解析与运行结果
3.2.1 完整代码
# encoding: UTF-8
import time
import requests
from datetime import datetime
from wsgiref.handlers import format_date_time
from time import mktime
import hashlib
import base64
import hmac
from urllib.parse import urlencode
import json
from PIL import Image
from io import BytesIOclass AssembleHeaderException(Exception):def __init__(self, msg):self.message = msgclass Url:def __init__(this, host, path, schema):this.host = hostthis.path = paththis.schema = schemapass# calculate sha256 and encode to base64
def sha256base64(data):sha256 = hashlib.sha256()sha256.update(data)digest = base64.b64encode(sha256.digest()).decode(encoding='utf-8')return digestdef parse_url(requset_url):stidx = requset_url.index("://")host = requset_url[stidx + 3:]schema = requset_url[:stidx + 3]edidx = host.index("/")if edidx <= 0:raise AssembleHeaderException("invalid request url:" + requset_url)path = host[edidx:]host = host[:edidx]u = Url(host, path, schema)return u# 生成鉴权url
def assemble_ws_auth_url(requset_url, method="GET", api_key="", api_secret=""):u = parse_url(requset_url)host = u.hostpath = u.pathnow = datetime.now()date = format_date_time(mktime(now.timetuple()))# print(date)# date = "Thu, 12 Dec 2019 01:57:27 GMT"signature_origin = "host: {}\ndate: {}\n{} {} HTTP/1.1".format(host, date, method, path)# print(signature_origin)signature_sha = hmac.new(api_secret.encode('utf-8'), signature_origin.encode('utf-8'),digestmod=hashlib.sha256).digest()signature_sha = base64.b64encode(signature_sha).decode(encoding='utf-8')authorization_origin = "api_key=\"%s\", algorithm=\"%s\", headers=\"%s\", signature=\"%s\"" % (api_key, "hmac-sha256", "host date request-line", signature_sha)authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8')# print(authorization_origin)values = {"host": host,"date": date,"authorization": authorization}return requset_url + "?" + urlencode(values)# 生成请求body体
def getBody(appid,text):body= {"header": {"app_id": appid,"uid":"123456789"},"parameter": {"chat": {"domain": "general","temperature":0.5,"max_tokens":4096}},"payload": {"message":{"text":[{"role":"user","content":text}]}}}return body# 发起请求并返回结果
def main(text,appid,apikey,apisecret):host = 'http://spark-api.cn-huabei-1.xf-yun.com/v2.1/tti'url = assemble_ws_auth_url(host,method='POST',api_key=apikey,api_secret=apisecret)content = getBody(appid,text)print(time.time())response = requests.post(url,json=content,headers={'content-type': "application/json"}).textprint(time.time())return response#将base64 的图片数据存在本地
def base64_to_image(base64_data, save_path):# 解码base64数据img_data = base64.b64decode(base64_data)# 将解码后的数据转换为图片img = Image.open(BytesIO(img_data))# 保存图片到本地img.save(save_path)# 解析并保存到指定位置
def parser_Message(message):data = json.loads(message)# print("data" + str(message))code = data['header']['code']if code != 0:print(f'请求错误: {code}, {data}')else:text = data["payload"]["choices"]["text"]imageContent = text[0]# if('image' == imageContent["content_type"]):imageBase = imageContent["content"]imageName = data['header']['sid']savePath = f"output/{imageName}.jpg"base64_to_image(imageBase,savePath)print("图片保存路径:" + savePath)return savePathif __name__ == '__main__':#运行前请配置以下鉴权三要素,获取途径:https://console.xfyun.cn/services/ttiAPPID ='个人ID'APISecret = '你的密钥'APIKEY = '你的密钥'desc = '''生成一张图:远处有着高山,山上覆盖着冰雪,近处有着一片湛蓝的湖泊'''res = main(desc,appid=APPID,apikey=APIKEY,apisecret=APISecret)# print(res)#保存到指定位置parser_Message(res)# print(parser_Message(res))
 
3.2.2 运行结果
将获取的“APPID”、“APISecret”、“APIKEY”、填写进去。“desc”输入相应的提示词可以生成对应的图片。
 
 获取的运行结果如下:
 
3.3 界面的编写(进阶)
Gradio的设计哲学是“简单且强大”。它旨在为中高级开发者提供一个高效、易用的平台,使他们能够快速展示和测试他们的机器学习模型。通过Gradio,开发者可以轻松创建出能够处理各种输入(如图像、音频、文本等)的应用,并将结果以直观的方式展示给用户。更重要的是,Gradio使得分享和部署这些交互式应用变得轻而易举,不论是在团队内部还是在全球范围内。
 pip安装相应的SDK
pip install gradio
 
在图像生成文件中的图像生成函数中添加返回值,并且连接到界面的输出变量中,
 将界面的输入变量链接到生成代码的prompt变量这里,
 添加相应的生成按钮即可。
4. 问题分析
问题一: 图片生成的主要功能是什么?
 答:根据用户输入的文字内容,生成符合语义描述的不同风格的图像。
问题二: 图片生成支持什么应用平台?
 答:目前支持Web API应用平台。
问题三: 图片生成的默认大小为多少?
 答:分辨率512*512。
5. 参考链接
Python调用腾讯API进行人像动漫化_搜索或输入网址-CSDN博客
 掌握Gradio:Python中创建交互式机器学习应用的终极指南
 终于等到你!Python调用讯飞星火大模型API_哔哩哔哩_bilibili
相关文章:
调用讯飞星火API实现图像生成
目录 1. 作者介绍2. 关于理论方面的知识介绍3. 关于实验过程的介绍,完整实验代码,测试结果3.1 API获取3.2 代码解析与运行结果3.2.1 完整代码3.2.2 运行结果 3.3 界面的编写(进阶) 4. 问题分析5. 参考链接 1. 作者介绍 刘来顺&am…...
reduce过滤递归符合条件的数据
图片展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head><…...
Go微服务: 基于rocketmq:5.2.0搭建RocketMQ环境,以及示例参考
概述 参考最新官方文档:https://rocketmq.apache.org/zh/docs/quickStart/03quickstartWithDockercompose以及:https://rocketmq.apache.org/zh/docs/deploymentOperations/04Dashboard综合以上两个文档来搭建环境 搭建RocketMQ环境 1 ) 基于 docker-c…...
Wpf 使用 Prism 开发MyToDo应用程序
MyToDo 是使用 WPF ,并且塔配Prism 框架进行开发的项目。项目中进行了前后端分离设计,客户端所有的数据均通过API接口获取。适合新手入门学习WPF以及Prism 框架使用。 首页统计以及点击导航到相关模块功能待办事项增删改查功能备忘录增删改查功能登录注册…...
vue-Dialog 自定义title样式
展示结果 vue代码 <el-dialog :title"title" :visible.sync"classifyOpen" width"500px" :showClose"false" class"aboutDialog"> <el-form :model"classifyForm" :rules"classifyRules">…...
数据库主键设计
文章目录 前言1. 自增ID(Auto-Increment)2. GUID (Globally Unique Identifier)3. 雪花算法(Snowflake)处理时钟回拨的方法1. 简单等待2. 配置时钟回拨安全窗口3. 使用不同的机器 ID 小结稳定的雪花算法实现方案示例实现1. 定义雪…...
小熊家务帮day13-day14 门户管理(ES搜索,Canal+MQ同步,索引同步)
目录 1 服务搜索1.1 需求分析1.2 技术方案1.2.1 使用Elasticsearch进行全文检索(为什么数据没有那么多还要用ES?)1.2.2 索引同步方案1.2.2.1 Canal介绍1.2.2.1 Canal工作原理 1 服务搜索 1.1 需求分析 服务搜索的入口有两处: 在…...
Android8.1高通平台修改默认输入法
需求 安卓8.1 SDK原生的输入法只能打英文, 需要替换成中文输入法. 以高通平台为例, 其它平台也适用. 查看设备当前默认输入法 adb shell settings list secure | grep input 可以看到当前默认是LatinIME这个安卓原生输入法. default_input_methodcom.android.inputmethod.l…...
49. 字母异位词分组
思路:题目的意思是,将所有字母相同的字符串放到一个数组中 解题思路是:使用map,使用排序好的字符串作为key,源字符串作为value,就可以实现所有字母相同的字符串对应一个key vector<vector<string>> groupAnagrams(ve…...
负压实验室设计建设方案
随着全球公共卫生事件的频发,负压实验室的设计和建设在医疗机构中的重要性日益凸显。负压实验室,特别是负压隔离病房,主要用于控制传染性疾病的扩散,保护医护人员和周围环境的安全。广州实验室装修公司中壹联凭借丰富的实验室装修…...
作文笔记10 复述故事
一、梳理内容(用表格,示意图) 救白蛇 得宝石 救相亲 变石头 人们纪念海力布 二、按顺序,不遗漏主要情节 (猎人海力布热心救人)救白蛇 得宝石(白蛇强调宝石禁忌)(海力…...
业务安全蓝军测评标准解读—业务安全体系化
目录 1.前言 2.业务蓝军测评标准 2.1 业务安全脆弱性评分(ISVS) 2.2 ISVS评分的参考意义<...
关于焊点检测SJ-BIST)模块实现
关于焊点检测SJ-BIST)模块实现 语言 :Verilg HDL 、VHDL EDA工具:ISE、Vivado、Quartus II 关于焊点检测SJ-BIST)模块实现一、引言二、焊点检测功能的实现方法(1) 输入接口(2) 输出接…...
使用 Logback.xml 配置文件输出日志信息
官方链接:Chapter 3: Configurationhttps://logback.qos.ch/manual/configuration.html 配置使用 logback 的方式有很多种,而使用配置文件是较为简单的一种方式,下述就是简单描述一个 logback 配置文件基本的配置项: 由于 logba…...
Allegro-开店指南
开店指南 Allegro企业账户注册流程 Allegro注册流程分成两个主要阶段: 第一创建您的账户,第二激活您账户的销售功能。完成两个阶段,才能在Allegro进行销售。 中国企业应该入驻Business account(企业账户)。 第二阶段ÿ…...
Spring AI 第二讲 之 Chat Model API 第二节Ollama Chat
通过 Ollama,您可以在本地运行各种大型语言模型 (LLM),并从中生成文本。Spring AI 通过 OllamaChatModel 支持 Ollama 文本生成。 先决条件 首先需要在本地计算机上运行 Ollama。请参阅官方 Ollama 项目 README,开始在本地计算机上运行模型…...
服务器环境搭建
服务器的使用。 本地服务器 虚拟机服务器 云服务器。 服务器配置内容 如何实现部署到云服务器? 环境部署是一件费劲的事。 自己一个人坚持慢慢弄,也能行。 但是要是一个组的人,问你怎么弄环境。 可就难了,不同的人部署的环境不同&…...
数仓建模—指标体系指标拆解和选取
数仓建模—指标拆解和选取 第一节指标体系初识介绍了什么是指标体系 第二节指标体系分类分级和评价管理介绍了指标体系管理相关的,也就是指标体系的分级分类 这一节我们看一下指标体系的拆解和指标选取,这里我们先说指标选取,其实在整个企业的数字化建设过程中我们其实最…...
微信小程序如何在公共组件中改变某一个页面的属性值
需求 公共组件A改变页面B的属性isShow的值。 思路 首先目前我不了解可以直接在组件中改变页面的值的方法,所以我通过监听的方式在B页面监听app.js的某一属性值的改变从而改变B页面的值,众所周知app.js的某一属性值是很容易就能更改的。 app.js globa…...
TCP/UDP的区别
首先来介绍一下什么是TCP和UDP TCP(传输控制协议)和UDP(用户数据报协议)是互联网协议套件中两个重要的传输层协议。它们在数据传输的方式、可靠性、连接性等方面有显著的区别。 总之他们两个就是个协议,协议也就是数…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
