当前位置: 首页 > news >正文

工信部网站备案查询 验证码网站建设方案进行工期安排

工信部网站备案查询 验证码,网站建设方案进行工期安排,门户网站建设 管理 自查报告,国外优秀企业网站文章目录 Stable Diffusion安装AnimateDiff插件适配sdxl模型适配 Stable Diffusion使用插件安装界面设置基础文生图加入lora的文生图 Stable Diffusion安装 我的情况比较特殊#xff0c;显卡版本太老#xff0c;最高也就支持cuda10.2#xff0c;因此只能安装pytorch1.12.1显卡版本太老最高也就支持cuda10.2因此只能安装pytorch1.12.1并且无法安装xformers。 在安装好虚拟环境和对应pytorch版本后按照github教程安装stable diffusion webui即可在webui.sh中将use_venv1 (默认) 修改为use_venv0以在当前激活的虚拟环境中运行webui然后执行bash webus.sh安装相关依赖。 针对显卡使用情况可在webui-user.sh中设置可见显卡export CUDA_VISIBLE_DEVICES0,1,2并在执行webui.py时在命令行中通过--device-id1指定具体的使用设备。 为了使用最新的模型和插件需要做出以下适配: AnimateDiff插件适配 该插件的原理是在调用和完成时分别向原始模型中注入inject和删除restore时间步模块从而生成连续变化的GIF由于整体版本过老直接执行该插件会报没有insert和pop方法的错误因此需要在animatediff_mm.py文件中手动实现这两个函数需要注意insert和pop的操作和通常理解不一样 def inject(self, sd_model, model_namemm_sd_v15.ckpt):unet sd_model.model.diffusion_modelself._load(model_name)self.gn32_original_forward GroupNorm32.forwardgn32_original_forward self.gn32_original_forward# self.tes_original_forward TimestepEmbedSequential.forward# def mm_tes_forward(self, x, emb, contextNone):# for layer in self:# if isinstance(layer, TimestepBlock):# x layer(x, emb)# elif isinstance(layer, (SpatialTransformer, VanillaTemporalModule)):# x layer(x, context)# else:# x layer(x)# return x# TimestepEmbedSequential.forward mm_tes_forwardif self.mm.using_v2:logger.info(fInjecting motion module {model_name} into SD1.5 UNet middle block.)# unet.middle_block.insert(-1, self.mm.mid_block.motion_modules[0])# unet.middle_block.add_module(new_module, self.mm.mid_block.motion_modules[0])# unet.middle_block.appendself.mm.mid_block.motion_modules[0])unet.middle_block unet.middle_block[0:-1].append(self.mm.mid_block.motion_modules[0]).append(unet.middle_block[-1])# n len(unet.middle_block._modules)# index -1# if index 0:# index n# for i in range(n, index, -1):# unet.middle_block._modules[str(i)] unet.middle_block._modules[str(i - 1)]# unet.middle_block._modules[str(index)] unet.middle_blockelse:logger.info(fHacking GroupNorm32 forward function.)def groupnorm32_mm_forward(self, x):x rearrange(x, (b f) c h w - b c f h w, b2)x gn32_original_forward(self, x)x rearrange(x, b c f h w - (b f) c h w, b2)return xGroupNorm32.forward groupnorm32_mm_forwardlogger.info(fInjecting motion module {model_name} into SD1.5 UNet input blocks.)for mm_idx, unet_idx in enumerate([1, 2, 4, 5, 7, 8, 10, 11]):mm_idx0, mm_idx1 mm_idx // 2, mm_idx % 2unet.input_blocks[unet_idx].append(self.mm.down_blocks[mm_idx0].motion_modules[mm_idx1])logger.info(fInjecting motion module {model_name} into SD1.5 UNet output blocks.)for unet_idx in range(12):mm_idx0, mm_idx1 unet_idx // 3, unet_idx % 3if unet_idx % 3 2 and unet_idx ! 11:# unet.output_blocks[unet_idx].insert(# -1, self.mm.up_blocks[mm_idx0].motion_modules[mm_idx1]# )# unet.output_blocks[unet_idx].add_module(new_module, self.mm.up_blocks[mm_idx0].motion_modules[mm_idx1])# unet.output_blocks[unet_idx].append(self.mm.up_blocks[mm_idx0].motion_modules[mm_idx1])unet.output_blocks[unet_idx] unet.output_blocks[unet_idx][0:-1].append(self.mm.up_blocks[mm_idx0].motion_modules[mm_idx1]).append(unet.output_blocks[unet_idx][-1])else:unet.output_blocks[unet_idx].append(self.mm.up_blocks[mm_idx0].motion_modules[mm_idx1])self._set_ddim_alpha(sd_model)self._set_layer_mapping(sd_model)logger.info(fInjection finished.)def restore(self, sd_model):self._restore_ddim_alpha(sd_model)unet sd_model.model.diffusion_modellogger.info(fRemoving motion module from SD1.5 UNet input blocks.)for unet_idx in [1, 2, 4, 5, 7, 8, 10, 11]:# unet.input_blocks[unet_idx].pop(-1)unet.input_blocks[unet_idx] unet.input_blocks[unet_idx][:-1]logger.info(fRemoving motion module from SD1.5 UNet output blocks.)for unet_idx in range(12):if unet_idx % 3 2 and unet_idx ! 11:# unet.output_blocks[unet_idx].pop(-2)unet.output_blocks[unet_idx] unet.output_blocks[unet_idx][:-2].append(unet.output_blocks[unet_idx][-1])else:# unet.output_blocks[unet_idx].pop(-1)unet.output_blocks[unet_idx] unet.output_blocks[unet_idx][:-1]if self.mm.using_v2:logger.info(fRemoving motion module from SD1.5 UNet middle block.)# unet.middle_block.pop(-2)unet.middle_block unet.middle_block[:-2].append(unet.middle_block[-1])else:logger.info(fRestoring GroupNorm32 forward function.)GroupNorm32.forward self.gn32_original_forward# TimestepEmbedSequential.forward self.tes_original_forwardlogger.info(fRemoval finished.)if shared.cmd_opts.lowvram:self.unload()sdxl模型适配 在选择sdxl模型时会收到如下报错 AssertionError: We do not support vanilla attention in 1.12.1cu102 anymore, as it is too expensive. Please install xformers via e.g. pip install xformers0.0.16然后就会自动下载模型但由于hugging face的连接问题会报这种错误 requests.exceptions.ConnectTimeout: (MaxRetryError(HTTPSConnectionPool(hosthuggingface.co, port443): Max retries exceeded with url: /laion/CLIP-ViT-bigG-14-laion2B-39B-b160k/resolve/main/open_clip_pytorch_model.bin (Caused by ConnectTimeoutError(urllib3.connection.HTTPSConnection object at 0x7fc89a4438b0, Connection to huggingface.co timed out. (connect timeout10)))), (Request ID: 9f90780e-6ae0-4531-83df-2f5052c4a1a3))这时就需要把所有下不了的模型下载到本地然后把代码里的version由模型名称改成模型路径例如将repositories/generative-models/configs/inference/sd_xl_base.yaml中的version: laion2b_s39b_b160k改成本地的/models/hugfac/CLIP-ViT-bigG-14-laion2B-39B-b160k/open_clip_pytorch_model.bin 但到这里还没完为了能正常运行需要在代码里把对于xformer的检查相关Assert部分注释掉并重新实现repositories/generative-models/sgm/modules/diffusionmodules/model.py中的attention函数 def attention(self, h_: torch.Tensor) - torch.Tensor:h_ self.norm(h_)q self.q(h_)k self.k(h_)v self.v(h_)# compute attentionB, C, H, W q.shapeq, k, v map(lambda x: rearrange(x, b c h w - b (h w) c), (q, k, v))q, k, v map(lambda t: t.unsqueeze(3).reshape(B, t.shape[1], 1, C).permute(0, 2, 1, 3).reshape(B * 1, t.shape[1], C).contiguous(),(q, k, v),)# out xformers.ops.memory_efficient_attention(# q, k, v, attn_biasNone, opself.attention_op# )k k / (k.shape[-1] ** 0.5)attn torch.matmul(q, k.transpose(-2, -1))attn torch.softmax(attn, dim-1)out torch.matmul(attn, v)out (out.unsqueeze(0).reshape(B, 1, out.shape[1], C).permute(0, 2, 1, 3).reshape(B, out.shape[1], C))return rearrange(out, b (h w) c - b c h w, bB, hH, wW, cC)Stable Diffusion使用 插件安装 点击扩展→可用→简单粗暴按星数排序 如果github无法访问可以复制链接后前面加上https://ghproxy.com/从网址安装 最终安装的部分插件如下注意需要手动把插件模型下载到对应路径下才能使用 界面设置 在设置→用户界面中对快捷设置和UItab做修改 点击右上角设置kitchen插件主题 最终效果如下 基础文生图 首先在模型左侧选择Stable Diffusion模型及其对应VAE然后输入正向和反向提示词在下面点击生成相关设置如采样方法、采样迭代次数和宽高等。 需要注意的几点 Clip跳过层设置CLIP 是用来给提示词编码的神经网络默认是使用模型最后一层的输出作为提示词的嵌入表示将其设为2就可以使用模型倒数第二层的输出作为嵌入表示。增加这一参数时可以更好地保留提示中的信息生成与提示更匹配的图片但设置的值过大也会影响编码的准确性。该参数仅适用于使用CLIP的模型即1.x模型及其派生物。2.0模型及其派生物不与CLIP交互因为它们使用OpenCLIP。将交叉关注层向上转型到float32设置遇到NAN报错或者花屏图片时可以试试。图片大小设置对于SDXL模型为了保证生成质量图片至少为1024x1024 16:9电影摄影1820x10243:2专业摄影1536x10244:3普通图片1365x1024 采样方法对SDXL 1.0来说建议使用任何DPM采样器特别是带有Karras采样器的DPM。比如DPM 2M Karras或DPM 2S a Karras 生成示例如下 加入lora的文生图 lora是一类对模型进行微调的方法是一系列参数量较小的模型在与原始模型结合后可以对生成图片做特定修饰可以理解为化妆技术。 lora的使用方法是将模型下载到models/Lora文件夹下注意最好分文件夹存放方便调用和管理 对应的前端界面如下 使用方法很简单在输入提示词后直接点击lora模型就会自动添加到输入末尾
http://www.pierceye.com/news/94025/

相关文章:

  • 专做水果的网站天门市规划建设局网站
  • 网站百度地图生成器建设一个网站可以做什么
  • 用阳寿做交易的网站建盏公司简介
  • 机械加工网站哪个好服装设计专业有前途吗
  • 深圳 企业 网站建设哪家好没有域名的网站需要备案吗
  • 深圳返利网站建设扁平化 手机网站首页
  • 郑州核酸点推vip服务网站优化标准
  • 建设银行河南分行网站邢台做网站哪里便宜
  • 网站收录原创文章wordpress新框架vue
  • 中工信融做网站怎么样凡科建站代理平台
  • 网站设计图能用ps做么dedecms 图片网站
  • 自己有服务器怎么做网站wordpress会员卡
  • 网站打不开 ...wordpress 评论表情插件
  • 网站开发框架 Wordpress网站整体设计流程
  • 深圳沙井网站建设网站建设管理工作
  • 网站广告条效果wordpress改关键词
  • 做移动网站首页软截获网站流量怎么做
  • 用dw做网站怎么添加背景图片大连网页制作培训
  • 新网站百度有审核期成都 网站建设培训班
  • 在线购物网站的设计成都网站seo费用
  • 访问国外的网站很慢wordpress 电商主题
  • 免费收录网站推广wordpress打开速度分析
  • 成都网站运营wordpress后台
  • 班级建设网站wordpress获取分类的文章
  • 北京建设官方网站常州做网站那家快
  • 网站建设源码包射阳网页设计
  • 做企业网站备案都需要什么织梦 安装网站
  • 查询网站收录命令用wordPress搭建图片库
  • 网站开发的验收标准给几个网址谢谢
  • 手表网站大全网络推广竞价