本帖最后由 云天 于 2023-7-31 16:46 编辑
【项目背景】 今年火爆全网的是通过文本描述生成绘画的形式,ai绘画,也叫“ai作画”、“人工智能绘画”,即通过 AI 生成技术得到画作或图片。ai作画由来已久,有许多创作ai绘画作品的方式,包括基于规则的图像生成算法、深度学习算法。最早的ai作画系统 AARON 由 Harold Cohen 于 1960 年代末开始开发。AARON 使用基于符号规则的方法来生成图像,不同于现在ai作画是输出数字化图像,AARON 真的是用画笔和颜料来绘画。2018 年一幅 AI 生成的画被售出超过 40 万美元。这个项目中 AI 基于 GAN (生成对抗网络)技术,学习了 1.5 万件艺术作品,它只能生成油画风格的艺术作品。 2021 年 1 月,OpenAI 发布了 DALL·E,并在一年后发布了生成能力更强的 DALL·E 2。2022 年 7 月 midjourney 开放公测,有人通过 midjourney 生成的作品获得艺术奖项,引起广泛讨论。2022 年 8 月 AI 模型 Stable Diffusion 的开源,才真正引爆了全民参与 AI 作画的热潮。我们可以通过国内的如 画宇宙、盗梦师、tiamat、6pen、draft art、意间AI绘画、即时设计,轻松体验迄今最强的开源 AI 作画模型。
下面是我使用“画宇宙”(https://creator.nolibox.com/creator ),利用提示词:花海 日落 古代 战士,生成的AI图
【项目设计】
主控使用行空板,利用行空板上的麦克风和讯飞语音识别库,识别提示词,再利用flagstudio提供的文字生成图片API,生成AI图像并在屏幕上显示。
【项目硬件】
按钮连接在行空板P21引脚,用于开启录音,和启动显示AI图像。
(提示词:梅 兰 竹 菊)
【语音识别】
注册“讯飞开放平台”,在”控制台“获取:APPID、 APISecret、 APIKey。
加载讯飞语音识别扩展
利用Mind+软件Python模式编写程序:
测试视频
【AI绘画电脑版】
Mind+ Python模式——代码FlagStudio是智源研究院应用文生图,文生音乐等人工智能模型支持艺术创作相关的开源项目集合,利用图文、声文等多模态模型,依托研究院在NLP和CV领域大模型的研究基础,为艺术创作提供更加符合中文场景的人工智能开源算法和模型,使创作效率更加高效,创作空间更加开阔,创作成果更加细腻。当前主要提供文生图相关的能力。https://flagopen.baai.ac.cn 注册获取apikey。
#导入相关库
import requests
import json
import base64
import cv2
import numpy as np
from alive_progress import alive_bar
import time
while True:
u="https://flagopen.baai.ac.cn/flagStudio/auth/getToken"
param={"apikey":"aee3672220ec348b3b3dfaa7956a8282"}
token_response=requests.get(url=u,params=param)
token_json=json.loads(token_response.text)
token=token_json['data']['token']
#调用api
u = "https://flagopen.baai.ac.cn/flagStudio/v1/text2img"
prompt=input("请输入你的创意:")
param={"prompt":prompt,"steps":80,"style":"国画","width":512,"height":512}
header={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36",
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"token":token}
response=requests.post(url=u,json=param,headers=header)
print('AI正在绘画中...')
img_json=json.loads(response.text)
img=img_json['data']
img=base64.b64decode(img)
imgstring = np.array(img).tobytes()
imgstring = np.asarray(bytearray(imgstring), dtype="uint8")
image = cv2.imdecode(imgstring, cv2.IMREAD_COLOR)
mylist = range(0,30)
with alive_bar(len(mylist)) as bar:
for i in mylist:
bar()
time.sleep(0.5)
print('绘制完成')
cv2.imshow('result',image)
cv2.waitKey(0)
cv2.destroyAllWindows()
复制代码
【行空板AI绘画测试】
使用行空板上的A键开启录音,B键启动AI绘画并在屏幕上显示。
(提示词:奔腾的俊马)
(提示词:可爱的兔子)^_^
(提示词:海上日落)^_^
测试演示视频
【行空板AI绘画】
装置按钮按下启动录音,再次按下启动AI绘画并在屏幕上显示。
python代码:
# -*- coding: UTF-8 -*-
# MindPlus
# Python
from pinpong.extension.unihiker import *
import requests,json,base64,cv2,time
from pinpong.board import Board,Pin
from unihiker import Audio
from unihiker import GUI
import numpy as np
import xunfeiasr
import math
import cv2
u_gui=GUI()
Board().begin()
u_audio = Audio()
p_p21_in=Pin(Pin.P21, Pin.IN)
xunfeiasr.xunfeiasr_set(APPID="d41ee990",APISecret="NmFkZjdhM2U3ZmU5ZmNlN2FjOGJmYjY4",APIKey="d551eafc91a585a49beabe7ad3644ca4")
ShiBieNaRong = 0
BiaoShi = 0
AnNiuBiaoShi = 0
识别显示=u_gui.draw_text(text="行空板AI画",x=25,y=120,font_size=30, color="#0000FF")
while True:
if (not (ShiBieNaRong == 0)):
if (BiaoShi == 1):
BiaoShi = 0
buzzer.play(buzzer.DADADADUM,buzzer.Once)
if (p_p21_in.read_digital()==True):
if (AnNiuBiaoShi == 0):
AnNiuBiaoShi = 1
u_gui.clear()
识别显示=u_gui.draw_text(text="正在录音……",x=15,y=120,font_size=30, color="#0000FF")
ShiBieNaRong = 0
u_audio.record("record.wav",4)
BiaoShi = 1
识别显示.config(text="正在识别……")
ShiBieNaRong = xunfeiasr.xunfeiasr(r"record.wav")
识别显示.config(text=ShiBieNaRong)
else:
if (AnNiuBiaoShi == 1):
AnNiuBiaoShi = 0
识别显示.config(text="AI绘画中...")
u="https://flagopen.baai.ac.cn/flagStudio/auth/getToken"
param={"apikey":"dc267e87afd46df5265544412f2ee40d"}
token_response=requests.get(url=u,params=param)
token_json=json.loads(token_response.text)
token=token_json['data']['token']
prompt = ShiBieNaRong
u = "https://flagopen.baai.ac.cn/flagStudio/v1/text2img"
param={"prompt":prompt,"steps":80,"style":"国画","width":512,"height":512}
header={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36","Accept": "application/json","Content-Type": "application/x-www-form-urlencoded; charset=UTF-8","X-Requested-With": "XMLHttpRequest","token":token}
response=requests.post(url=u,json=param,headers=header)
img_json=json.loads(response.text)
img=img_json['data']
img=base64.b64decode(img)
imgstring = np.array(img).tobytes()
imgstring = np.asarray(bytearray(imgstring), dtype="uint8")
image = cv2.imdecode(imgstring, cv2.IMREAD_COLOR)
进度条=u_gui.fill_rect(x=0,y=200,w=0,h=30,color="#FF0000")
for my_variable in range(1, 11):
进度条.config(w=(math.ceil((240 * (my_variable / 10)))))
time.sleep(0.2)
进度条.remove()
image=cv2.resize(image,(240,320))
cv2.imwrite("img.png", image)
AI图=u_gui.draw_image(image="img.png",x=0,y=0)
复制代码
【演示视频】