Datawhale X 魔搭 AI夏令营--AIGC Task3

[复制链接]
发表于 2024-10-10 13:00:44 | 显示全部楼层 |阅读模式
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文件执行全部代码
    1. git lfs install
    2. git clone https://www.modelscope.cn/datasets/maochase/kolors_test_comfyui.git
    3. mv kolors_test_comfyui/* ./
    4. rm -rf kolors_test_comfyui/
    5. mkdir -p /mnt/workspace/models/lightning_logs/version_0/checkpoints/
    6. 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新建远程仓库作为暂时中转,不添加任何文件,直接新建即可
  1. # 切换到你的项目目录
  2. cd /path/to/your/project
  3. # 初始化 Git 仓库
  4. git init
  5. # 添加所有文件到暂存区
  6. git add .
  7. # 提交更改
  8. git commit -m "Initial commit"
  9. # 创建远程仓库后,获取仓库的 URL
  10. # 假设你的 Gitee 仓库 URL 为 https://gitee.com/username/reponame.git
  11. git remote add origin https://gitee.com/username/reponame.git
  12. # 推送代码到远程仓库
  13. git push -u origin master
复制代码


  • 将本舆图片改名为数字1.jpg,2.jpg…
  1. import os
  2. def batch_rename_images(folder_path, filetype):
  3.     # 获取文件夹中的所有文件
  4.     files = os.listdir(folder_path)
  5.    
  6.     # 过滤出特定类型的文件
  7.     image_files = [f for f in files if f.endswith(filetype)]
  8.    
  9.     # 对图片文件进行排序,确保按顺序重命名
  10.     image_files.sort()
  11.    
  12.     # 重命名每个图片文件
  13.     for i, filename in enumerate(image_files, start=1):
  14.         # 构建新的文件名
  15.         new_filename = f"{i}.{filetype}"
  16.         
  17.         # 获取完整的源文件路径和目标文件路径
  18.         src = os.path.join(folder_path, filename)
  19.         dst = os.path.join(folder_path, new_filename)
  20.         
  21.         # 重命名文件
  22.         os.rename(src, dst)
  23. # 使用
  24. folder_path = "./"
  25. filetype = "jpg"
  26. batch_rename_images(folder_path, filetype)
复制代码


  • 需要时将png和jpg相互转换
  1. from PIL import Image
  2. import os
  3. def convert_png_to_jpg(input_folder, output_folder):
  4.     # 确保输出文件夹存在
  5.     if not os.path.exists(output_folder):
  6.         os.makedirs(output_folder)
  7.     # 获取所有PNG文件
  8.     png_files = [f for f in os.listdir(input_folder) if f.lower().endswith('.png')]
  9.     # 遍历所有PNG文件
  10.     for png_file in png_files:
  11.         # 构建完整的输入和输出路径
  12.         input_path = os.path.join(input_folder, png_file)
  13.         jpg_file = os.path.splitext(png_file)[0] + '.jpg'
  14.         output_path = os.path.join(output_folder, jpg_file)
  15.         # 打开PNG图片
  16.         with Image.open(input_path) as img:
  17.             # 转换为RGB模式(因为PNG可以是RGBA)
  18.             img_rgb = img.convert('RGB')
  19.             # 保存为JPG格式
  20.             img_rgb.save(output_path, 'JPEG')
  21. # 使用
  22. input_folder = './'  # 当前目录
  23. output_folder = './'
  24. convert_png_to_jpg(input_folder, output_folder)
复制代码


  • 删除指定范例文件
  1. import os
  2. import glob
  3. def delete_png_files(directory):
  4.     # 使用glob获取指定目录中所有后缀名为".png"的文件列表
  5.     png_files = glob.glob(os.path.join(directory, "*.png"))
  6.    
  7.     # 遍历文件列表,逐个删除文件
  8.     for png_file in png_files:
  9.         try:
  10.             os.remove(png_file)
  11.             print(f"已删除文件:{png_file}")
  12.         except OSError as e:
  13.             print(f"删除文件时出错:{e}")
  14. # 使用
  15. directory = './'  # 当前目录
  16. delete_png_files(directory)
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表