不知不觉,又搬了半年的砖,不出意外的又拖延了更新。
搬砖并不可怕,可怕的是为什么搬砖,可悲的是又进一步拉高了我的极限和侮辱我的三观
回正题
AI 潮流当下,玩玩是必须的,了解和运用是自然的
否则, 在听到一些自以为是的小丑的言论时, 就没有那么多笑点可发掘了
拖延了几个月的文章,先更一篇占位, 开篇先记录下最基础也相对实用(经济)的一些技巧:
本着 模型资源最大化共享复用
和 磁盘最小化占用
的立场, 需要稍微对环境做一些简单配置
以下内容, 相对需要一点 linux 基础 和 macos 环境了解, 主要以自身情况为切入点举例
基本环境配置
set SHARED_HOME=~/ai/shared
set SHARED_COMFYUI=$SHARED_HOME/comfyui
set SD_HOME=~/ai/sd
set SD_COMFYUI_HOME=$SD_HOME/ComfyUI
set SD_WEBUI_HOME=$SD_HOME/stable-diffusion-webui
set CACHE_HOME=~/.cache
set INSIGHTFACE_HOME=~/.insightface
ComfyUI 相关
共享模型路径优化
- 插件
was-node-suite-comfyui
依赖的clipseg分割模型
注意: 插件安装后, 正常使用一次
CLIPSeg Model Loader
(CLIP分割模型加载器
) 后, 才会自动下载 CIDAS/clipseg-rd64-refined 的项目代码到本地缓存目录
mkdir -p $SD_COMFYUI_HOME/models/clipseg
ln -s $CACHE_HOME/huggingface/hub/models--CIDAS--clipseg-rd64-refined $SD_COMFYUI_HOME/models/clipseg/models--CIDAS--clipseg-rd64-refined
- 插件
comfyui_controlnet_aux
依赖的预处理器
注意: 插件安装后, 正常使用一遍 (把所有预处理器都使用一次) 后, 才会有以下的这些自动下载的模型文件
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/openpose/yolox_l.onnx $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/yzd-v/DWPose/yolox_l.onnx
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/openpose/dw-ll_ucoco_384.onnx $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/yzd-v/DWPose/dw-ll_ucoco_384.onnx
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/hed/ControlNetHED.pth $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/ControlNetHED.pth
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/normal_bae/scannet.pt $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/scannet.pt
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/midas/dpt_hybrid-midas-501f0c75.pt $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/dpt_hybrid-midas-501f0c75.pt
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/oneformer/150_16_swin_l_oneformer_coco_100ep.pth $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/150_16_swin_l_oneformer_coco_100ep.pth
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/lineart/sk_model.pth $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/sk_model.pth
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/lineart/sk_model2.pth $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/sk_model2.pth
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/pidinet/table5_pidinet.pth $SHARED_COMFYUI/controlnet_aux_annotator_ckpts/lllyasviel/Annotators/table5_pidinet.pth
- 插件
comfyui_segment_anything
依赖的模型文件
ln -s $SHARED_HOME/models/sam $SD_COMFYUI_HOME/models/sams
ln -s $SHARED_HOME/models/grounding-dino $SD_COMFYUI_HOME/models/grounding-dino
- 插件
ReActor
依赖的模型文件
ln -s $INSIGHTFACE_HOME $SD_COMFYUI_HOME/models/insightface
ln -s $SD_WEBUI_HOME/models/Codeformer/codeformer-v0.1.0.pth $SD_COMFYUI_HOME/models/facerestore_models/codeformer.pth
ln -s $SD_WEBUI_HOME/models/GFPGAN/GFPGANv1.4.pth $SD_COMFYUI_HOME/models/facerestore_models/GFPGANv1.4.pth
- 插件
ComfyUI_toyxyz_test_nodes
依赖的模型文件
注意: 需要先安装
ComfyUI_IPAdapter_plus
插件并正常可用后 (因复用的是这个插件自动下载到自己插件目录内的模型文件)
ln -s $SD_COMFYUI_HOME/custom_nodes/ComfyUI_IPAdapter_plus/models $SD_COMFYUI_HOME/custom_nodes/ComfyUI_toyxyz_test_nodes/CaptureCam/models
- 插件
ComfyUI-AnimatedDiff-Evolved
检索路径优化 (改为可支持自定义)
此插件 硬编码 了三个关键的检索路径, 不支持自定义修改, 只能手工调整下其源码, 使其支持 ComfyUI
的 extra_model_paths.yaml
的自定义控制
- 修改
ComfyUI
的folder_paths.py
, 在文件头部的合适位置 (folder_names_and_paths
声明定义之后即可),补充以下几条检索路径定义:
folder_names_and_paths["AnimateDiffEvolved_Models"] = ([os.path.join(models_dir, "animatediff_evolved_models")], supported_pt_extensions)
folder_names_and_paths["AnimateDiffMotion_LoRA"] = ([os.path.join(models_dir, "animatediff_motion_lora")], supported_pt_extensions)
folder_names_and_paths["AnimateDiffEvolved_video_formats"] = ([os.path.join(base_path, "video_formats")], ".json")
- 修改
custom_nodes/ComfyUI-AnimatedDiff-Evolved/animated/model_utils.py
, 调整检索路径的定义逻辑
# register motion models folder(s)
# folder_paths.folder_names_and_paths[Folders.ANIMATEDIFF_MODELS] = (
# [
# str(Path(__file__).parent.parent / "models")
# ],
# folder_paths.supported_pt_extensions
# )
folder_paths.add_model_folder_path(Folders.ANIMATEDIFF_MODELS, str(Path(__file__).parent.parent / "models"))
# register motion LoRA folder(s)
# folder_paths.folder_names_and_paths[Folders.MOTION_LORA] = (
# [
# str(Path(__file__).parent.parent / "motion_lora")
# ],
# folder_paths.supported_pt_extensions
# )
folder_paths.add_model_folder_path(Folders.MOTION_LORA, str(Path(__file__).parent.parent / "motion_lora"))
#Register video_formats folder
# folder_paths.folder_names_and_paths[Folders.VIDEO_FORMATS] = (
# [
# str(Path(__file__).parent.parent / "video_formats")
# ],
# [".json"]
# )
folder_paths.add_model_folder_path(Folders.VIDEO_FORMATS, str(Path(__file__).parent.parent / "video_formats"))
各种问题
ModuleNotFoundError: No module named ’torchvision.transforms.functional_tensor'
编辑 basicsr
模块的文件 ./venv/lib/python3.10/site-packages/basicsr/data/degradations.py
调整 rgb_to_grayscale
的导出包名
我习惯基于
venv
虚拟环境(其他虚拟环境 或 非虚拟环境, 换对应lib
目录即可)
# from torchvision.transforms.functional_tensor import rgb_to_grayscale
from torchvision.transforms.functional import rgb_to_grayscale
WebUI 相关
共享模型路径优化
- 插件
openpose-editor
依赖的模型文件
ln -s $SD_WEBUI_HOME/extensions/sd-webui-controlnet/annotator/downloads/openpose $SD_WEBUI_HOME/models/openpose
- 插件
sd-webui-segment-anything
依赖的模型文件
注意: 由于此插件内置了
grounding-dino
的 2 个模型的对应配置文件, 这里就只把两个模型映射过来即可
ln -s $SHARED_HOME/models/sam $SD_WEBUI_HOME/models/sam
ln -s $SHARED_HOME/models/grounding-dino/groundingdino_swint_ogc.pth $SD_WEBUI_HOME/extensions/sd-webui-segment-anything/models/grounding-dino/groundingdino_swint_ogc.pth
ln -s $SHARED_HOME/models/grounding-dino/groundingdino_swinb_cogcoor.pth $SD_WEBUI_HOME/extensions/sd-webui-segment-anything/models/grounding-dino/groundingdino_swinb_cogcoor.pth
- 插件
sd-webui-roop
依赖的模型文件
ln -s $INSIGHTFACE_HOME $SD_WEBUI_HOME/models/roop
- 插件
sd-webui-reactor
依赖的模型文件
ln -s $INSIGHTFACE_HOME $SD_WEBUI_HOME/models/insightface