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

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解码为像素级别的图像
  • 采样器:用于控制模型生成图像,不同的采样取值会影响最终输出图像的质量和多样性。采样器可以调节生成过程的速度和质量之间的平衡
实践
  1. 下载安装,进入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/   
    
  2. 找到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

    image-20240817175512370

    • 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
  • 将本地图片改名为数字1.jpg,2.jpg…
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)
  • 需要时将png和jpg相互转换
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)

1

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

if 1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值