Datawhale X 魔搭 AI夏令营–AIGC Task3
ComfyUI
目前主流GUI有三种:使用范围最广的以窗口式为特征的Web UI,节点式工作流为特征而且方便作为后端使用的ComfyUI,只需关注提示词无需在乎各种复杂参数的Fooocus
ComfyUI是基于节点工作的用户界面,主要用于操作图像的天生技能,焦点模块有模型加载器、提示词管理器、采样器、解码器,ComfyUI 的特别之处在于它采用了一种模块化的设计,把图像天生的过程分解成了许多小的步调,每个步调都是一个节点。这些节点可以连接起来形成一个工作流程,这样用户就可以根据需要定制自己的图像天生过程
- 模型加载器:Load Checkpoint用于加载底子的模型文件,包含了Model、CLIP、VAE三部分
- CLIP模块将文本范例的输入变为模型可以明白的latent space embedding作为模型的输入
- 解码器:VAE模块的作用是将Latent space中的embedding解码为像素级别的图像
- 采样器:用于控制模型天生图像,差别的采样取值会影响最终输出图像的质量和多样性。采样器可以调治天生过程的速度和质量之间的均衡
实践
- 下载安装,进入ipynb文件执行全部代码
- git lfs install
- git clone https://www.modelscope.cn/datasets/maochase/kolors_test_comfyui.git
- mv kolors_test_comfyui/* ./
- rm -rf kolors_test_comfyui/
- mkdir -p /mnt/workspace/models/lightning_logs/version_0/checkpoints/
- mv epoch=0-step=500.ckpt /mnt/workspace/models/lightning_logs/version_0/checkpoints/
复制代码 - 找到This is the URL to access ComfyUI
启动后,通过代码输出的链接查看 UI 页面
点击右侧“Load”,加载“kolors_example.json”(不带 LoRA)或者 “kolors_with_lora_example.json”(带 LoRA)
加载 LoRA 时,请在“lora_path”处填入 LoRA 模型的路径,例如 /mnt/workspace/models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt
- load的json文件是Datawhale提供的ComfyUI配置文件,也可以按自己喜好创建使用
Lora微调
想要在云端使用本舆图片作为数据集时,可以把图片上传至gitee等平台,再在云端git clone,通义给出的代码如下
- 在gitee新建远程仓库作为暂时中转,不添加任何文件,直接新建即可
- # 切换到你的项目目录
- cd /path/to/your/project
- # 初始化 Git 仓库
- git init
- # 添加所有文件到暂存区
- git add .
- # 提交更改
- git commit -m "Initial commit"
- # 创建远程仓库后,获取仓库的 URL
- # 假设你的 Gitee 仓库 URL 为 https://gitee.com/username/reponame.git
- git remote add origin https://gitee.com/username/reponame.git
- # 推送代码到远程仓库
- git push -u origin master
复制代码
- import os
- def batch_rename_images(folder_path, filetype):
- # 获取文件夹中的所有文件
- files = os.listdir(folder_path)
-
- # 过滤出特定类型的文件
- image_files = [f for f in files if f.endswith(filetype)]
-
- # 对图片文件进行排序,确保按顺序重命名
- image_files.sort()
-
- # 重命名每个图片文件
- for i, filename in enumerate(image_files, start=1):
- # 构建新的文件名
- new_filename = f"{i}.{filetype}"
-
- # 获取完整的源文件路径和目标文件路径
- src = os.path.join(folder_path, filename)
- dst = os.path.join(folder_path, new_filename)
-
- # 重命名文件
- os.rename(src, dst)
- # 使用
- folder_path = "./"
- filetype = "jpg"
- batch_rename_images(folder_path, filetype)
复制代码
- from PIL import Image
- import os
- def convert_png_to_jpg(input_folder, output_folder):
- # 确保输出文件夹存在
- if not os.path.exists(output_folder):
- os.makedirs(output_folder)
- # 获取所有PNG文件
- png_files = [f for f in os.listdir(input_folder) if f.lower().endswith('.png')]
- # 遍历所有PNG文件
- for png_file in png_files:
- # 构建完整的输入和输出路径
- input_path = os.path.join(input_folder, png_file)
- jpg_file = os.path.splitext(png_file)[0] + '.jpg'
- output_path = os.path.join(output_folder, jpg_file)
- # 打开PNG图片
- with Image.open(input_path) as img:
- # 转换为RGB模式(因为PNG可以是RGBA)
- img_rgb = img.convert('RGB')
- # 保存为JPG格式
- img_rgb.save(output_path, 'JPEG')
- # 使用
- input_folder = './' # 当前目录
- output_folder = './'
- convert_png_to_jpg(input_folder, output_folder)
复制代码
- import os
- import glob
- def delete_png_files(directory):
- # 使用glob获取指定目录中所有后缀名为".png"的文件列表
- png_files = glob.glob(os.path.join(directory, "*.png"))
-
- # 遍历文件列表,逐个删除文件
- for png_file in png_files:
- try:
- os.remove(png_file)
- print(f"已删除文件:{png_file}")
- except OSError as e:
- print(f"删除文件时出错:{e}")
- # 使用
- directory = './' # 当前目录
- delete_png_files(directory)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |