如果做淘宝网站,jsp做网站实例教程,微商城系统开发,wordpress动漫网站模板导读
用户生成内容#xff08;User Generated Content#xff0c;UGC#xff09;是互联网上多模态内容的重要组成部分#xff0c;UGC数据级的不断增长促进了各大多模态内容平台的繁荣。在海量多模态数据和深度学习大模型的加持下#xff0c;AI生成内容#xff08;AI Gen…导读
用户生成内容User Generated ContentUGC是互联网上多模态内容的重要组成部分UGC数据级的不断增长促进了各大多模态内容平台的繁荣。在海量多模态数据和深度学习大模型的加持下AI生成内容AI Generated ContentAIGC呈现出爆发性增长趋势。其中文图生成Text-to-image Generation任务是流行的跨模态生成任务旨在生成与给定文本对应的图像。典型的文图模型例如OpenAI开发的DALL-E和DALL-E2。近期业界也训练出了更大、更新的文图生成模型例如Google提出的Parti和Imagen基于扩散模型的Stable Diffusion等。
然而上述模型一般不能用于处理中文的需求而且上述模型的参数量庞大很难被开源社区的广大用户直接用来Fine-tune和推理。此外文图生成模型的训练过程对于知识的理解比较缺乏容易生成反常识内容。本次EasyNLP开源框架在先前推出的基于Transformer的文图生成模型看这里基础上进一步推出了融合丰富知识图谱知识的文图生成模型ARTIST能在知识图谱的指引上生成更加符合常识的图片。我们在中文文图生成评测基准MUGE上评测了ARTIST的生成效果其生成效果名列榜单第一。我们也向开源社区免费开放了知识增强的中文文图生成模型的Checkpoint以及相应Fine-tune和推理接口。用户可以在我们开放的Checkpoint基础上进行少量领域相关的微调在不消耗大量计算资源的情况下就能一键进行各种艺术创作。
EasyNLPhttps://github.com/alibaba/EasyNLP是阿⾥云机器学习PAI 团队基于 PyTorch 开发的易⽤且丰富的中⽂NLP算法框架⽀持常⽤的中⽂预训练模型和⼤模型落地技术并且提供了从训练到部署的⼀站式 NLP 开发体验。EasyNLP 提供了简洁的接⼝供⽤户开发 NLP 模型包括NLP应⽤ AppZoo 和预训练 ModelZoo同时提供技术帮助⽤户⾼效的落地超⼤预训练模型到业务。由于跨模态理解需求的不断增加EasyNLP也⽀持各种跨模态模型特别是中⽂领域的跨模态模型推向开源社区希望能够服务更多的 NLP 和多模态算法开发者和研 究者也希望和社区⼀起推动 NLP /多模态技术的发展和模型落地。
本⽂简要介绍ARTIST的技术解读以及如何在EasyNLP框架中使⽤ARTIST模型。
ARTIST模型详解
ARTIST模型的构建基于Transformer模型 将文图生成任务分为两个阶段进行第一阶段是通过VQGAN模型对图像进行矢量量化即对于输入的图像通过编码器将图像编码为定长的离散序列解码阶段是以离散序列作为输入输出重构图。第二阶段是将文本序列和编码后的图像序列作为输入利用GPT模型学习以文本序列为条件的图像序列生成。为了增强模型先验我们设计了一个Word Lattice Fusion Layer将知识图谱中的的实体知识引入模型辅助图像中对应实体的生成从而使得生成的图像的实体信息更加精准。下图是ARTIST模型的系统框图以下从文图生成总体流程和知识注入两方面介绍本方案。 第一阶段基于VQGAN的图像矢量量化
在VQGAN的训练阶段我们利用数据中的图片以图像重构为任务目标训练一个图像词典的codebook其中这一codebook保存每个image token的向量表示。实际操作中对于一张图片通过CNN Encoder编码后得到中间特征向量再对特征向量中的每个编码位置寻找codebook中距离最近的表示从而将图像转换成由codebook中的imaga token表示的离散序列。第二阶段中GPT模型会以文本为条件生成图像序列该序列输入到VQGAN Decoder从而重构出一张图像。
第二阶段以文本序列为输入利用GPT生成图像序列
为了将知识图谱中的知识融入到文图生成模型中我们首先通过TransE对中文知识图谱CN-DBpedia进行了训练得到了知识图谱中的实体表示。在GPT模型训练阶段对于文本输入首先识别出所有的实体然后将已经训练好的实体表示和token embedding进行结合增强实体表示。但是由于每个文本token可能属于多个实体如果将多个实体的表示全都引入模型可能会造成知识噪声问题。所以我们设计了实体表示交互模块通过计算每个实体表示和token embedding的交互为所有实体表示加权有选择地进行知识注入。特别地我们计算每个实体表征对对于当前token embedding的重要性通过内积进行衡量然后将实体表示的加权平均值注入到当前token embedding中计算过程如下 得到知识注入的token embedding后我们通过构建具有layer norm的self-attention网络构建基于Transformer的GPT模型过程如下 在GPT模型的训练阶段将文本序列和图像序列拼接作为输入假设文本序列为w 生成图像的imaga token表示的离散序列概率如下所示 最后模型通过最大化图像部分的负对数似然来训练得到模型参数的值。
ARTIST模型效果
标准数据集评测结果
我们在多个中文数据集上评估了ARTIST模型的效果这些数据集的统计数据如下所示 在Baseline方面我们考虑两种情况zero-shot learning和标准fine-tuning。我们将40亿参数的中文CogView模型作为zero-shot learner我们也考虑两个模型规模和ARTIST模型规模相当的模型分别为开源的DALL-E模型和OFA模型。实验数据如下所示 从上可以看出我们的模型在参数量很小的情况202M下也能获得较好的图文生成效果。为了衡量注入知识的有效性我们进一步进行了相关评测将知识模块移除实验效果如下 上述结果可以清楚地看出知识注入的作用。
案例分析
为了更加直接地比较不同场景下ARTIST和baseline模型生成图像质量对比我们展示了电商商品场景和自然风光场景下各个模型生成图像的效果如下图 电商场景效果对比 自然风光场景效果对比
上图可以看出ARTIST生成图像质量的优越性。我们进一步比较我们先前公开的模型看这里和具有丰富知识的ARTIST模型的效果。在第一个示例“手工古风复原款发钗汉服配饰宫廷发簪珍珠头饰发冠”中原始生成的结果主要突出了珍珠发冠这个物体。在ARTIST模型中“古风”等词的知识注入过程使得模型生成结果会更偏向于古代中国的珍珠发簪。 第二个示例为“一颗绿色的花椰菜在生长”。由于模型在训练时对“花椰菜”物体样式掌握不够当不包含知识注入模块时模型根据“绿色”和“菜”的提示生成了有大片绿叶的单株植物。在ARTIST模型中生成的物体更接近于形如花椰菜的椭圆形的植物。 ARTIST模型在MUGE榜单的评测结果
MUGEMultimodal Understanding and Generation Evaluation链接是业界首个大规模中文多模态评测基准其中包括基于文本的图像生成任务。我们使用本次推出的ARTIST模型在中文MUGE评测榜单上验证了前述文图生成模型的效果。从下图可见ARTIST模型生成的图像在FID指标Frechet Inception Distance值越低表示生成图像质量越好上超越了榜单上的其他结果。 ARTIST模型的实现
在EasyNLP框架中我们在模型层构建了ARTIST模型的Backbone其主要是GPT输入分别是token id和包含的实体的embedding输出是图片各个patch对应的离散序列。其核⼼代码如下所示
# in easynlp/appzoo/text2image_generation/model.py# init
self.transformer GPT_knowl(self.config)# forward
x inputs[image]
c inputs[text]
words_emb inputs[words_emb]x x.permute(0, 3, 1, 2).to(memory_formattorch.contiguous_format)
# one step to produce the logits
_, z_indices self.encode_to_z(x)
c_indices ccz_indices torch.cat((c_indices, a_indices), dim1)# make the prediction
logits, _ self.transformer(cz_indices[:, :-1], words_emb, flagTrue)
# cut off conditioning outputs - output i corresponds to p(z_i | z_{i}, c)
logits logits[:, c_indices.shape[1]-1:]
在数据预处理过程中我们需要获得当前样本的输入文本和实体embedding从而计算得到words_emb
# in easynlp/appzoo/text2image_generation/data.py# preprocess word_matrix
words_mat np.zeros([self.entity_num, self.text_len], dtypenp.int)
if len(lex_id) 0:ents lex_id.split( )[:self.entity_num]pos_s [int(x) for x in pos_s.split( )]pos_e [int(x) for x in pos_e.split( )]ent_pos_s pos_s[token_len:token_lenself.entity_num]ent_pos_e pos_e[token_len:token_lenself.entity_num]for i, ent in enumerate(ents):words_mat[i, ent_pos_s[i]:ent_pos_e[i]1] ent
encoding[words_mat] words_mat# in batch_fn
words_mat torch.LongTensor([example[words_mat] for example in batch])
words_emb self.embed(words_mat)
ARTIST模型使⽤教程
以下我们简要介绍如何在EasyNLP框架使⽤ARTIST模型。
安装EasyNLP
⽤户可以直接参考GitHubhttps://github.com/alibaba/EasyNLP上的说明安装EasyNLP算法框架。
数据准备
准备自己的数据将image编码为base64形式ARTIST在具体领域应用需要finetune, 需要用户准备下游任务的训练与验证数据为tsv文件。这⼀⽂件包含以制表符\t分隔的三列idx, text, imgbase64第一列是文本编号第二列是文本第三列是对应图片的base64编码。样例如下
64b4109e34a0c3e7310588c00fc9e157 韩国可爱日系袜子女中筒袜春秋薄款纯棉学院风街头卡通兔子长袜潮 iVBORw0KGgoAAAAN...MAAAAASUVORK5CYII
下列⽂件已经完成预处理可⽤于训练和测试
https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/artist_text2image/T2I_train.tsv
https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/artist_text2image/T2I_val.tsv
https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/artist_text2image/T2I_test.tsv
2.将输入数据与lattice、entity位置信息拼接到一起输出格式为以制表符\t分隔的几列idx, text, lex_ids, pos_s, pos_e, seq_len, [Optional] imgbase64
# 下载entity to entity_id映射表
wget wget -P ./tmp https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/artist_text2image/entity2id.txtpython examples/text2image_generation/preprocess_data_knowl.py \--input_file ./tmp/T2I_train.tsv \--entity_map_file ./tmp/entity2id.txt \--output_file ./tmp/T2I_knowl_train.tsvpython examples/text2image_generation/preprocess_data_knowl.py \--input_file ./tmp/T2I_val.tsv \--entity_map_file ./tmp/entity2id.txt \--output_file ./tmp/T2I_knowl_val.tsvpython examples/text2image_generation/preprocess_data_knowl.py \--input_file ./tmp/T2I_test.tsv \--entity_map_file ./tmp/entity2id.txt \--output_file ./tmp/T2I_knowl_test.tsv
ARTIST文图生成微调和预测示例
在文图生成任务中我们对ARTIST进行微调之后用于微调后对模型进行预测。相关示例代码如下
# 下载entity_id与entity_vector的映射表
wget -P ./tmp https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/artist_text2image/entity2vec.pt# finetune
python -m torch.distributed.launch $DISTRIBUTED_ARGS examples/text2image_generation/main_knowl.py \--modetrain \--worker_gpu1 \--tables./tmp/T2I_knowl_train.tsv,./tmp/T2I_knowl_val.tsv \--input_schemaidx:str:1,text:str:1,lex_id:str:1,pos_s:str:1,pos_e:str:1,token_len:str:1,imgbase64:str:1, \--first_sequencetext \--second_sequenceimgbase64 \--checkpoint_dir./tmp/artist_model_finetune \--learning_rate4e-5 \--epoch_num2 \--random_seed42 \--logging_steps100 \--save_checkpoint_steps200 \--sequence_length288 \--micro_batch_size8 \--app_nametext2image_generation \--user_defined_parameterspretrain_model_name_or_pathalibaba-pai/pai-artist-knowl-base-zhentity_emb_path./tmp/entity2vec.ptsize256text_len32img_len256img_vocab_size16384 # predict
python -m torch.distributed.launch $DISTRIBUTED_ARGS examples/text2image_generation/main_knowl.py \--modepredict \--worker_gpu1 \--tables./tmp/T2I_knowl_test.tsv \--input_schemaidx:str:1,text:str:1,lex_id:str:1,pos_s:str:1,pos_e:str:1,token_len:str:1, \--first_sequencetext \--outputs./tmp/T2I_outputs_knowl.tsv \--output_schemaidx,text,gen_imgbase64 \--checkpoint_dir./tmp/artist_model_finetune \--sequence_length288 \--micro_batch_size8 \--app_nametext2image_generation \--user_defined_parametersentity_emb_path./tmp/entity2vec.ptsize256text_len32img_len256img_vocab_size16384max_generated_num4
在阿里云机器学习平台PAI上使用Transformer实现文图生成
PAI-DSWData Science Workshop是阿里云机器学习平台PAI开发的云上IDE面向不同水平的开发者提供了交互式的编程环境文档。在DSW Gallery中提供了各种Notebook示例方便用户轻松上手DSW搭建各种机器学习应用。我们也在DSW Gallery中上架了使用Transformer模型进行中文文图生成的Sample Notebook见下图欢迎大家体验 未来展望
在这一期的工作中我们在EasyNLP框架中扩展了基于Transformer的中文文图生成功能同时开放了模型的Checkpoint方便开源社区用户在资源有限情况下进行少量领域相关的微调进行各种艺术创作。在未来我们计划在EasyNLP框架中推出更多相关模型敬请期待。我们也将在EasyNLP框架中集成更多SOTA模型特别是中文模型来支持各种NLP和多模态任务。此外阿里云机器学习PAI团队也在持续推进中文多模态模型的自研工作欢迎用户持续关注我们也欢迎加入我们的开源社区共建中文NLP和多模态算法库
Github地址https://github.com/alibaba/EasyNLP
Reference
Chengyu Wang, Minghui Qiu, Taolin Zhang, Tingting Liu, Lei Li, Jianing Wang, Ming Wang, Jun Huang, Wei Lin. EasyNLP: A Comprehensive and Easy-to-use Toolkit for Natural Language Processing. EMNLP 2022Tingting Liu*, Chengyu Wang*, Xiangru Zhu, Lei Li, Minghui Qiu, Ming Gao, Yanghua Xiao, Jun Huang. ARTIST: A Transformer-based Chinese Text-to-Image Synthesizer Digesting Linguistic and World Knowledge. EMNLP 2022Aditya Ramesh, Mikhail Pavlov, Gabriel Goh, Scott Gray, Chelsea Voss, Alec Radford, Mark Chen, Ilya Sutskever. Zero-Shot Text-to-Image Generation. ICML 2021: 8821-8831
原文链接
本文为阿里云原创内容未经允许不得转载。