调用讯飞星火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(用户数据报协议)是互联网协议套件中两个重要的传输层协议。它们在数据传输的方式、可靠性、连接性等方面有显著的区别。 总之他们两个就是个协议,协议也就是数…...
JavaWeb1 Json+BOM+DOM+事件监听
JS对象-Json //Json 字符串转JS对象 var jsObject Json.parse(userStr); //JS对象转JSON字符串 var jsonStr JSON.stringify(jsObject);JS对象-BOM BOM是浏览器对象模型,允许JS与浏览器对话 它包括5个对象:window、document、navigator、screen、hi…...
DSP6657 GPIO中断学习(只支持GPIO0-15)
1 简介 使用创龙板卡的KEY2按键通过中断的方式控制LED3的亮灭 2 中断学习 在C665x设备上,CPU中断是通过C66x CorePac中断控制器进行配置的。该中断控制器允许最多128个系统事件被编程到任意12个CPU可屏蔽中断输入(CPUINT4至CPUINT15)、CPU…...
vue数字翻盘,翻转效果
数字翻转的效果 实现数字翻转的效果上面为出来的样子 下面为代码,使用的时候直接引入,还有就是把图片的路径自己换成自己或者先用颜色替代,传入num和numlength即可 <template><div v-for"(item, index) in processedNums&quo…...
【简单讲解TalkingData的数据统计】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...
JMeter的基本使用
JMeter的基本使用三步骤:1.添加线程、2.添加请求、3.添加查询结果的内容 如果需要添加token请求头来验证,则需要再加上一步骤:添加请求头 1.线程 添加线程的方式 主要修改者三个属性值 Number of Threads:并发线程数 Ramp-up…...
Oracle和Random Oracle
Oracle和Random Oracle 在计算机理论里面经常可以看到oracle,这个oracle可以是一个程序 一片代码 一个算法 一个机器 也可以是一个函数 甚至是一个关系。但我们只能知道这个oracle能做什么,不清楚他是怎么做的。所以经常讲其称为黑箱。推广一点…...
word 无法自动检测拼写
word 有时候不能分辨是哪种语言,比如把英语错认为法语 。 例如:Interlaayer spacace,发现误认为是法语。 1、选中Interlaayer spacace 2、点击语言下拉按钮 选择设置校对语言 发现校对语言为法语 3、手动修改校对语言为英语,并点击确认。 4、发现现…...
docker和docker-compose的安装
docker的安装 1.安装 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun2.设置开机自启动 systemctl start docker #启动docker systemctl enable docker3.配置阿里云镜像 不配置镜像的话,进行 docker pull 等操作会比较慢。进入阿里云&…...
python的一种集成开发工具:PyCharm开发工具
一. 简介 本文简单了解两种 python语言所使用的 集成开发环境: PyCharm、vscode。 python语言学习中,可以任意选中这两个集成开发环境的一种就可以。本文先来简单学习 PyCharm开发工具安装与使用。 二. python的一种集成开发工具:PyChar…...
【匹配线段问题】
问题: 如下图所示。图中有两行正整数,每行中有若干个正整数。如果第一行的某个数r与第二行的某个数相同,这样就可以在这两个正整数之间划一条线,并称之为r-匹配线段。下图中存在3-匹配线段和2-匹配线段。 请编写完整程序…...
怎么把网站排名排上去/网络营销代运营外包公司
【BZOJ1662】[Usaco2006 Nov]Round Numbers 圆环数 Description 正如你所知,奶牛们没有手指以至于不能玩“石头剪刀布”来任意地决定例如谁先挤奶的顺序。她们甚至也不能通过仍硬币的方式。 所以她们通过"round number"竞赛的方式。第一头牛选取一个整数&…...
网站用什么字体做正文/如何快速提升自己
PHP类的属性不能被赋值为变量的原因 ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器 成员属性声明时…...
用别人的电影网站做公众号/企业文化设计
wamp修改php.ini的方法:1、找到“/bin/php/php7.0.10/php.ini”并修改;2、找到“phpForApache.ini”并修改;3、打开“apache2.4.23/bin/php.ini”并修改即可。推荐:《PHP视频教程》在wamp中总共有三个地方可以修改 php.ini配置1. …...
中华人民共和国建设部官方网站/经典模板网站建设
大多数情况下,为了保证对外服务的安全性,我们在服务端实现的为服务接口时往往都会有一定的权限校验机制,比如对用户登录状态的校验等;同时为了防止客户端在发起请求时被篡改等安全方面的考虑,还会有一些签名校验的机制…...
做网站的那家公司好/百度网络营销中心官网
本文实例讲述了python异常处理、自定义异常、断言原理与用法。分享给大家供大家参考,具体如下:什么是异常:当程序遭遇某些非正常问题的时候就会抛出异常:比如int()只能处理能转化成int的对象,如果传入一个不能转化的对…...
优质的网站建设/济宁百度推广公司
wordpress响应慢在WordPress实时图形系列的最后一部分中,我将介绍样式化Flot图形的细节。 我无法忍受给你一个丑陋的孩子的想法! 我只是没有它。 因此,我们将研究如何充分利用Flot工具,并深入了解如何为Flot图表打上烙印…...