主页:https://github.com/wjxpro
邮箱:804359553@qq.com
文章目录
对于只想体验stable-diffusion的朋友,可以参考这篇教程1使用网页版。对于想要进行深入研究、要进行本地版部署的朋友,现有教程大多使用基于WebUI版23以及非官方版4复现的,也有一些是基于官方版本56复现的,但是其版本已经过时,因此我重新复现了官方的最新版(2023年4月10日),希望能帮助到大家。
windows环境下部署,需要有显卡,显存大于4G,显存大小影响可以生成图片的最大尺寸。工程最终大小约为7GB,请注意存储位置。
请自行配置Python运行环境(
Anaconda、VS Code)、CUDA、cudnn,注意修改国内镜像源,并保证可用。
下载工程源码并解压,关于国内无法访问github,除了挂代理也可以通过修改DNS加速,工具下载地址。
下载权重模型,只下载sd-v1-4.ckpt(约3.97GB)就可以。下载完成后,将其放在工程根目录下。
下载openai的分词器clip-vit-large-patch14,本人猜测这个模型用于将输入的prompt转换为stable-diffusion的输入特征。需要下载的内容包括:
- pytorch_model.bin(约1.59GB)
- config.json
- merges.txt
- preprocessor_config.json
- special_tokens_map.json
- tokenizer.json
- tokenizer_config.json
- vocab.json
下载完成后,在工程根目录创建文件夹openai\clip-vit-large-patch14,将下载的内容放入其中。
下载安全性检查器。这个模型用于检测生成的内容是否为NSFW内容,如果是,则将其替换为assets\rick.jpeg(你被骗了)。需要下载的内容包括:
- pytorch_model.bin(约1.13GB)
- config.json
下载完成后,在工程根目录创建文件夹CompVis\stable-diffusion-safety-checker,将下载的内容放入其中。
参照源码README,在Anaconda环境下,可以使用如下命令创建并激活ldm虚拟环境:
conda env create -f environment.yaml
conda activate ldm
此处可能产生两个报错:
ImportError: cannot import name 'SAFE_WEIGHTS_NAME' from 'transformers.utils'environments.yaml,将diffusers改为diffusers==0.12.1。Pip subprocess error: ERROR: Command errored out with exit status 128: git fetch -q ...github上下载的子工程,所以这个问题需要检查当前网络环境对github的访问是否通畅,然后重新下载:# 查看已存在环境
conda env list
# 先切换到base环境
conda activate base
# 删除ldm
conda env remove --name ldm
也可以通过以下命令更新环境:conda env update -f environment.yaml
在工程根目录下,激活ldm虚拟环境,然后直接运行script中的脚本即可。如果使用命令行运行,一个示例命令如下:
python scripts/txt2img.py --ckpt "sd-v1-4.ckpt" --prompt "a photograph of an astronaut riding a horse" --plms --H 256 --W 256
以文本生成图片(script\txt2img.py)为例:
| 超参数 | 解释 |
|---|---|
ckpt | 模型权重文件路径(相对于根目录) |
prompt | 生成图像需要的文本提示 |
H | 生成图像的高 |
W | 生成图像的宽 |
n_iter | 一次运行进行n次采样 |
n_samples | 一次采样生成n张图像 |
seed | 随机数种子,修改其值可生成不同的结果 |
skip_grid | 不生成拼接的图像,拼接的图像由n_iter行n_samples列构成 |
skip_save | 不生成独立的图像 |
outdir | 结果保存的文件夹路径 |
plms | 一个采样器,暂未深入研究 |
可以直接修改超参数的默认值减少命令行输入内容,一个修改示例如下:

| 推荐修改的超参数 | 推荐修改值 |
|---|---|
ckpt | sd-v1-4.ckpt |
plms | True |
H | 256(适用于显存小的显卡) |
W | 256(适用于显存小的显卡) |
安全检查器有1GB多,不想下载的朋友可以按如下方法进行修改。(NSFW警告)
# load safety model内容:# safety_model_id = "CompVis/stable-diffusion-safety-checker"
# safety_feature_extractor = AutoFeatureExtractor.from_pretrained(safety_model_id)
# safety_checker = StableDiffusionSafetyChecker.from_pretrained(safety_model_id)
check_safety函数:# def check_safety(x_image):
# safety_checker_input = safety_feature_extractor(numpy_to_pil(x_image), return_tensors="pt")
# x_checked_image, has_nsfw_concept = safety_checker(images=x_image, clip_input=safety_checker_input.pixel_values)
# assert x_checked_image.shape[0] == len(has_nsfw_concept)
# for i in range(len(has_nsfw_concept)):
# if has_nsfw_concept[i]:
# x_checked_image[i] = load_replacement(x_checked_image[i])
# return x_checked_image, has_nsfw_concept
x_checked_image, has_nsfw_concept = check_safety(x_samples_ddim)
修改为:
x_checked_image = x_samples_ddim
# print("Creating invisible watermark encoder (see https://github.com/ShieldMnt/invisible-watermark)...")
# wm = "StableDiffusionV1"
# wm_encoder = WatermarkEncoder()
# wm_encoder.set_watermark('bytes', wm.encode('utf-8'))
# img = put_watermark(img, wm_encoder)
默认prompt: a painting of a virus monster playing guitar

完
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这
如果我使用ruby版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
有人知道在发布新版本的Ruby和Rails时收到电子邮件的方法吗?他们有邮件列表,RubyonRails有一个推特,但我不想听到那些随之而来的喧嚣,我只想知道什么时候发布新版本,尤其是那些有安全修复的版本。 最佳答案 从therailsblog获取提要.http://weblog.rubyonrails.org/feed/atom.xml 关于ruby-on-rails-如何在发布新的Ruby或Rails版本时收到通知?,我们在StackOverflow上找到一个类似的问题:
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
如果我一直输入geminstallrails使用不同版本的Rails会怎样?例如,我可以输入:geminstallrails--verson3.2.10或geminstallrails这给了我版本3.2.12。问题每次安装都会覆盖之前的吗?它会删除所有旧文件并添加我正在安装的新版本吗?或者如果我运行它两次,它会保留一些文件吗?我正在使用Ubuntu。 最佳答案 它将安装两个独立的gem。实际的可执行文件rails将调用最新版本。你可以覆盖它__例如,rails_3.2.10_将执行Rails3.2.10。bundler顺便说一下,如
我的Rails站点使用了一个确实不是很好的gem。每次我需要做一些新的事情时,我最终不得不花费与向实际Rails项目添加代码一样多的时间来为gem添加功能。但我不介意,我将我的Gemfile设置为指向我的gem的GitHub分支(我尝试提交PR,但维护者似乎已经下台)。问题是我真的没有找到一种合理的方法来测试我添加到gem的新东西。在railsc中测试它会特别好,但我能想到的唯一方法是a)更改~/.rvm/gems/.../foo。rb,这看起来不对或者b)升级版本,推送到Github,然后运行bundleup,这除了耗时之外显然是一场灾难,因为我不确定我所做的promise是否正
我刚刚安装了带有RVM的Ruby2.2.0,并尝试使用它得到了这个:$rvmuse2.2.0--defaultUsing/Users/brandon/.rvm/gems/ruby-2.2.0dyld:Librarynotloaded:/usr/local/lib/libgmp.10.dylibReferencedfrom:/Users/brandon/.rvm/rubies/ruby-2.2.0/bin/rubyReason:Incompatiblelibraryversion:rubyrequiresversion13.0.0orlater,butlibgmp.10.dylibpro