aigc-apps / sd-webui-EasyPhoto

📷 EasyPhoto | Your Smart AI Photo Generator.
Apache License 2.0
4.9k stars 388 forks source link

[User can set basemodel when training/inference & support multi controlnet dir/path ]「建议」建议提供自定义底模和ControlNet模型的位置 #30

Closed 1099271 closed 1 year ago

1099271 commented 1 year ago

在使用EasyPhoto的时候,建议可以保留入口,把用户基于Lora训练的底模路径填入,这样就不需要从阿里云的oss下载chilloutMix了,而且大部分用户一般接触这个插件,基本上都安装过ControlNet了,也可以在外层保留ControlNet的模型自定义路径,这样也不需要重复去下载模型了,现在把底模和各个ControlNet都下载,既浪费作者的带宽,也浪费用户的存储空间。

newstargo commented 1 year ago

我也指定了路径,下载了好几个小时,现在打开还是爆显存,不知如何是好呢

bubbliiiing commented 1 year ago

在使用EasyPhoto的时候,建议可以保留入口,把用户基于Lora训练的底模路径填入,这样就不需要从阿里云的oss下载chilloutMix了,而且大部分用户一般接触这个插件,基本上都安装过ControlNet了,也可以在外层保留ControlNet的模型自定义路径,这样也不需要重复去下载模型了,现在把底模和各个ControlNet都下载,既浪费作者的带宽,也浪费用户的存储空间。

抱歉,我们其实去检索了controlnet 模型所在的路径,如果没有文件才会开始下载,我们可能不太了解当前用户的情况,现在是一般把这些模型不放在models/ControlNet中吗?

其实这个下载主要是为了方便,因为中间有很多执行流程,为了防止同学们报错。

bubbliiiing commented 1 year ago

我也指定了路径,下载了好几个小时,现在打开还是爆显存,不知如何是好呢

莫急,我和你一样是两张3060,肯定是能跑通的,我看你之前的报错,我分析下来应该是因为输入图片分辨率非常大,是这样吗?

bubbliiiing commented 1 year ago

在使用EasyPhoto的时候,建议可以保留入口,把用户基于Lora训练的底模路径填入,这样就不需要从阿里云的oss下载chilloutMix了,而且大部分用户一般接触这个插件,基本上都安装过ControlNet了,也可以在外层保留ControlNet的模型自定义路径,这样也不需要重复去下载模型了,现在把底模和各个ControlNet都下载,既浪费作者的带宽,也浪费用户的存储空间。

自定义底模确实可以考虑开放出来,这个我需要和同事商量一下以怎样的形式。

MoJIeAIGC commented 1 year ago

controlnet的模型一般都在 \extensions\sd-webui-controlnet\models 下面吧。

bubbliiiing commented 1 year ago

理解了,我们已经知道问题了,其实就是原图太大导致超分爆显存,我们会在下个版本做个更新,如果现在试用的话可以把这行进行删除。 https://github.com/aigc-apps/sd-webui-EasyPhoto/blob/main/scripts/preprocess.py 123行开始。

# 根据质量得分、图像大小去判断哪些图片进行codeformer
if (selected_scores[index] < 0.60 or np.shape(sub_image)[0] < 512 or np.shape(sub_image)[1] < 512) and codeformer_num < max_codeformer_num:
    sub_image = Image.fromarray(cv2.cvtColor(portrait_enhancement(sub_image)[OutputKeys.OUTPUT_IMG], cv2.COLOR_BGR2RGB))
    codeformer_num += 1
bubbliiiing commented 1 year ago

不好意思,你的启动命令是什么

bubbliiiing commented 1 year ago

先执行set CUDA_VISIBLE_DEVICES=0

newstargo commented 1 year ago

先执行set CUDA_VISIBLE_DEVICES=0

谢谢,终于可以跑通了,效果是有点像,如果有参数指引,多炼几个会好些。

bubbliiiing commented 1 year ago

先执行set CUDA_VISIBLE_DEVICES=0

谢谢,终于可以跑通了,效果是有点像,如果有参数指引,多炼几个会好些。

好,感谢支持,后续还有更多的优化,效果会更好一些,还没有merge hh

wuziheng commented 1 year ago

@bubbliiiing @newstargo
OOM 问题已通过PR20合入,大家可以看看是否还有这个问题。在完全修复这些建议之前我们会保留该ISSUE

  1. 考虑自定义底模路径
  2. 添加export 限定单卡
  3. enhance OOM 【已修复】
1099271 commented 1 year ago

在使用EasyPhoto的时候,建议可以保留入口,把用户基于Lora训练的底模路径填入,这样就不需要从阿里云的oss下载chilloutMix了,而且大部分用户一般接触这个插件,基本上都安装过ControlNet了,也可以在外层保留ControlNet的模型自定义路径,这样也不需要重复去下载模型了,现在把底模和各个ControlNet都下载,既浪费作者的带宽,也浪费用户的存储空间。

抱歉,我们其实去检索了controlnet 模型所在的路径,如果没有文件才会开始下载,我们可能不太了解当前用户的情况,现在是一般把这些模型不放在models/ControlNet中吗?

其实这个下载主要是为了方便,因为中间有很多执行流程,为了防止同学们报错。

同步一下当前的情况,方便开发者理解

  1. 目前底模的存储路径一般是处于 __SD_INSTALL_DIR_\models\Stable-diffusion 没错,但是会出现两个通用问题: 1-1. 一个是用户因为下载模型太多,对各类模型做子文件夹分类,比如 __SD_INSTALL_DIR_\models\Stable-diffusion\realtisc\ChilloutMix_Ni.ckpt 之类的二级子目录; 1-2. 另外一个原因是大家下载的大模型可能是该模型的其他版本,比如 chilloutMix-Ni 等;

  2. ControlNet 的存储目录大部分位于 __SD_INSTALL_DIR_\extensions\sd-webui-controlnet\models 目录中,并非上述目录。

@bubbliiiing @wuziheng

wuziheng commented 1 year ago

@LaowangNineTT @newstargo 我们试图在这个PR 引入自定义底模,并在测试中发现可以在训练完后直接更换适配新的底模也能有很好的效果 https://github.com/aigc-apps/sd-webui-EasyPhoto/pulls

wuziheng commented 1 year ago

iwEcAqNwbmcDAQTRBdAF0QiABrCjsCVUNhUjAgTucR_egLcAB9MAAAAAsWDC1wgACaJpbQoAC9IAJy-i png_720x720q90 lQLPJwHBI1i9-ZjNBgDNBgCwYchwkFYLLoUE7q1FjcC6AQ_1536_1536 png_720x720q90 这里有两个首页图,我们直接更换了底模,就可以拿到动漫化效果

aetherwu commented 1 year ago

在使用EasyPhoto的时候,建议可以保留入口,把用户基于Lora训练的底模路径填入,这样就不需要从阿里云的oss下载chilloutMix了,而且大部分用户一般接触这个插件,基本上都安装过ControlNet了,也可以在外层保留ControlNet的模型自定义路径,这样也不需要重复去下载模型了,现在把底模和各个ControlNet都下载,既浪费作者的带宽,也浪费用户的存储空间。

抱歉,我们其实去检索了controlnet 模型所在的路径,如果没有文件才会开始下载,我们可能不太了解当前用户的情况,现在是一般把这些模型不放在models/ControlNet中吗?

其实这个下载主要是为了方便,因为中间有很多执行流程,为了防止同学们报错。

我这里默认 ControlNet 模型在 extensions/sd-webui-controlnet/models 下。

wuziheng commented 1 year ago

@bubbliiiing 那我们是不是可以添加一个列表,默认去这些路径里面找模型control or base,然后列表让开源同学们不断补充

DONE with PR 50