最近一段时间大火的AI绘画引起了各界人士的关注,但是stable diffusion开源的都是英文的模型,本文参考封神榜团队开源的太乙模型以及相关代码,利用stable diffusion web ui搭建一个中文的AI绘图模型,在本地实现AI绘画。如下就是使用AI作画绘制的图形。


想体验的可以通过下面的链接进行体验(想更好地体验建议参考第三章指南),想自己搭建本地的webui可以参考后面的实例。
太乙:https://huggingface.co/IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1
太乙-动漫:https://huggingface.co/IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Anime-Chinese-v0.1
安装git工具用来下载相关项目文件,使用如下命令安装:(对于linux系统命令不熟悉的可以去apt-get(Advanced Package Tool)软件包管理命令和linux下常用命令详解)
apt-get install git

将这个页面的文件和文件夹下的文件均下载到本地,命名和路径均保持原样:
点击向下的下载箭头下载文件,如下所示:

使用git工具下载项目文件到本地文件夹,命令如下:
git clone https://github.com/IDEA-CCNL/stable-diffusion-webui.git
然后进入该文件夹:
cd stable-diffusion-webui
运行webui.sh安装一些python环境
bash webui.sh
这个时候如果遇到root用户的报错,如下:
ERROR: This script must not be launched as root, aborting...
可以注释掉webui.sh的63-74行的内容,如下所示:
## Do not run as root
#if [[ $(id -u) -eq 0 ]]
#then
# printf "\n%s\n" "${delimiter}"
# printf "\e[1m\e[31mERROR: This script must not be launched as root, aborting...\e[0m"
# printf "\n%s\n" "${delimiter}"
# exit 1
#else
# printf "\n%s\n" "${delimiter}"
# printf "Running on \e[1m\e[32m%s\e[0m user" "$(whoami)"
# printf "\n%s\n" "${delimiter}"
#fi
如果遇到下面的报错:
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
可以运行下面命令
#物理机上运行:
pip install opencv-python-headless
#docker环境运行:
apt-get install ffmpeg libsm6 libxext6 -y
apt-get install libgl1
如果遇到下面错误:
ERROR: python3-venv is not installed, aborting...
可以试试把weiui.sh脚本里面97-103行的内容注释掉看是否能够运行,如下所示:
#if ! "${python_cmd}" -c "import venv" &>/dev/null
#then
# printf "\n%s\n" "${delimiter}"
# printf "\e[1m\e[31mERROR: python3-venv is not installed, aborting...\e[0m"
# printf "\n%s\n" "${delimiter}"
# exit 1
#fi
最后运行以下命令启动webui
bash webui.sh --listen --port 12345
或者使用以下命令启动webui
./venv/bin/python launch.py --ckpt repositories/Taiyi-Stable-Diffusion-1B-Chinese-v0.1/Taiyi-Stable-Diffusion-1B-Chinese-v0.1.ckpt --listen --port 12345
使用git工具下载项目文件到本地文件夹,命令如下:
git clone https://github.com/IDEA-CCNL/stable-diffusion-webui.git
然后进入该文件夹:
cd stable-diffusion-webui
运行webui.sh安装一些python环境
bash webui.sh
之后会遇到以下的报错:
No checkpoints found. When searching for checkpoints, looked at:
- file /xxx/stable-diffusion-webui/model.ckpt
- directory /xxx/stable-diffusion-webui/models/Stable-diffusion
Can't run without a checkpoint. Find and place a .ckpt file into any of those locations. The program will exit.
这个是正常的,官方给的readme文件中也有说明,需要将项目文件修改一些内容已经把之前下载好的模型文件放进来。
在项目的根目录下,新建一个名为’Taiyi-Stable-Diffusion-1B-Chinese-v0.1’文件夹,将准备阶段下载好的模型文件放到该文件夹里:
如下所示:

然后将之前下载好的模型文件放到该文件夹里面,注意需要将所有的文件按照原样放到里面,如下所示:

然后将官方说明的一些文件进行替换,主要有两个文件,一个是:
stable-diffusion-webui/repositories/stable-diffusion/configs/stable-diffusion/v1-inference.yaml,将其替换成stable-diffusion-webui/repositories/stable-diffusion-taiyi/configs/stable-diffusion/v1-inference.yaml
命令如下(执行以下命令时需要你在项目文件夹的根路径下,即stable-diffusion-webui路径下):
cp ./repositories/stable-diffusion-taiyi/configs/stable-diffusion/v1-inference.yaml ./repositories/stable-diffusion/configs/stable-diffusion/v1-inference.yaml
一个是:
stable-diffusion-webui/repositories/stable-diffusion/ldm/modules/encoders/modules.py,将其替换成stable-diffusion-webui/repositories/stable-diffusion-taiyi/ldm/modules/encoders/modules.py
命令如下(执行以下命令时需要你在项目文件夹的根路径下,即stable-diffusion-webui路径下):
cp ./repositories/stable-diffusion-taiyi/ldm/modules/encoders/modules.py ./repositories/stable-diffusion/ldm/modules/encoders/modules.py
然后修改下面的配置文件:

将local_path设置为之前下载的文件Taiyi-Stable-Diffusion-1B-Chinese-v0.1.ckpt的绝对路径
运行以下脚本配置相关环境(执行以下命令时需要你在项目文件夹的根路径下,即stable-diffusion-webui路径下):
cd repositories/stable-diffusion
pip install -e .
cd ../../
最后执行以下命令即可在本地调用太乙模型实现AI作画:
python launch.py --ckpt ./Taiyi-Stable-Diffusion-1B-Chinese-v0/Taiyi-Stable-Diffusion-1B-Chinese-v0.1.ckpt --listen --port 12345 #端口可以自定义
然后在本地电脑输入:localhost:12345即可访问web ui界面做各种中文AI绘图的操作。具体详见第三章。
下面是一些常见的参数设置:

设置好参数后点击generate即可生成图片。
具体作画过程可以参考官方给的手册:腾讯文档】太乙绘画使用手册1.1
这里总结了一下主要有以下几点需要注意的地方:
1.画幅大小设置为512×512最佳。
2.建议不用任何中文标点符号。
3.赋予某种属性(4k壁纸, 插画, 油画等)可以帮助消除白边。
4.选择20-25之间作为采样迭代步数。
最后官方给了三种绘画场景,分别是:
古诗词
科幻
歌词
下面分别是官方给的几个AI生图的参考:

生图参数:
东临碣石, 以观沧海, 波涛汹涌, 插画
Negative prompt: 广告, ,, !, 。, ;, 资讯, 新闻, 水印
Steps: 20, Sampler: PLMS, CFG scale: 7, Seed: 939979121, Size: 832x448, Model hash: e2e75020, Batch size: 6, Batch pos: 0
如下所示:


生图参数:
科幻, 外星文明, 建筑, 4k壁纸
Negative prompt: 广告, ,, !, 。, ;, 资讯, 新闻, 水印
Steps: 20, Sampler: PLMS, CFG scale: 7, Seed: 570506184, Size: 512x512, Model hash: e2e75020, Batch size: 6, Batch pos: 0
如下所示:


生图参数:
日出在印象的港口来回, 唯美, 插画
Negative prompt: 广告, ,, !, 。, ;, 资讯, 新闻, 水印
Steps: 25, Sampler: PLMS, CFG scale: 7, Seed: 4210842626, Size: 832x448, Model hash: e2e75020, Batch size: 6, Batch pos: 0
如下所示:


ModelScope 社区成立于 2022 年 6 月,是一个模型开源社区及创新平台,由阿里巴巴达摩院,联合 CCF开源发展委员会,共同作为项目发起方。社区联合国内 AI 领域合作伙伴与高校机构,致力于通过开放的社区合作,构建深度学习相关的模型开源,并开源相关模型服务创新技术,推动模型应用生态的繁荣发展。

文心一格,是基于文心大模型能力的AI艺术和创意辅助平台。
在这里您可以生成不同风格、独一无二的创意画作,为设计提供灵感、为创作带来更多创意!


Midjourney是一个独立的研究实验室,探索新的思想媒介,扩展人类物种的想象力。
我们是一个自筹资金的小型团队,专注于设计、人力基础设施和人工智能。我们有11名全职员工和一群出色的顾问。

文心 ERNIE-ViLG 2.0 采用基于知识增强算法的混合降噪专家建模,是全球首个知识增强的 AI 作画大模型,也是目前全球参数规模最大的 AI 作画大模型,在文本生成图像公开权威评测集 MS-COCO 和人工盲评上均超越了 Stable Diffusion、DALL-E 2 等模型,取得了当前该领域的世界最好效果,并在语义可控性、图像清晰度、中国文化理解等方面展现出了显著优势。
文心 ERNIE-ViLG 2.0 通过视觉、语言等多源知识指引扩散模型学习,强化文图生成扩散模型对于语义的精确理解,以提升生成图像的可控性和语义一致性。同时,ERNIE-ViLG 2.0 首次引入基于时间步的混合降噪专家模型来提升模型建模能力,让模型在不同的生成阶段选择不同的“降噪专家”网络,从而实现更加细致的降噪任务建模,提升生成图像的质量。


FlagStudio 项目致力于贡献优秀AI生成艺术作品。此双语文生图模型项目基于 stable diffusion,由BAAI旗下的FlagAI团队提供支持,相关代码和模型权重在AltDiffusion中进行开源。

Draft是一个由工程师和设计师组成的年轻团队,我们在实际工作过程中,深刻感受到了AI生成对设计和创意工作带来的影响。
例如,过去我们团队的原画师/3D建模师/平面设计师在找灵感的时候,会上A站和Pinterest上搜索,在一些知名设计师的作品基础上构思方案。
而现在,在AI模型中只需要输入关键词,就能得到包含“创意”“设计思路”的图片,一张不满意,可以继续生成。在AI大批量生成方案的帮助下再进行设计构思,比以往手动搜集和在草稿纸上比划,我们发现新的方法更先进。



NovelAI是一项每月订阅的服务,用于人工智能辅助的写作、讲故事、虚拟陪伴,或者只是一个由GPT驱动的沙盒,供您发挥想象力。
我们的人工智能算法基于你自己的作品创造出类似人类的写作,使任何人,无论能力如何,都能创作出高质量的文学作品。通过使用我们自己的人工智能模型,在真实的文学作品上进行训练,我们的自然语言处理游乐场提供了前所未有的自由度。AI无缝地适应你的输入,保持你的观点和风格。


Disco Diffusion 是发布于 Google Colab 平台的一款利用人工智能深度学习进行数字艺术创作的工具,它是基于 MIT 许可协议的开源工具,可以在 Google Drive 直接运行,也可以部署到本地运行,目前最新的版本是 Disco Diffusion v5.2。
用白话讲 Disco Diffusion 的基本工作就是把你给出的 Prompts(提示/描述)由文字信息变成图像信息,把你用文字描述的画面「画」出来。

DALL·E2是一款基于机器学习的文本到图像人工智能艺术生成器,在网上引发了恐惧和敬畏(请参阅我们挑选的DALL·e2创作的最奇怪的人工智能艺术)。它由人工智能公司开放人工智能创建,是一种生成工具,这意味着它可以从零开始生成艺术,也可以对现有作品进行编辑或修改。它实际上并不“知道”它在创造什么,但它是基于它已经提供的6.5亿个图像和字幕组合的庞大数据库进行假设的。
这个名字是“Dali”(如萨尔瓦多)和皮克斯的“WALL-E”的组合词。顾名思义,这是该工具的第二次迭代,似乎是对第一次迭代的重大改进,第一次迭代往往会生成颗粒状图像,而且需要很长时间。
它绝不是唯一一个基于文本提示的生成性人工智能艺术创作者。Artbreeder最近推出了Artbreedr拼贴画,它将文本提示与拼贴画般的设计过程相结合。有可能使DALL·E 2与众不同的是,结果似乎避免了通常与人工智能艺术相关的神秘谷效应。

Tiamat是一款人工智能绘画(AI绘画)工具,其模型和算法完全都是国内本土研发的,操作也很简单,只要输入你想要的画面关键词,然后等待5分钟就可以一幅不错的艺术画作。
Tiamat其实相当于支持中文的强化版 Disco Diffusion,生成图片的速度非常快,操作也很简单。
输入关键词,然后等待5分钟就可以一幅不错的艺术画作。同时,大家还可以调整类似 生成数量、图片比例等简单参数指令。
这款工具还有一个更高阶的玩法,可以以某张照片或草稿图作为垫图,让AI基于这张垫图进行二次创作。目前,Tiamat正在内测中。

Parti,全名叫「Pathways Autoregressive Text-to-Image」,是谷歌大脑老大Jeff Dean提出的多任务AI大模型蓝图Pathway的一部分。 Parti是一个自回归模型,它的方法首先将一组图像转换为一系列代码条目,类似于拼图。然后将给定的文本提示转换为这些代码条目并「拼成」一个新图像。 换言之,Parti将「文本到图像的生成」转换成一个「序列到序列」的建模问题,类似于机器翻译——这使得它能够受益于大型语言模型(如PaLM),这对于处理长而复杂的文本提示和生成高质量的图像至关重要。 在这种情况下,目标输出是图像token的序列,而不是另一种语言的文本token。 Parti通过使用功能强大的图像标记器「ViT-VQGAN」将图像编码为离散token序列,并利用其重建图像token序列的能力,使其成为高质量、视觉多样化的图像。

6pen 支持图像尺寸,参考图,随机种子等核心功能。另外,6pen支持中文,而且汇总了不同的绘画风格,用户在输入文字描述的同时,还可以选择水墨画、油画、素描等风格,同时还可以选择仙境、赛博朋克、超现实等风格修饰。
根据官方介绍,6pen还支持将你生成的作品投稿到有奖展览,在社区中展示,以创造更多价值。

无界版图是杭州超节点信息科技有限公司创立的数字版权在线拍卖平台,依托区块链技术在资产确权、拍卖⽅⾯的优势,全面整合全球优质艺术资源,致力于为艺术家、创作者提供数字作品的版权登记、保护、使⽤与拍卖等⼀整套解决⽅案,同时也是新媒体、设计、⼴告、各类垂直⾏业及个⼈⽤户购买诸如摄影、插画、纯艺术、数字艺术的聚集地。 杭州超节点信息科技有限公司目前已发展成集资讯内容、线下活动、培训、加速器和区块链技术落地应用于一体的生态体平台,全网覆盖用户超100万人,遍及中国大陆、韩国、日本、美国、香港等国家和地区。

盗梦师是一个能根据输入文本生成图片的 AI 平台,属于AIGC(AI-Generated Content,即人工智能生成内容)的分支,由蓝振忠博士带领的西湖大学深度学习实验室和西湖心辰科技有限公司共同推出。
在用户发挥想象,输入文字描述后,盗梦师便可生成1:1、9:16和16:9三种比例的图片,还有24种绘画风格可以选择——除了基础的油画、水彩、素描等绘画种类,还包括赛博朋克、蒸汽波、像素艺术、吉卜力和 CG 渲染等特别风格。
如果用户有明确想要生成的艺术家风格,还能在毕加索、梵高、莫奈等11位艺术家中进行选择。
[1] 封神榜团队开源代码参考 https://github.com/IDEA-CCNL/stable-diffusion-webui
[2] 封神榜团队开源太乙模型 https://huggingface.co/IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1
[3] 【腾讯文档】太乙绘画使用手册1.1 https://docs.qq.com/doc/DWklwWkVvSFVwUE9Q
[4] AI画《三体》名场面 https://www.bilibili.com/video/BV1b14y1W7iq
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h