草庐IT

一分钟玩转Stable Diffusion

小飞的大肥牛 2023-04-18 原文

用计算机视觉模型生成各种各样的图片已经不是什么新鲜的事了,但是最近新出的一款AI绘画模型Stable Diffusion确实惊艳到了各位小伙伴,无论是从软件的使用难度还是绘画生成的结果,都有可圈可点的地方,下面我们就一起尝试用该AI绘画软件画出一幅精美的图片。

第一步:配置Python环境和安装Git软件

Stable Diffusion模型需要在Python3.10.6及以上的环境中才能顺利运行模型,所以在正式安装模型之前,我们需要安装Python3.10.6,下面我介绍在conda环境下安装python虚拟环境并使用在Stable Diffusion模型中的过程:

1、使用conda安装符合条件的python虚拟环境

conda create --name my_python_name python=3.10.8

目前python的环境已经更新到了3.11.2版本了,但是使用上述命令新建一个python=3.11.2版本的环境将无法实现,在错误提示栏中,会出现目前使用conda命令可以现在的版本,选择符合环境配置条件的版本即可;

2、更改环境变量,是计算机目前可以识别的python环境为3.10.8版本的(我的虚拟环境的名字为diffusion),更改结果如下

3、然后下载git,下载网址为Git - Downloading Package (git-scm.com)

第二步:下载Stable-Diffusion模型包

1、在github开源仓库中下载Stable-Diffision-webui包,地址为:GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI

在下载好模型的压缩包并解压后,出现如下界面,点击红色箭头指向的文件并运行;

 

 点击之后,会弹出一个command窗口,这可能需要花费大量的时间等待模型下载对应的代码包和参数包,在下载的过程中可能会出现各种各样的错误,此时不要惊慌,如果出现错误后有三种办法:

①重新在运行一次;

②如果重新运行还是不行,关闭或者打开魔法上网;

③根据出现错误的提示,手动打开无法下载的网页,然后将下载的数据报放入命令行中提示的目标文件夹下;(比如在安装过程中需要在Stable-diffusion文件夹下手动输入checkpoint文件夹)

 2、如果需要中文语言包,可以下载如下中文语言包扩展,下载界面网址为:

GitHub - VinsonLaro/stable-diffusion-webui-chinese: stable-diffusion-webui 的汉化版本

在该网址中用详细的安装和使用方法,如下图:

 但是在安装在安装过程中,可能会出现安装的目标文件夹变为:../temp/../stable-diffusion-webui-chinese的情况,如果出现该情况就无法在扩展栏中找到对应的组件,这时只需要把temp文件夹删除,重新下载一次就好。(下载过程中最好魔法上网,下面好多步骤都需要如此,如果模型上网时总是报错,那就关闭魔法上网重试,反正怎么行得通就怎么来);

第三步:人物面部清晰化和人物肤色调调整

 按道理,完成第二步,便可以进行AI绘图了,但是,在完成设置完参数和输入prompt描述词后,点击生成图像(如果选择了面部修复和分辨率调整选项)最后生成的图像任务的肤色是灰色的,而且如很有可能在图片生成的最后一刻报错,图片无法顺利生成,这是什么原因呢,这里我列举了两个原因:

①对于面部修复模型codeformer,在第一次生成图像时,由于某些原因,coderformer文件夹下的参数模型下载到一半便突然停止下载了,导致后面运行时,在图像生成过程中不会自动再次下载模型参数,而原来的模型参数不完整,导致模型无法运行,从而面部修补无法进行,组中程序报错,图片无法生成;

②其他软硬件错误,如显存不够,这可以将图片的大小和分辨率调低;

现在步入正题,如何调整任务肤色:

1、在Stable-diffusion-master文件夹下新建一个VAE文件夹,然后下载对应的模型参数放入该文件夹;

stabilityai/sd-vae-ft-mse-original at main

2、在画图界面中的设置栏中选择stable-diffusion选项卡,然后选择模型的VAE属性,选择刚才导入的模型中的一个;

3、保存设置,重新加载UI界面;

4、在更新设置后第一次绘图时,模型还需要重新下载新的模型,这里需要魔法上网,等待几分钟,便可以看到一张美丽冻人的小姐姐出现啦!(当然,参数设置和prompt描述词可以根据自己的喜好在网上搜索呀)

有关一分钟玩转Stable Diffusion的更多相关文章

  1. 三分钟集成 TapTap 防沉迷 SDK(Unity 版) - 2

    三分钟集成Tap防沉迷SDK(Unity版)一、SDK介绍基于国家对上线所有游戏必须增加防沉迷功能的政策下,TapTap推出防沉迷SDK,供游戏开发者进行接入;允许未成年用户在周五、六、日以及法定节假日晚上8:00-9:00进行游戏,防沉谜时间段进入游戏会弹窗进行提示!开发环境要求:Unity2019.4或更高版本iOS10或更高版本Android5.0(APIlevel21)或更高版本🔗Unity集成Demo参考链接🔗UnityTapSDK功能体验APK下载链接二、集成前准备1.创建应用进入开发者后台,按照提示开始创建应用;2.开通服务在使用TDS实名认证和防沉迷服务之前,需要在上面创建的应

  2. ruby-on-rails - 应用程序显示错误的小时和分钟 - 2

    起初:那不是错误区域的问题。在irb和数据库中,一切都很好。当我想在我的View中显示日期(created_at、updated_at和所有由我自己在每个模型中定义的日期)时,就会出现问题。我试图在application.rb中设置时区并从初始化程序中删除时间格式,但这并没有解决我的问题。Annotategem生成的架构信息:#created_at:datetime#updated_at:datetime#publish_at:datetime来自irb:1.9.2-p290:004>Time.zone=>(GMT+00:00)UTC1.9.2-p290:005>Time.zone.n

  3. ruby - 如何让 Ruby 每 10 分钟运行一次任务? - 2

    我想每10分钟执行一次cron作业,但我的系统只执行1小时。所以我正在寻找一种方法来做到这一点。我看过Timer和sleep但我不确定如何执行此操作,甚至不知道如何实现此操作。 最佳答案 看看http://rufus.rubyforge.org/rufus-scheduler/rufus-scheduler是一个用于调度代码片段(作业)的Rubygem。它了解在特定时间、在特定时间、每x次或仅通过CRON语句运行作业。rufus-scheduler不能替代cron/at,因为它在Ruby内部运行。

  4. 上传到 S3 时 Ruby Backup gem 失败。 37 分钟后连接重置 - 2

    备份为250MB。我认为这不是很大,但问题似乎随着规模的增加而增加。从下面的备份gem登录。注意时间跨度;上传大约37分钟后,我收到了连接重置。[2015/10/3009:20:40][message]Storage::S3startedtransferring'2015.10.30.09.20.01.myapp_postgres.tar'tobucket'myapp-backups'.[2015/10/3009:57:06][error]ModelError:BackupforBackupPostgreSQL(myapp_postgres)Failed![2015/10/3009:5

  5. ruby - 如何在 ruby​​ 中解析天/小时/分钟/秒? - 2

    是否有gem或其他东西来解析像“4h30m”“1d4h”这样的字符串——有点像JIRA或任务规划器中的估计,也许,国际化? 最佳答案 发布第二个答案,因为慢性(这是我最初的答案所建议的)不会给你时间跨度,而是时间戳。这是我的解析器。classTimeParserTOKENS={"m"=>(60),"h"=>(60*60),"d"=>(60*60*24)}attr_reader:timedefinitialize(input)@input=input@time=0parseenddefparse@input.scan(/(\d+)(\

  6. 奇葩营销之看各品牌如何玩转“营销疯学” - 2

    相信有很多人和我一样,最近的快乐都来自于《黑暗荣耀2》。   令人奇怪的是,但比起故事的主线,剧中妍珍等配角的”发疯”片段却成为了网友造梗的来源。 “妍珍疯驴子”“妍珍呐””“黑暗荣耀演我每天精神状态”等。让这部剧话题热度持续上涨。与《黑暗荣耀2》同理,最近的引发热度的网络事件:张大大的抓马直播、汪小菲与大S的口水战、v我50的肯德基疯四文学,都主打一股子歇斯底里的疯劲。  为什么邀请全民围观“发疯”,也能成为一种宣传方式?营销“疯学”为何走红?又给品牌什么启示?营销“疯学”的前世今生营销“疯学”来源于当代最实用的互联网文体——发疯文学。而发疯文学最早来源于各大古早影视剧。现在的发疯文学被网友

  7. ruby - 每当 gem 并从偏移量开始每 n 分钟安排一次作业 - 2

    出于惊人的目的,我尝试将作业安排为每5分钟运行一次的2分钟偏移。那就是我想要1个作业运行1,6,11,16..而另一个运行在2,7,12,17...我找不到执行此操作的示例。所以我尝试了:every5.minutes,:at=>1docommand"echo'youcanuserawcronsytaxtoo'"end这似乎可行,但所有“:at”示例看起来都期待字符串格式的时间。以上是否有效或恰好有效并且每个选项并不真正支持开始时间。 最佳答案 听起来这两个工作之间存在依赖关系,所以我认为有两种方法可以处理这个问题。如果你想在1、6、

  8. JavaScript函数到当前时间(从时期)到最近的分钟 - 2

    我一直在墙上撞到墙上,试图获得与此PHP片段相当的JavaScript:我一直在尝试这一点:vartimeInMin=newDate().getTime()/60000;vartimestamp=Math.round(timeInMin);varkey=md5(timestamp+'uniqueID');利用MD5脚本这里我只需要锁定和钥匙才能匹配。对我来说似乎很简单。我究竟做错了什么?看答案正如我之前所说的,如果时间不匹配,它将不会产生相同的哈希。在这种情况下,我要做的是找到将时间从PHP转移到客户端的方法,以便他们可以使用相同的时间。php侧:客户端:vartimestamp=getCoo

  9. ruby-on-rails - 在 Ruby 中减去日期并得到以分钟为单位的差异 - 2

    我如何在Ruby中减去两个不同的UTC日期,然后得到以分钟为单位的差异?谢谢 最佳答案 如果减去两个Date或DateTime对象,结果是一个Rational表示它们之间的天数。你需要的是:a=Date.new(2009,10,13)-Date.new(2009,10,11)(a*24*60).to_i#2880minutes或a=DateTime.new(2009,10,13,12,0,0)-DateTime.new(2009,10,11,0,0,0)(a*24*60).to_i#3600minutes

  10. ruby - 如何在 Ruby 中将时间舍入到最接近的 15 分钟? - 2

    有没有一种简单的方法可以将时间四舍五入到最接近的15分钟?这就是我目前正在做的事情。有更简单的方法吗?t=Time.newrounded_t=Time.local(t.year,t.month,t.day,t.hour,t.min/15*15) 最佳答案 您说的是“向下舍入”,所以我不确定您实际上是在寻找回合数还是底数,但这是执行这两项操作的代码。如果将round_off和floor方法添加到Time类,我认为这样的内容读起来真的很好。额外的好处是您可以更轻松地按任何时间分区舍入。require'active_support/cor

随机推荐