Datawhale X 魔搭 AI夏令营-第四期(AIGC方向)-Task02-可图Kolors-精读代码 实战进阶

往期学习:  Datawhale X 魔搭 AI夏令营-第四期(AIGC方向)-Task01-可图Kolors-LoRA风格故事挑战赛


 本期学习的主要内容为:

  1. 使用阿里云的“通义千问”大模型,来解释并帮助我们读懂Task1中的代码。
  2.  使用“通义千问”大模型来辅助设计生图提示词,并生成8图话剧。

下面分部分讲解我的学习过程:

 一、使用通义千问辅助读懂Task1中的代码

先贴通义千问链接:https://tongyi.aliyun.com/qianwen/

这一部分我分别进行了五次尝试,下面是对应的prompts:

Prompt01:你是一个优秀的python开发工程师,现在我们需要你帮我们分析这个代码的主体框架,你需要把代码按照工作流分成几部分,用中文回答我的问题。{贴上代码}

Answer01 如下。可以看到,它对代码中所包含的主要工作流程进行了准确的概括说明。

 

Prompt02:你是一个优秀的python开发工程师,现在我们需要你帮我们逐行分析这个代码,用中文回答我的问题。{贴上代码}

Answer02 如下。可以看到,相比Answer01中概括的工作流程,Answer02它按步骤对代码给出了更为细致的说明。

 

Prompt03:你是一个优秀的python开发工程师,现在我们需要你帮我们逐行分析这个代码,每一行代码都增加上中文语义备注。{贴上代码}

Answer03 如下。可以看到,它对代码进行了细致的逐行解释,但它没有达到我预期的效果,即返回带注释的代码

 

Prompt04:你是一个优秀的python开发工程师,现在我们需要你帮我们逐行分析下面的代码,每一行代码都增加上中文语义备注,并返回带有中文注释的代码。{贴上代码}

Answer04 如下。可以看到,它实现了返回带注释代码的效果,这对于程序员来说有更强的易读性

 

Prompt05:我对其中的{目标代码}还是不太理解,给我再详细介绍一下。

Answer05 如下。可以看到,在这个prompt中,我对AI进行了追问,要求它对某一块代码进行更细致的解释。通义千问对这块代码做了非常细致的解释。

 


二、基于话剧的连环画制作

通过使用通义千问大模型,来生成8图连环画话剧的生图提示词,我给的提示词如下:

你是一个文生图专家,我们现在要做一个实战项目,就是要编排一个文生图话剧
话剧由8张场景图片生成,你需要输出每张图片的生图提示词

具体的场景图片
1、女主在实验台上醒来
2、发现自己被改造成了机器人
3、观察四周,发现周围都是与自己一模一样的机器人
4、女主逃出实验室,发现外面是一个庞大的赛博朋克都市
5、女主找到自己原来的家,已经变成废墟,空无一人
6、女主回想起来,自己和家人遭遇了车祸
7、女主发现自己的身体现在灵活度很高、力量很大
8、女主下定决心,要回实验室找回自己的家人

生图提示词要求
1、风格为赛博朋克风格
2、根据场景确定是使用全身还是上半身
3、人物描述
4、场景描述
5、做啥事情

例子:
赛博朋克风,一个白色短发少女,躺在冰冷的实验台上,睁开眼睛,眼神空洞,上半身,机械躯干

以下为通义千问给出的回答:

 提示词

基于通义千问给出的回答,在魔搭提供的免费实例上再次运行Task1中的baseline,并进一步调整,最终的生图提示词如下:

序号 故事描述 正向提示词 反向提示词
1
女主在实验台上醒来
 

生物力学赛博朋克。一个白色短发少女,躺在冰冷的实验台上,睁开眼睛,眼神空洞,上半身特写,背景是昏暗的实验室,充满未知的设备。控制论、人机融合、反乌托邦、有机与人工的结合、黑暗、复杂、高度详细

 自然,色彩鲜艳,变形,素描,低对比度,水彩
2
发现自己被改造成了机器人
生物力学赛博朋克。一个白色短发的女性机器人,站在镜子前观察自己的身体,镜子里反射出她带有机械臂和裸露电路的身体,全身展示,实验室背景,表情疑惑且略带恐惧。控制论、人机融合、反乌托邦、有机与人工的结合、黑暗、复杂、高度详细  自然,色彩鲜艳,变形,素描,低对比度,水彩 
3
观察四周,发现周围都是与自己一模一样的机器人
生物力学赛博朋克。一个白色短发的女性机器人,环视四周,周围站着许多与她外观相同的机器人,全身展示,实验室背景,表情困惑。控制论、人机融合、反乌托邦、有机与人工的结合、黑暗、复杂、高度详细   自然,色彩鲜艳,变形,素描,低对比度,水彩
4
女主逃出实验室,发现外面是一个庞大的赛博朋克都市
 生物力学赛博朋克。一个白色短发的女性机器人,从破旧的实验室门里跑出来,背后是灯火辉煌、高楼林立的都市夜景,全身展示,紧张而好奇的表情。控制论、人机融合、反乌托邦、有机与人工的结合、黑暗、复杂、高度详细  自然,色彩鲜艳,变形,素描,低对比度,水彩
5
女主找到自己原来的家,已经变成废墟,空无一人
 生物力学赛博朋克。一个白色短发的女性机器人,站在被破坏的城市废墟之中,面前是她曾经的家,现在已成为一片废墟,全身展示,表情悲伤。控制论、人机融合、反乌托邦、有机与人工的结合、黑暗、复杂、高度详细  自然,色彩鲜艳,变形,素描,低对比度,水彩
6
女主回想起来,自己和家人遭遇了车祸
 生物力学赛博朋克。一个白色短发的女性机器人,站在车祸现场的回忆之中,旁边是翻倒的车辆残骸,上半身特写,眼神中带着痛苦和回忆。控制论、人机融合、反乌托邦、有机与人工的结合、黑暗、复杂、高度详细  自然,色彩鲜艳,变形,素描,低对比度,水彩
7
女主发现自己的身体现在灵活度很高、力量很大
 生物力学赛博朋克。一个白色短发的女性机器人,在空旷的仓库内测试自己的身体能力,展示她的灵活性和力量,全身展示,背景是废弃仓库,表情自信且惊讶。控制论、人机融合、反乌托邦、有机与人工的结合、黑暗、复杂、高度详细  自然,色彩鲜艳,变形,素描,低对比度,水彩
8
女主下定决心,要回实验室找回自己的家人
 生物力学赛博朋克。一个白色短发的女性机器人,站在实验室入口处,眼神坚定地看向内部,全身展示,背景是阴暗的实验室入口,表情坚决。控制论、人机融合、反乌托邦、有机与人工的结合、黑暗、复杂、高度详细  自然,色彩鲜艳,变形,素描,低对比度,水彩
  

生成结果与评分

这里采用赛题给出的美学评分进行评价,代码如下:
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)
一、首先,我先用简略的故事描述进行了一次生成,生成结果如下。

可以看到,生成图像的质量不错,但是内容形式较为单调,没有很好地表达我的故事内容

使用美学评分的结果为:6.50

、然后,我使用通义千问给出的生成提示词来进行生成,结果如下:

使用美学评分的结果为:6.40

可以看到,生成图像的内容更加符合我给出的故事描述,这是因为通义千问根据我的描述给出了更细化的生成提示词。

但是美学评分没有提升,反而有略微下降。这可能说明提示词的精细化主要提升了对故事剧情的表现力,而并没有起到提升质量的效果

三、试用scepter webui

浅试了一下scepter webui的生成效果,发现生成结果并不稳定,会生成不相关风格的图片。可能原因是没有在相应数据集上进行微调训练。生成结果如下:

 


总结

作为一个计算机专业的学生,在平时编程时会接触一些比较复杂难懂的代码,如果仅凭自己一行行去阅读代码是很费时费力的,还有可能产生误解。

通过使用AI大语言模型来了解代码工作流程、获取代码解释,对于快速理解代码功能、帮助自己初步读懂代码,是非常有帮助的。

并且,可以通过精细化调整prompts,并明确表达自己的要求,来使回答更接近自己想要的状态

对于文生图任务,我们也可以通过给出概括的描述,而让大语言模型来为我们将prompts精细化,并通过自己的调整,使生成图像接近理想的状态。

posted on 2024-08-14 23:29  零度的python武器库  阅读(13)  评论(0编辑  收藏  举报