实测腾讯AI文生图!王者荣耀画风一键直出,小程序就能玩
梦晨 萧箫 发自 凹非寺
量子位 | 公众号 QbitAI
鹅厂大模型,又有新玩法!
发布不到两个月,腾讯混元大模型就速通了一个新版本,除了语言模型升级以外,还悄悄上线了AIGC最火热????的功能——
文生图 。
和语言模型一样,文生图同样可以通过 微信小程序直接体验 。
不过与Midjourney独立出图不同,混元的文生图和对话功能“互不耽误”,可以 边聊边画 ,与DALL·E 3体验相似。
之前已经申请测试通过的,可以立刻冲了~
还在排队中的也别急,我们已经快速实测了一波热图,这就先放出来给大伙儿看看。
混元文生图上手实测
根据腾讯介绍,混元大模型文生图最大的优势在三处: 真实感 、 中文理解 、 风格多样 。
接下来就挨个试试它做到了什么程度。
先来 画人 ,复刻一波之前爆火过的Midjourney“写实90年代北京情侣”看看。
请输出一张摄影风的照片,在20世纪90年代的北京,一个男性和一个女性,面带微笑,坐在屋顶,穿着夹克和牛仔裤,有很多的建筑物,真实感
可以看出,写实风格的人像还是很拿手的,人物姿态合理,画亚洲人脸与国外AI相也比较 自然 。
注意这里有个小技巧,想要写实风格的话最好用“ 生成一张……” 来触发,如果用 “画一张……” 大概率会得到插画风格。
写实风格的人像可以,再看看 画风景 如何。
除了一般的风景描述,混元大模型支持指定一个真实存在的景点,比如“桂林山水”或“长城”。
毕竟是AI生成,和真实景观不会完全一样,但感觉还是到位了。
接下来要上难度了,把这 两个场景“组合”起来 :
生成一张桂林山水,但是岸上有长城,摄影风格,真实感,高度细节。
这么离谱的需求都画出来了,甚至水面还有水波,看来不是简单地重现训练数据,而是对概念有一些自己的理解。
那么更 复杂的概念 如何?
曾经,AI因不理解中文菜名闹过一波笑话。
经过这半年的发展,“红烧狮子头”里不会出现狮子的头,“夫妻肺片”里也不会变成恐怖片了,甚至看着还挺香。
要说比菜名更有挑战的,就到了古诗词,正好写实风格也看腻了也可以换换口味。
生成一张图片:孤舟蓑笠翁,独钓寒江雪,水墨画风格。
总得来说还不错,美中不足之处在于一张图没有“舟”,还有一张舟上坐了两个“翁”,就没有孤独的意境了。
看来诗词这种过于凝练的还是有难度。
But,别忘了混元助手同时拥有聊天对话能力,还支持多轮对话。
借助强大的语言模型部分,我们也找出解决办法。
接下来只需用 “这些要求” 、 “上述要求” 来指代上面的回答,就可以让两个功能联动起来了。
再画就会更稳定,而且增加了雪花飘落的细节。
记住这个小技巧,接下来还会用到。
其实在腾讯混元助手中,专门准备了这样一个 存为指令 的功能。
存好后就可以从对话框右边的 魔法棒图标 处快速调用了,只需要更改要描述的内容即可。
还可以方便地一键分享到微信,4张图一次分享让好友帮忙选,不用来回截图了。
直接打开分享链接,就可以放大查看四张图,还可以开始新对话!
了解过混元大模型的中文理解能力,再来试试最后一个特点 风格多样性 。
既然是腾讯出品,游戏插画肯定少不了,比如正火的赛博朋克风。
有点感觉了,但总觉得还差点意思。
可以用上面的技巧来,联动语言模型来明确赛博朋克风格的特点。
再手动加亿点点料,就更对味了。
不同游戏的画风差距极大,测试下来混元助手确实能hold住不少,从3D到2D甚至像素都没问题。
即使是同一话题和风格限定,也能展现出不同的画风,Furry控狂喜(doge)
其实腾讯透露,内部多个场景已经用上了混元大模型文生图能力。
虽然还不知道具体怎么使用,但是我们测试了一下用《王者荣耀》来当风格限定词,混元也能理解。
除了游戏之外还有广告场景,前面提到的混元大模型文生图真实感的优势就能发挥出来。
也别忘了腾讯还有一大块内容业务,来个玄幻小说插图也没问题。
这样的文生图效果,背后究竟是通过什么原理实现的?
在此之前,业界其实已经有不少文生图的开源模型。
腾讯是基于其中某种方案打造,还是重新进行的自研?
带着种种问题,我们和 腾讯混元大模型文生图技术负责人芦清林 聊了聊,了解了一下背后的技术细节。
模型全自研,用20亿+图文对炼成
“从算法、数据系统到工程平台,都是从0到1自研。”
芦清林表示,这也算是腾讯混元大模型文生图功能的优势,这样从生成自由度到数据安全性,就都能完全把控,也让生成的图像“更符合用户需求”。
首先是在算法这一块。
当前文生图模型普遍存在三个难点, 语义理解差、构图不合理、画面细节无质感 。
语义理解差,就是模型听不懂人话,尤其是中英文夹杂的人话。
当前业界普遍采用的是开源的CLIP算法,然而它一来没有建模中文语言,输入中文只能靠翻译,会出现红烧狮子头真的生成狮子的问题(doge);另一个是训练时图文对齐能力不行。
构图不合理,指的是生成的人体结构、画面结构有问题,直接“生异形”。
如果直接基于业界已有的开源扩散模型生成图像,就容易出现这个问题,像是出现“三只手”或者各种奇怪的画面结构。
画面细节无质感,就是生成图像清晰度差。当前不少数据集图像分辨率和质量不高,容易导致训练出来的开源模型质量也不高。
为了解决这三个难点,腾讯混元团队在算法阶段,特意用了三类模型组合来“逐个击破”。
语义理解上, 腾讯自研了跨模态预训练大模型,不仅让它同时学会建模中英文,而且强化文本和图像细粒度特征的联系,简单来说就是中文、英文、图像三者的“跨模态对齐”。
生成构图上, 腾讯自研了一种扩散模型和Transformer混合的架构,尤其是将Transformer当前大火的旋转位置编码研究给用上了。
旋转位置编码通常被用于增加大模型的上下文长度,不过在这里被腾讯巧妙地用于刻画人体结构,让模型既能掌握全局信息(人体骨架)又能理解局部信息(脸部细节)。
最后是在画面细节上, 腾讯自研了超分辨率模型,与此同时还结合了多种算法,针对图像不同的细节进行优化,让最后生成的图像进一步“耐看”。
这样做出来的模型架构,不仅能生成质量更高的图片(分辨率1024×1024),而且只需要微调一下架构,就能变成图生图、甚至是文生视频模型。
接下来,就是关键的数据部分了。
对于文生图而言,生成图像的质量,很大程度上取决于数据的质量,OpenAI在DALL·E 3论文中,通篇都在强调数据对于指令跟随的重要性。
腾讯也非常重视数据对模型的重要性,并同样自研了三方面的技术。
在数据质量上, 由于互联网上扒下来的数据集,往往存在文字描述简洁、和生成内容不完全匹配的问题,因此团队通过改善图-文对数据集中的“文”部分,也就是细化中文的文本描述,来提升图文数据的相关性;
在数据效果上, 团队针对训练数据进行了“金银铜”分层分级,等级越高,意味着数据清洗程度越精细。
其中,20+亿未清洗的“青铜数据”,用来对所有模型进行“粗加工”,也就是预训练;
6亿+“白银数据”,用来对生成模型进一步加工,提升生成质量;
1.12亿+精心清洗的“黄金数据”,则用来对模型进行“精加工”,也就是精调突击训练,确保训练出来的模型质量更优秀。
在数据效率上, 为了加快训练速度,尤其是针对用户反馈对模型进行优化的速度,腾讯也建立了数据飞轮,自动化构建训练数据并加快模型迭代,让模型生成准确率进一步提升。
据芦清林透露,数据飞轮这个技术,也正是解决数据长尾场景难题的关键。
由于我们的生活中总是在出现一些潮流新词,例如“玲娜贝儿”等,这种名词往往在数据集中不常见,而用户又会在输入时使用,因此往往需要第一时间更新进训练数据中。
有了数据飞轮,就能将这个过程效率进一步提升,避免模型在见识到新词后,依旧长时间无法生成对应的图像。
最后,有了算法和数据,还得有个工程平台,来把它们组合起来快速训练。
为此,腾讯自研了Angel机器学习平台,包括训练框架AngelPTM和推理框架AngelHCF。
训练上,大模型最重要的就是并行能力。为此,腾讯基于4D并行+ZeROCache机制,实现了千亿参数混元大模型的快速训练。
直观来看,AngelPTM训练框架相比业界主流框架DeepSpeed-Chat速度提升了1倍以上。
推理上,AngelHCF则实现了支持多种并行能力、支持服务部署及管理、以及自研模型无损量化三大功能,相比业界主流框架提升了1.3倍以上。
值得一提的是,在Angel机器学习框架和平台的支持下, 腾讯混元的语言模型也进行了一轮升级,尤其是代码能力有不小的提升。
我们也简单测了测腾讯混元大模型更新后的代码能力。
首先试试写代码,以帮老师写一个“随机点名程序”为例(手动狗头)。
混元大模型很快生成了一段带注释的完整代码:
import random
# 假设班级里有50个学生,这里是他们的学号
student_ids = ['001', '002', '003', '004', '005', '006', '007', '008', '009', '010',
'011', '012', '013', '014', '015', '016', '017', '018', '019', '020',
'021', '022', '023', '024', '025', '026', '027', '028', '029', '030',
'031', '032', '033', '034', '035', '036', '037', '038', '039', '040',
'041', '042', '043', '044', '045', '046', '047', '048', '049', '050']
# 使用random.choice()函数从学生学号列表中随机选择一个学生
random_student_id = random.choice(student_ids)
# 打印随机选中的学生学号
print("随机抽取的学生学号是:", random_student_id)
实测可以丝滑运行,每次都能抽到不同的幸(dao)运(mei)儿(dan)起来回答问题:
然后我们还发现,混元大模型竟然还能帮忙查代码bug,属实是程序员省心利器了。
当然,无论是文生图还是代码能力,现在都已经可以在腾讯混元助手中体验。
感兴趣的小伙伴,可以到 腾讯混元助手 排个队或是体验一把~
— 完 —
点这里 ???? 关注我,记得标星哦~