Datawhale AI夏令营第四期魔搭-AIGC文生图方向Task1笔记

一、环境搭建

        利用学习手册,完成阿里云PAI-DSW申请,赛事报名,并在魔搭创建PAI实例

二、Baseline获取

在终端(Terminal)加入下列代码运行,等待2~3 min

git lfs install
git clone https://www.modelscope.cn/datasets/maochase/kolors.git

三、Baseline运行

3.1 安装 Data-Juicer 和 DiffSynth-Studio

打开baseline.py文件,运行第一块代码,运行完成后手动重启 Notebook kernel

3.2 下载数据集 

载入训练所需数据集

3.3 数据处理

共129张图片需要进行处理

3.4 模型训练

  1. 在训练命令中填入 --modelscope_model_id xxxxx 以及 --modelscope_access_token xxxxx 后,训练程序会在结束时自动上传模型到 ModelScope
  2. 部分参数可根据实际需求调整,例如 lora_rank 可以控制 LoRA 模型的参数量

3.5 文生图

根据下列代码可生成一张图片,通过改变prompt生成自己想要的图片

比赛要求生成八张图片的小故事,利用下面代码进行结果展示

 

四、结果保存与提交

在终端(Terminal)运行下列代码进行结果保存(结果将在output文件中),里面包含生成图片的jpg文件以及.ckpt文件

mkdir /mnt/workspace/kolors/output & cd 
cp /mnt/workspace/kolors/models/lightning_logs/version_0/checkpoints/epoch\=0-step\=500.ckpt /mnt/workspace/kolors/output/
cp /mnt/workspace/kolors/1.jpg /mnt/workspace/kolors/output/

前往魔搭,上传结果

五、后续比赛思路

5.1 prompt与negative_prompt修改

        Baseline所给的prompt并非十分详细,有可能影响故事连贯性,图片质量等,后续需要构思逻辑性强,具有针对性的prompt生成更优质的图片,并尝试使用英文prompt提高质量

5.2 训练集质量提升

        比赛提供美度的客观评分标准,具体代码如下

pip install simple-aesthetics-predictor
import torch, os
from PIL import Image
from transformers import CLIPProcessor
from aesthetics_predictor import AestheticsPredictorV2Linear
from modelscope import snapshot_download


model_id = snapshot_download('AI-ModelScope/aesthetics-predictor-v2-sac-logos-ava1-l14-linearMSE', cache_dir="models/")
predictor = AestheticsPredictorV2Linear.from_pretrained(model_id)
processor = CLIPProcessor.from_pretrained(model_id)
device = "cuda"
predictor = predictor.to(device)


def get_aesthetics_score(image):
    inputs = processor(images=image, return_tensors="pt")
    inputs = {k: v.to(device) for k, v in inputs.items()}
    with torch.no_grad():
        outputs = predictor(**inputs)
    prediction = outputs.logits
    return prediction.tolist()[0][0]


def evaluate(folder):
    scores = []
    for file_name in os.listdir(folder):
        if os.path.isfile(os.path.join(folder, file_name)):
            image = Image.open(os.path.join(folder, file_name))
            scores.append(get_aesthetics_score(image))
    if len(scores) == 0:
        return 0
    else:
        return sum(scores) / len(scores)

score = evaluate("./images")
print(score)

        通过设置一定的美度指标去除不合格的图片,提高模型性能

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值