Compare commits

...
10 Commits
Author SHA1 Message Date
ZHO-ZHO-ZHO 025c8e750e 20240418 新增个人详情 2024-04-18 04:04:09 +08:00
ZHO-ZHO-ZHO 0d6d365ee8 V0.9 步数上限增加到60 2024-02-06 17:16:21 +08:00
ZHO-ZHO-ZHO 094ce70044 V0.9 增加项目图 2024-02-04 21:33:24 +08:00
ZHO-ZHO-ZHO 4fe7477efb V0.9 2024-02-04 20:34:38 +08:00
ZHO-ZHO-ZHO 9650deebd9 Update __init__.py 2024-02-04 18:26:16 +08:00
ZHO-ZHO-ZHO 028bcf58b4 Rename Advanced.py to SVD_Advanced.py 2024-02-04 18:25:54 +08:00
ZHO-ZHO-ZHO 84e91af110 Create __init__.py 2024-02-04 18:25:10 +08:00
ZHO-ZHO-ZHO 3b96930220 Create Advanced.py 2024-02-04 18:24:27 +08:00
ZHO-ZHO-ZHO ce82ed0914 Update style_template.py 2024-02-04 18:06:48 +08:00
ZHO-ZHO-ZHO 476eaa077e Create SVD_Styler.py 2024-02-04 18:06:38 +08:00
5 changed files with 174 additions and 3 deletions
+89 -2
View File
@@ -1,2 +1,89 @@
# ComfyUI-SVD-ZHO ![SVD11_](https://github.com/ZHO-ZHO-ZHO/ComfyUI-SVD-ZHO/assets/140084057/687ef467-ac9e-476a-b161-9e6f3b989220)
My Workflows + Auxiliary nodes for Stable Video Diffusion (SVD)
# ComfyUI-SVD-ZHO(WIP)
## 项目说明 | Info
- 我为 SVD 设计的 **工作流** 和 **节点** | My Workflows + Auxiliary nodes for Stable Video Diffusion (SVD)
- **版本:0.9** 节点已经可用,标准工作流正在完善,目前仅提供预览
## 复刻 [stablevideo.com](https://stablevideo.com) 的 UI 交互 | SVD1.1 工作流设计
![Dingtalk_20240204195736](https://github.com/ZHO-ZHO-ZHO/ComfyUI-SVD-ZHO/assets/140084057/93ba4ae8-7dff-4084-b5b0-b60ddf34a010)
https://github.com/ZHO-ZHO-ZHO/ComfyUI-SVD-ZHO/assets/140084057/dd0f4f25-06e1-47ee-87a4-afadfa95b921
### 与官网交互相同,提供 文生视频 和 图生视频 两种方式
- 文生视频:
1)🎞️SVD Styler:输入提示词,选择风格(17种)
2)🎞️SVD Aspect Ratio:选择宽高比(16:9、1:1、9:16 三种)、批次数
3)🎞️SVD Advanced:选择步数、运动幅度、种子
4)T2I Chooser:从生成的结果中选择一张用于生成视频
5)生成视频(水印可选)
- 图生视频
1)Load image:上传图像(16:9、16:9、1:1、9:16 三种)
2)🎞️SVD Advanced:选择步数、运动幅度、种子
3)生成视频(水印可选)
- 补充:由于官方未公开 Camera Lora 所以还未加入
## SVD1.1 辅助节点 | Nodes
![image](https://github.com/ZHO-ZHO-ZHO/ComfyUI-SVD-ZHO/assets/140084057/087614ee-6de9-4a64-97a5-716527303db7)
## 工作流 | Workflows
别急……
## 更新日志
- 20240204
- V0.9 :完成 SVD Styler,Aspect Ratio,Advanced 节点设计,初步完成标准工作流设计
- 创建项目
## Stars
[![Star History Chart](https://api.star-history.com/svg?repos=ZHO-ZHO-ZHO/ComfyUI-SVD-ZHO&type=Date)](https://star-history.com/#ZHO-ZHO-ZHO/ComfyUI-SVD-ZHO&Date)
## 关于我 | About me
📬 **联系我**:
- 邮箱:zhozho3965@gmail.com
- QQ 群:839821928
🔗 **社交媒体**:
- 个人页:[-Zho-](https://jike.city/zho)
- Bilibili:[我的B站主页](https://space.bilibili.com/484366804)
- X(Twitter):[我的Twitter](https://twitter.com/ZHOZHO672070)
- 小红书:[我的小红书主页](https://www.xiaohongshu.com/user/profile/63f11530000000001001e0c8?xhsshare=CopyLink&appuid=63f11530000000001001e0c8&apptime=1690528872)
💡 **支持我**:
- B站:[B站充电](https://space.bilibili.com/484366804)
- 爱发电:[为我充电](https://afdian.net/a/ZHOZHO)
## Credits
[stablevideo.com](https://stablevideo.com)
+31
View File
@@ -0,0 +1,31 @@
class SVD_Steps_MotionStrength_Seed_Zho:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"steps": ("INT", {"default": 30, "min": 25, "max": 60, "step": 1, "display": "slider"}),
"motion_strength": ("INT", {"default": 127, "min": 1, "max": 255, "display": "slider"}),
"seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}),
}
}
RETURN_TYPES = ("INT", "INT", "INT",)
RETURN_NAMES = ("steps", "motion_strength", "seed",)
FUNCTION = "advanced"
CATEGORY = "Zho模块组/🎞️SVD"
def advanced(self, steps, motion_strength, seed):
return (steps, motion_strength, seed,)
NODE_CLASS_MAPPINGS = {
"SVD_Steps_MotionStrength_Seed_Zho": SVD_Steps_MotionStrength_Seed_Zho,
}
NODE_DISPLAY_NAME_MAPPINGS = {
"SVD_Steps_MotionStrength_Seed_Zho": "🎞️SVD Advanced",
}
+44
View File
@@ -0,0 +1,44 @@
from .style_template import style_list
# Create a dictionary from style_list for easier access
styles = {style['name']: (style['prompt'], style['negative_prompt']) for style in style_list}
STYLE_NAMES = [style['name'] for style in style_list]
DEFAULT_STYLE_NAME = "None"
def apply_style(style_name: str, positive: str, negative: str = "") -> tuple[str, str]:
# Get the prompts for the given style_name, or defaults to the first style if not found
p, n = styles.get(style_name, styles[DEFAULT_STYLE_NAME])
return p.replace("{prompt}", positive), n + ' ' + negative
class SVD_Styler_Zho:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"prompt": ("STRING", {"default": "a close up shot of a cappuccino steaming, on a wooden table, in a dimly lit room", "multiline": True}),
"negative_prompt": ("STRING", {"default": "asymmetry, worst quality, low quality", "multiline": True}),
"style_name": (STYLE_NAMES, {"default": DEFAULT_STYLE_NAME})
}
}
RETURN_TYPES = ('STRING', 'STRING',)
RETURN_NAMES = ('positive_prompt', 'negative_prompt',)
FUNCTION = "prompt_style"
CATEGORY = "Zho模块组/🎞️SVD"
def prompt_style(self, style_name, prompt, negative_prompt):
prompt, negative_prompt = apply_style(style_name, prompt, negative_prompt)
return prompt, negative_prompt
NODE_CLASS_MAPPINGS = {
"SVD_Styler_Zho": SVD_Styler_Zho,
}
NODE_DISPLAY_NAME_MAPPINGS = {
"SVD_Styler_Zho": "🎞️SVD Styler",
}
+9
View File
@@ -0,0 +1,9 @@
from .SVD_Aspect_Ratio import NODE_CLASS_MAPPINGS as NODE_CLASS_MAPPINGS_AR, NODE_DISPLAY_NAME_MAPPINGS as NODE_DISPLAY_NAME_MAPPINGS_AR
from .SVD_Styler import NODE_CLASS_MAPPINGS as NODE_CLASS_MAPPINGS_ST, NODE_DISPLAY_NAME_MAPPINGS as NODE_DISPLAY_NAME_MAPPINGS_ST
from .SVD_Advanced import NODE_CLASS_MAPPINGS as NODE_CLASS_MAPPINGS_AD, NODE_DISPLAY_NAME_MAPPINGS as NODE_DISPLAY_NAME_MAPPINGS_AD
NODE_CLASS_MAPPINGS = {**NODE_CLASS_MAPPINGS_AR, **NODE_CLASS_MAPPINGS_ST, **NODE_CLASS_MAPPINGS_AD}
NODE_DISPLAY_NAME_MAPPINGS = {**NODE_DISPLAY_NAME_MAPPINGS_AR, **NODE_DISPLAY_NAME_MAPPINGS_ST, **NODE_DISPLAY_NAME_MAPPINGS_AD}
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS']
+1 -1
View File
@@ -1,7 +1,7 @@
style_list = [ style_list = [
{ {
"name": "None", "name": "None",
"prompt": "", "prompt": "{prompt}",
"negative_prompt": "ugly" "negative_prompt": "ugly"
}, },
{ {