调用讯飞星火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 数据类…

docker安装及常见命令

历史版本docker下载 https://docs.docker.com/desktop/release-notes/#upgrades-17 docker start 容器id # 启动容器 docker restart 容器id # 重启容器 docker stop 容器id # 停止当前运行的容器 docker kill 容器id # 强制停止当前容器…

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…

针对多标签(Multi-label)任务的经典算法

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 多标签&#xff08;Multi-label&#xff09;任务是分类任务的扩展版&#xff0c;即每个样本不再仅属于一个类别&#xff0…

MySQL是怎么保证原子性的(undo log日志相关)

MySQL是怎么保证原子性的&#xff1f; 事务的原子性就是&#xff1a;一个事物要么全部执行成功&#xff0c;要么全部执行失败。MySQL 主要是利用 undo log&#xff0c;也就是回滚日志来实现原子性。 平常我们在对数据进行增删改时&#xff0c;InnoDB 除了会记录 redo log&…

【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;可以直接播放…

频率域,空间域以及频率域和空间域如何获取

文章目录 频率域频率域的关键概念&#xff1a;频率域的应用&#xff1a; 空间域空间域特征的含义&#xff1a;空间域操作的常见技术&#xff1a;与频率域的对比&#xff1a; 如何获取空间域&#xff0c;频率域空间域特征&#xff1a;频率域特征&#xff1a; 频率域 频率域&…

每天学习一个Windows命令或Linux命令——seq

今天我们来学习 seq命令&#xff01; seq命令&#xff08;单词sequence序列的缩写&#xff09;是Linux系统中用于输出序列化的一串整数的命令。 一、seq用法 seq用法一共有以下三种&#xff1a; seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量&#…

数字证书-证书分类

SSL证书类型 数字证书DV证书、OV证书和EV证书三种类型的SSL证书。不同类型证书的安全性、支持的证书品牌和适用的网站类型不同&#xff0c;具体如下表所示 证书类型适用网站类型等级认证强度支持的证书品牌DV&#xff08;域名型&#xff09;个人网站一般CA机构审核个人网站真…

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;…

大模型日报2024-06-05

大模型日报 2024-06-05 大模型资讯 AI气象预测取得重大进展&#xff1a;单台桌面电脑即可运行全球天气模型 摘要: 一项新的人工智能天气预测模型已经取得重大进展&#xff0c;该模型能够在一台普通的桌面电脑上运行&#xff0c;预测全球天气。这意味着即使没有复杂的物理计算&a…

2024-5-19——找出数组游戏的赢家

2024-5-19 题目来源我的题解方法一 纯模拟方法二 一次遍历 题目来源 力扣每日一题&#xff1b;题序&#xff1a;1535 我的题解 方法一 纯模拟 排除一种情况&#xff1a;当k>n-1时&#xff0c;至少会遍历数组一遍&#xff0c;实质就是求数组的最大值。 其余的情况使用List…

对象格式的数据表单循环校验

首先我们的代码数据是这样的&#xff08;直接和后台对应&#xff09; ruleForm: { roadList: {vehicle: {name:"机动车",width: 0,length:0,area:0},notVehicle: {name:"非机动车",width: 0,length:0,area:0},walk: {name:"人行道",width: 0,len…