调用讯飞星火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. 关于理论方面的知识介绍

图像生成技术是计算机视觉和人工智能领域中一项极具革命性的进展,尤其是在深度学习技术的推动下,我们已经能够创建出前所未有的真实和复杂的图像。

  1. 生成对抗网络(GANs)
    方法论: GANs包括两个神经网络——生成器和判别器,它们同时进行训练。生成器的任务是创造看起来真实的图像,而判别器的任务是区分训练集中的真实图像和生成器产生的假图像。通过这种竞争,生成器学习制造越来越令人信服的图像。
    优势: GANs特别擅长生成高质量和详细的图像。它们在需要创造性和视觉内容创新的任务中表现出色,例如创建艺术作品和时尚设计。
    应用: 除了艺术创作,GANs还用于照片增强、超分辨率以及生成真实人脸或改变照片中的面部表情。
  2. 变分自编码器(VAEs)
    方法论: VAEs是一种使用概率变换的自编码器。它们通过编码器将输入数据映射到具有定义概率分布的潜在空间,然后从这个空间解码以重构输入。训练过程涉及最小化原始图像与其重建之间的差异,这鼓励潜在空间的良好组织和连续性。
    优势: VAEs特别适用于需要平滑和连续图像生成的任务,如无缝地从一幅图像过渡到另一幅图像。
    应用: 常用于图像去噪、异常检测以及数据增强,通过调整潜变量来生成新图像。
  3. 扩散模型
    方法论: 扩散模型通过一个过程生成图像,该过程首先逐渐向数据样本添加噪声,直到原始内容完全被遮蔽。然后,在一个逆过程中,模型学习从噪声数据中重建原始图像,通过迭代减少噪声。
    优势: 这些模型在生成详细和逼真的图像方面表现出色,常常超过GANs在需要精细纹理细节的任务中的质量。
    应用: 最近用于创造艺术、提高照片分辨率以及以高度逼真的方式生成复杂场景。
  4. 自回归模型
    方法论: 自回归模型像PixelRNN和PixelCNN这样的模型,通过基于之前生成的像素预测新像素来逐像素或逐块生成图像。
    优势: 这些模型在生成过程中具有高度控制能力,这对于需要特定图像结构或属性的应用非常有益。
    应用: 常用于需要顺序数据生成的场景,如视频帧预测或复杂场景生成,每一个细节都很重要。
  5. 基于能量的模型(EBMs)
    方法论: EBMs为图像的每个可能状态定义一个标量能量,其中能量较低的状态更可能。训练涉及学习一个函数,为更合理的输入数据配置赋予较低的能量。
    优势: EBMs在学习不同类型的数据分布方面非常灵活,可以精细地从复杂的多模态分布中采样。
    应用: 它们用于图像恢复。

3. 关于实验过程的介绍,完整实验代码,测试结果

3.1 API获取

  1. 确保电脑正确连接网络。
  2. 浏览器搜索“讯飞开放平台”,或者输入网址:讯飞开放平台-以语音交互为核心的人工智能开放平台(xfyun.cn)
  3. 进行简单的注册、实名认证。
    ALT
  4. 打开控制台创建新应用,填写相应的“应用名称”,“应用分类”,“应用功能描述”并且提交。
    ALT
  5. 找到图片生成功能
    在这里插入图片描述
  6. 购买服务,并且选择刚才创建的应用
    在这里插入图片描述
  7. 查看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

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

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

相关文章

Vitis HLS 学习笔记--通道的FIFO/PIPO选择

目录 1. 简介 2. 代码详解 2.1 FIFO 通道示例 2.1.1 配置默认通道 2.1.2 kernel 代码 2.1.3 综合报告 2.1.4 depth 32 解析 2.1.5 FIFO 通道分类 2.2 PIPO 2.2.1 配置默认通道 2.2.2 kernel 代码 2.2.3 综合报告 2.2.4 PIPO 通道分类 3. 综合对比 3.1 数据类…

2024年带你揭秘FL Studio 21破解版,2024年最新FL21内置汉化破解补丁

截止目前&#xff0c;FL Studio最新版是FL Studio 21.2.3.4004版本&#xff0c;想必很多朋友已经迫不及待了&#xff0c;那么今天这篇文章我将带大家详细的介绍FL Studio 21.2.3 Build 4004新特点以及如何下载&#xff0c;安装和激活。 PS.本次为你带来的是fl studio21破解版&a…

【python】Modulenotfounderror: no module named ‘open_clip’

成功解决“ModuleNotFoundError: No module named ‘open_clip’”错误的全面指南 在Python编程中&#xff0c;如果你遇到了“ModuleNotFoundError: No module named ‘open_clip’”这个错误&#xff0c;它意味着你的Python环境中没有安装名为open_clip的模块&#xff0c;或者…

grep、sed、awk

grep&#xff1a;文本过滤工具 sed: 文本编辑工具 awk: 格式化文本 grep -n 显示行号 -i 忽略大小写 -v 取反 -o 只保留关键消息 # 找出文件的空行 grep ^$ test.txt -n # 找出文件非空行内容 grep ^$ test.txt -n -v # 找出文件非空行内容&#xff0c;并且排除注释&#xff…

8个免费下载音乐的网站,建议收藏!

1、My Free MP3 tools.liumingye.cn/music/ 一个好用且免费的在线音乐播放和下载网站&#xff0c;几乎收录了所有国内外大火的歌手和歌曲&#xff0c;可以通过歌手列表找单曲&#xff0c;也可以直接搜索歌手或歌曲名&#xff0c;下面还有一些热门搜索&#xff0c;可以直接播放…

Windows下SVN文件损坏,启动服务报错1067

之前碰到过一次&#xff0c;忘记最后怎么解决的了&#xff0c;只记得大概原理和原因&#xff0c;以及解决办法。 1067错误码&#xff0c;很多地方都会碰到&#xff0c;mysql也会有&#xff0c;看来应该是windows系统的错误码。跟具体程序无关。所以直接百度“SVN”、“1067”…

HarmonyOS App开发造轮子--自定义圆形图片

思路&#xff1a; 1、对比之前自己在其他程序开发中自定义组件的思路&#xff0c;首先寻找父组件Image和Component相关的Api&#xff0c;看看是否具备OnDraw方法。 2、了解Canvas相关Api操作&#xff0c;特别是涉及到位图的操作。 通过翻阅大量资料&#xff0c;发现了两个关…

不是,有了这套IP地址管理开源系统谁还用Excel啊

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 中午好&#xff0c;我的网工朋友。 作为网工的我们想必都很清楚IP地址管理的重要性以及其复杂性&#xff0c;传统的Excel表格虽然在某些情况下能…

基于STM32开发的智能农业灌溉控制系统

目录 引言环境准备智能农业灌溉控制系统基础代码实现&#xff1a;实现智能农业灌溉控制系统 4.1 土壤湿度传感器数据读取4.2 水泵控制4.3 环境监测与数据记录4.4 用户界面与多功能显示应用场景&#xff1a;农业灌溉与环境监测问题解决方案与优化收尾与总结 1. 引言 随着农业…

html写一个table表

HTML代码&#xff1a; <div class"table_box w-full"><div class"title_top">XX表</div><div class"title_btm">(<input class"input input_1" type"text">xxxx)</div><table class…

【Linux】内存级文件

目录 C语言关于文件操作的函数 Linux关于文件操作的系统调用 完善myshell C语言缓冲区 其实我们在C语言就学过文件操作&#xff0c;但是从语言的角度&#xff0c;我们只是说会用了关于文件的一些操作和函数&#xff0c;但其实它究竟是怎么回事我们其实并不明白&#xff0c;…

rust学习(字节数组转string)

最新在写数据传输相关的操作&#xff0c;发现string一个有趣的现象&#xff0c;代码如下&#xff1a; fn main() {let mut data:[u8;32] [0;32];data[0] a as u8;let my_str1 String::from_utf8_lossy(&data);let my_str my_str1.trim();println!("my_str len is…

STM32实验之USART串口发送+接受数据(二进制/HEX/文本)

涉及三个实验&#xff1a; 1.USART串口发送和接收数据 我们使用的是将串口封装成为一个Serial.c模块.其中包含了 void Serial_Init(void);//串口初始化 void Serial_SendByte(uint8_t Byte);//串口发送一个字节 void Serial_SendArray(uint8_t *Array,uint16_t Length);//…

【C语言】详解函数(上)(庖丁解牛版)

文章目录 1. 前言2. 函数的概念3.库函数3.1 标准库和头文件3.2 库函数的使用3.2.1 头文件的包含3.2.2 实践 4. 自定义函数4.1 自定义函数的语法形式4.2 函数的举例 5. 形参和实参5.1 实参5.2 形参5.3 实参和形参的关系 6. return 语句6. 总结 1. 前言 一讲到函数这块&#xff…

栈排序00

题目链接 栈排序 题目描述 注意点 对栈进行排序使最小元素位于栈顶最多只能使用一个其他的临时栈存放数据不得将元素复制到别的数据结构&#xff08;如数组&#xff09;中栈中的元素数目在[0, 5000]范围内 解答思路 本题是要实现一个小顶堆&#xff0c;可以直接使用Priori…

上位机图像处理和嵌入式模块部署(f407 mcu中的udp server开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 既然lwip已经port到407上面了&#xff0c;接下来其实就可以做一些测试了。本身lwip支持tcp、udp&#xff0c;也支持client和server&#xff0c;既然…

【数据分享】中国第三产业统计年鉴(1991-2022)

大家好&#xff01;今天我要向大家介绍一份重要的中国第三产业统计数据资源——《中国第三产业统计年鉴》。这份年鉴涵盖了从1991年到2022年中国第三产业统计全面数据&#xff0c;并提供限时免费下载。&#xff08;无需分享朋友圈即可获取&#xff09; 数据介绍 每年的《中国…

2004NOIP普及组真题 3. FBI树

线上OJ 地址&#xff1a; [04NOIP普及组] FBI树 本题的意思是&#xff1a;给定一个 01字符串 &#xff08;对应一棵完全二叉树的最后一层叶子节点&#xff09;&#xff0c;将树的每一个节点的值用字母“F、B、I”表示。规则&#xff08;如下图所示&#xff09;为&#xff1a; 1…

Spring AI 第二讲 之 Chat Model API 第二节Ollama Chat

通过 Ollama&#xff0c;您可以在本地运行各种大型语言模型 (LLM)&#xff0c;并从中生成文本。Spring AI 通过 OllamaChatModel 支持 Ollama 文本生成。 先决条件 首先需要在本地计算机上运行 Ollama。请参阅官方 Ollama 项目 README&#xff0c;开始在本地计算机上运行模型…

curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL

source ~/.bash_profile flutter clean Command exited with code 128: git fetch --tags Standard error: 错误&#xff1a;RPC 失败。curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL (err 8) 错误&#xff1a;预期仍然需要 2737 个字节的正文 fetch-pack: unexpec…