Datawhale X 魔搭 AI夏令营 | Task2:代码进阶 赛博朋克故事

1.背景及任务

       在task1中,baseline代码实现了一个二次元女孩成为偶像的故事的图片输出(上一篇文章)。经过关键代码的阅读,发现baseline中的数据集采用的是128张二次元风格的图片,因此用这个数据集生成二次元风格的图片将更加方便。不过,单一风格的图片生成并不能满足AGI大模型的需求,能否在同一个模型上根据给定prompt的不同生成不同风格的图片,是本次任务的主线。

关键任务:通过修改prompt和生图随机数种子生成赛博朋克风格的图片

2. 代码修改思路

2.1 故事生成(基于通义)

首先给通义介绍了背景,喂了baseline的代码,让通义理解现在在做什么。

随后进行了进一步需求的说明(记错了游戏发布时间):

通义写的故事:

赛博朋克之都:重云之城
时间线:2077年
地点:重云之城(虚构的重庆未来化版本)
故事简介:
在未来的重云之城,科技与人类社会深度融合,霓虹灯下隐藏着无数秘密。城市的天空被巨大的广告牌和无人机网络遮蔽,高楼大厦之间是狭窄而繁忙的巷道,充满了各种非法交易和技术黑市。

主角:艾莉卡·陈
艾莉卡是一名独立的网络侦探,她拥有一双经过改造的眼睛,可以穿透伪装和加密,看到别人看不见的信息。她的目标是揭露城市中隐藏的腐败和不公,但同时她也必须躲避那些对她虎视眈眈的势力。

情节:
当艾莉卡接手了一个看似简单的失踪案时,她发现事情远比她想象的复杂。失踪的人是一位知名的企业家,其背后牵扯到了一家大型生物工程公司,这家公司正在研发一种可以永久改变人类基因的药物。

艾莉卡的调查引起了公司的注意,他们派出了一支由赛博增强士兵组成的队伍来阻止她。在逃亡的过程中,艾莉卡遇到了一群抵抗组织成员,他们致力于揭露公司的阴谋,并阻止这种药物落入错误的手中。

随着调查的深入,艾莉卡发现了更多关于自己过去的线索,她意识到自己与这家公司的研究有着直接的联系。为了保护自己和城市免受威胁,艾莉卡必须做出艰难的选择,并面对自己黑暗的过去。

结局:
在一场激烈的对抗中,艾莉卡和抵抗组织成功揭露了公司的计划,但也付出了惨痛的代价。艾莉卡不仅阻止了药物的滥用,还找到了自己的真正身份和目的。故事结束时,她站在两江交汇处的桥上,望着灯火阑珊的重云之城,心中燃起了新的希望。

现在基本的故事梗概也比较清晰了,根据上面的故事背景现在开始生图。

2.2 代码修改

代码主要修改了prompt和随机数种子,模型的基本参数设置和数据集没有进行调整。代码如下:

# 图1
torch.manual_seed(5)
image = pipe(
    prompt="赛博朋克,布满霓虹灯和广告灯牌的城市,广告牌上写着ABC生物制药",
    negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
    cfg_scale=4,
    num_inference_steps=100, height=1024, width=1024,
)
image.save("my_1.jpg")

#图2
torch.manual_seed(1)
image = pipe(
    prompt="赛博朋克,艾莉卡,黑色中长发华裔女性,站在未来重云之城的霓虹闪烁的街角。她身穿黑色的战术装备,搭配着银色的护目镜,艾莉卡的面容坚定,眼神锐利。她的周围是繁忙的街头,人们匆匆走过。",
    negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
    cfg_scale=4,
    num_inference_steps=50, height=1024, width=1024,
)
image.save("my_2.jpg")

# 图3
torch.manual_seed(1)
image = pipe(
    prompt="赛博朋克,艾莉卡,黑色中长发华裔女性,手持一个先进的数据扫描装置,她身穿黑色的战术装备,搭配着银色的护目镜,躲在一个街道,偷听几个黑影的交易,面容坚定,神色紧张。",
    negative_prompt="丑陋、变形、嘈杂、模糊、低对比度,色情擦边",
    cfg_scale=4,
    num_inference_steps=50, height=1024, width=1024,
)
image.save("my_3.jpg")

# 图4
torch.manual_seed(1)
image = pipe(
    prompt="赛博朋克,艾莉卡,黑色中长发华裔女性,与身着黑色西装的男子发生打斗。",
    negative_prompt="丑陋、变形、嘈杂、模糊、低对比度,扭曲的手指,多余的手指",
    cfg_scale=4,
    num_inference_steps=50, height=1024, width=1024,
)
image.save("my_4.jpg")

# 图5
torch.manual_seed(5)
image = pipe(
    prompt="赛博朋克,艾莉卡,黑色中长发华裔女性,站在赛博朋克街道中,抬头看见天上飞的无人机",
    negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
    cfg_scale=4,
    num_inference_steps=50, height=1024, width=1024,
)
image.save("my_5.jpg")

# 图6
torch.manual_seed(5)
image = pipe(
    prompt="赛博朋克,荒坂十三,身着黑色西装的神秘男性,坐在办公室的老板椅上,手正在扶黑色墨镜,紧盯电脑前的监控,脸上挂着一丝神秘微笑。",
    negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
    cfg_scale=4,
    num_inference_steps=50, height=1024, width=1024,
)
image.save("my_6.jpg")

# 图7
torch.manual_seed(1)
image = pipe(
    prompt="赛博朋克,艾莉卡,黑色中长发华裔女性,站立,双手手枪瞄准镜头,皱眉头,神色紧张。",
    negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
    cfg_scale=4,
    num_inference_steps=50, height=1024, width=1024,
)
image.save("my_7.jpg")

# 图8
torch.manual_seed(5)
image = pipe(
    prompt="赛博朋克,艾莉卡,黑色中长发华裔女性,她身穿黑色的战术装备,全身,侧面,黑夜,霓虹城市,站在城市中的天台眺望远方,露出了开心的笑容",
    negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
    cfg_scale=4,
    num_inference_steps=50, height=1024, width=1024,
)
image.save("my_8.jpg")

2.3 结果展示

3. 总结与思考

3.1 prompt的修改

        在写prompt时,我发现语言越复杂,模型越难以理解,通常模型不会考虑prompt的整体逻辑,而是关注其中的几个关键字,比如“黑色中长发华裔女性”、“手枪”和“墨镜”等非常直观的事物。因此,与其纠结prompt的逻辑,不如直接提供几个明确的关键词,这会更有助于生成想要的图片。

tips:明确关键词比优美的句子更有效

3.2 随机数种子的修改

        随机数种子的设定是为了在一次计算的时候产生相同的随机数(这里的随机数可能和数据集中的图片有一些对应关系),所以我在产生相似的内容图片的情况下采用了相同的随机数,以保证图片和图片之间的连贯性。也就是说,我在图片1中的生成的任务想在图片2中保持整个容貌和衣着等特点不变时,我应该采用相同的随机数种子和类似的prompt。

        例如,图2、3、4和7采用了相同的随机数种子1,因此生成的容貌基本上是不变的;同样的 ,图5和图8采用了相同的随机数种子5,因此图5和8的特征是类似的(比如都有齐刘海等),而和其他的几张图的特点是不同的。

tips:相同的随机数种子利于输出类似的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值