淘优惠

淘优惠

跨模态学习能力再升级,EasyNLP 电商文图检索效果刷新 SOTA

热门文章 0

淘宝搜:【红包到手500】领超级红包,京东搜:【红包到手500】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】

跨模态数据,跨模态的意思,跨模态迁移,什么是跨模态检索

多模态内容(例如图像、文本、语音、视频等)在互联网上的爆炸性增长推动了各种跨模态模型的研究与发展,支持了多种跨模态内容理解任务。在这些跨模态模型中,CLIP(Contrastive Language-Image Pre-training)是一种经典的文图跨模态检索模型,它在大规模图文数据集上进行了对比学习预训练,具有很强的文图跨模态表征学习能力。在先前的工作(看这里)中,中?NLP/多模态算法框架EasyNLP支持了CLIP的基础功能,包括模型的Finetune、文图向量抽取等。在本期的工作中,我们对EasyNLP框架进行了再一次升级,推出了融合了丰富电商场景知识的CLIP模型,在电商文图检索效果上刷新了SOTA结果,并且将上述模型免费开源,贡献给开源社区。

EasyNLP()是阿?云机器学习PAI 团队基于 PyTorch 开发的易?且丰富的NLP算法框架,?持常?的中?预训练模型和?模型落地技术,并且提供了从训练到部署的?站式 NLP 开发体验。EasyNLP 提供了简洁的接?供?户开发 NLP 模型,包括NLP应? AppZoo 和预训练 ModelZoo,同时提供技术帮助?户?效的落地超?预训练模型到业务。由于跨模态理解需求的不断增加,EasyNLP也?持各种跨模态模型,推向开源社区,希望能够服务更多的 NLP 和多模态算法开发者和研 究者,也希望和社区?起推动 NLP /多模态技术的发展和模型落地。

本?简要介绍我们在电商下对CLIP模型的优化,以及上述模型在公开数据集上的评测结果。最后,我们介绍如何在EasyNLP框架中调用上述电商CLIP模型。

OpenAI于2021年提出的CLIP(Contrastive Language-Image Pre-training)模型,收集了4亿文本-图像对进行图文对比学习训练,建立了图像和文本的关联性。CLIP模型包含两部分,分别为图像和文本的Encoder,用于对图像和文本分别进行特征抽取。CLIP的图像的Backbone有多个选择,既可以使用经典的ResNet系列模型,也可以选择近两年更先进的Transfomer类模型,例如ViT等。对于文本而言,CLIP一般使用BERT类模型,RoBERTa等也可以作为选择。

CLIP在特征抽取后,分别对图文向量进行Normalization,之后进一步进行内积计算,获取样本间的相似度。在模型Loss Function层面,由于我们对进行Normalization之后的图像和文本向量直接使用相乘以计算余弦距离,目的是使得匹配的图文对的结果趋近于1,不匹配的图文对的结果趋近于0;并且优化对比学习损失InfoNCE进行模型的预训练。

CLIP的双流架构使得其在推理阶段可以非常方便地用于计算图文相似度,因为CLIP已经将图文的表示映射到同一个向量空间。此外,通过对类别标签设计Prompt,CLIP的还具有强大的Zero-shot Classification能力。如下图所示,将文本标签转化为Prompt “A photo of a{object}.”,并且使用目标图像作为输出。如果文本“A photo of a dog.”于当前图像匹配度最高(具有最大的余弦相似度),即可以说明,当前图像的物体是“dog”。由此可见,预训练后的CLIP模型可以非常好的直接应用于图像分类模型,而不需要额外的训练。

EasyNLP借鉴CLIP的轻量化、易迁移的预训练架构,构建基于CLIP包含图像和文本Encoder两部分的双流模型,同时基于商品数据,以优化电商场景的文图检索优化。具体来说,我们采样了200万的商品图文数据,在OpenCLIP公开的模型权重上进行了继续预训练,使得模型具有电商领域的感知能力。同时,由于电商场景的文本概念分布稀疏,图像以商品图为主,具有较低的场景丰富性,因此,我们在预训练过程中更加关注电商概念的相关知识,引入了图文知识的细粒度交互,使得模型具备电商知识的识别能力。特别地,我们重点参考了DeCLIP的工作,对于电商概念构建其Prototype表征,存储在Feature Queue中,从而在训练过程中关注当前图文对与电商概念Prototype表征的匹配信息(见参考文献8)。

对图像部分的输入,我们将图像统一Resize为224×224的大小,并考虑不同的应用和部署场景,采用ViT-B-32(Vision Transformer层数为12,图像Patch大小为32×32)和ViT-L-14(Vision Transformer层数为24,图像patch大小为14×14)两种模型作为图像侧的Encoder。对于文本部分的输入,我们和CLIP一样采用12层Text Transformer作为文本侧Encoder,通过BPE分词器做文本预处理,并限定文本词长小于77。这两个电商场景的CLIP模型参数配置如下表:

模型配置alibaba-pai/pai-clip-commercial-base-enalibaba-pai/pai-clip-commercial-large-en
参数量(Parameters)151M428M
层数(Number of Layers)1224
注意力头数(Attention Heads)1216
隐向量维度(Hidden Size)7681024
文本长度(Text Length)7777
图像序列长度(Image Patch Size)32 x 3214 x 14
图像尺寸(Image Size)224 x 224224 x 224
词表大小(Vocabulary Size)4940849408

如上表所述,电商CLIP模型包含了两个不同的图像Encoder架构,为表中的pai-clip-commercial-base-en和pai-clip-commercial-large-en模型,分别代表ViT-B-32和ViT-L-14作为图像Backbone。

此外,我们也提供了两个中文的预训练CLIP模型,贡献到开源社区,相关配置如下:

模型配置alibaba-pai/clip_chinese_roberta_base_vit_basealibaba-pai/clip_chinese_roberta_base_vit_large
参数量(Parameters)188M406M
层数(Number of Layers)1224
注意力头数(Attention Heads)1216
隐向量维度(Hidden Size)7681024
文本长度(Text Length)7777
图像序列长度(Image Patch Size)16 x 1616 x 16
图像尺寸(Image Size)224 x 224224 x 224
词表大小(Vocabulary Size)2112821128

Fashion-Gen数据集是一个大规模的时尚场景的图文数据集,是电商领域FashionBERT、KaleidoBERT、CommerceMM等模型用来评测检索效果的较为通用的数据集。Fashion-Gen共包含293,088条商品图文数据,其中训练集包含260,480个图文对,验证集和测试集包含32,528条图文对。Fashion-Gen中的商品数据包含48个大类别,121个小类别,在训练和测试数据中类别最多的包括"tops","sweaters","jackets & coats"等。我们基于pai-clip-commercial-base-en和pai-clip-commercial-large-en这两个模型在Fashion-Gen数据集上进行了20个epoch的微调。

如下表所示,实验结果表明,相比于现公布的SOTA模型(CommerceMM),在文到图和图到文的检索结果上,我们的电商CLIP已经有了显著的效果提升。其中,Rank@1,Rank@5和Rank@10分别代表图文或文图检索结果Top 1、Top 5和Top 10中含有正确结果的准确率。我们的电商CLIP-large模型,在图文检索的结果上提升了2.9~5.6个百分点,在文图检索上的表现更加优秀,在三个评测指标上提升了8.7~15个百分点。电商base模型在文到图的检索结果上与CommerceMM相当,却使用了更少的参数量。电商CLIP无论在large还是base图像Encoder的设置下,都取得了有竞争力的电商场景跨模态检索能力。

文到图检索评测结果

图到文检索评测结果

如下展示了EasyNLP电商CLIP在Fashion-Gen验证集上的文图检索结果,对于相同的文本,我们分别展示了我们模型和开源CLIP模型的Top-1图像检索结果:

通过上述案例展示可以看出,EasyNLP电商CLIP在图文交互过程中可以捕捉更细粒度的时尚信息,更进一步在概念知识层级实现图文样本的跨模态对齐。如case 1所示,EasyNLP电商CLIP更准确的捕捉了目标商品图片的主体为“Midi skirt in pine green.”,并使得包含了“midi skirt”,“pine green”,“bow accent”,“ruffled detail”等细粒度时尚正确的图像――正面荷叶边、腰部含有蝴蝶结装饰、松绿色、中长半身裙的商品图与文本有更高的相似度。没有在预训练过程中注入电商知识的模型虽然也检索到了松绿色的商品图,但在商品主体定位上即产生了错误。case 4则更关注到了细粒度的时尚概念“three-button placket.”,使包含这些特征的正确图片(第二列)排名更靠前。case 4第三列的商品图虽然同样可以匹配“long sleeve”,“'medium' grey”等特征,但相比于ground-truth图像,其仅反映了query的部分信息。同样的,case 5中的错误图像仅关注了“in black”,“fringed edges”等细节概念,而忽视了query中特征的主体应为“sandals”。通过EasyNLP电商CLIP对于图文时尚概念的对齐,则可以很好的避免这些错误的匹配。

在EasyNLP框架中,我们在模型层构建了CLIP模型的Backbone,其核?代码如下所示:

    def forward(self, inputs,feat=None):          if self.model_type=='open_clip':              _device=self.open_clip.text_projection.device              logit_scale=self.open_clip.logit_scale.exp()          elif self.model_type=='chinese_clip':              _device=self.chinese_clip.text_projection.device              logit_scale=self.chinese_clip.logit_scale.exp()          else:              _device=self.text_projection.weight.device              logit_scale=self.logit_scale.exp()          if 'pixel_values' in inputs:              inputs['pixel_values']=inputs['pixel_values'].to(_device)          else:              inputs['pixel_values']=None          if 'input_ids' in inputs:              inputs['input_ids']=inputs['input_ids'].to(_device)          else:              inputs['input_ids']=None          if self.model_type=='open_clip':              image_embeds, text_embeds=self.open_clip(inputs['pixel_values'], inputs['input_ids'])           elif self.model_type=='chinese_clip':              image_embeds, text_embeds=self.chinese_clip(inputs['pixel_values'], inputs['input_ids'])                       else:              image_embeds=None              text_embeds=None              if 'input_ids' in inputs:                  text_outputs=self.text_encoder(input_ids=inputs['input_ids'],                  token_type_ids=inputs['token_type_ids'].to(_device),                  attention_mask=inputs['attention_mask'].to(_device))                  text_embeds=text_outputs[1]                  text_embeds=self.text_projection(text_embeds)                  text_embeds=text_embeds / text_embeds.norm(dim=-1, keepdim=True)              if 'pixel_values' in inputs:                  vision_outputs=self.vision_encoder(                      pixel_values=inputs['pixel_values']                  )                  image_embeds=vision_outputs[1].detach()                  image_embeds=self.vision_projection(image_embeds)                  image_embeds=image_embeds / image_embeds.norm(dim=-1, keepdim=True)          if feat is True:              return{'image_embeds':image_embeds,'text_embeds':text_embeds}          # cosine similarity as logits          logits_per_text=torch.matmul(text_embeds, image

跨模态学习能力再升级,EasyNLP电商文图检索效果刷新SOTA

跨模态图像检索,跨模态检索研究的前景,跨模态检索在生活中的应用,跨模态 transformer

作者:熊兮、欢夏、章捷、临在

多模态内容(例如图像、文本、语音、视频等)在互联网上的爆炸性增长推动了各种跨模态模型的研究与发展,支持了多种跨模态内容理解任务。在这些跨模态模型中,CLIP(Contrastive Language-Image Pre-training)是一种经典的文图跨模态检索模型,它在大规模图文数据集上进行了对比学习预训练,具有很强的文图跨模态表征学习能力。在先前的工作(看这里)中,中?NLP/多模态算法框架EasyNLP支持了CLIP的基础功能,包括模型的Finetune、文图向量抽取等。在本期的工作中,我们对EasyNLP框架进行了再一次升级,推出了融合了丰富电商场景知识的CLIP模型,在电商文图检索效果上刷新了SOTA结果,并且将上述模型免费开源,贡献给开源社区。

EasyNLP()是阿?云机器学习PAI 团队基于 PyTorch 开发的易?且丰富的NLP算法框架,?持常?的中?预训练模型和?模型落地技术,并且提供了从训练到部署的?站式 NLP 开发体验。EasyNLP 提供了简洁的接?供?户开发 NLP 模型,包括NLP应? AppZoo 和预训练 ModelZoo,同时提供技术帮助?户?效的落地超?预训练模型到业务。由于跨模态理解需求的不断增加,EasyNLP也?持各种跨模态模型,推向开源社区,希望能够服务更多的 NLP 和多模态算法开发者和研 究者,也希望和社区?起推动 NLP /多模态技术的发展和模型落地。

本?简要介绍我们在电商下对CLIP模型的优化,以及上述模型在公开数据集上的评测结果。最后,我们介绍如何在EasyNLP框架中调用上述电商CLIP模型。

OpenAI于2021年提出的CLIP(Contrastive Language-Image Pre-training)模型,收集了4亿文本-图像对进行图文对比学习训练,建立了图像和文本的关联性。CLIP模型包含两部分,分别为图像和文本的Encoder,用于对图像和文本分别进行特征抽取。CLIP的图像的Backbone有多个选择,既可以使用经典的ResNet系列模型,也可以选择近两年更先进的Transfomer类模型,例如ViT等。对于文本而言,CLIP一般使用BERT类模型,RoBERTa等也可以作为选择。

CLIP在特征抽取后,分别对图文向量进行Normalization,之后进一步进行内积计算,获取样本间的相似度。在模型Loss Function层面,由于我们对进行Normalization之后的图像和文本向量直接使用相乘以计算余弦距离,目的是使得匹配的图文对的结果趋近于1,不匹配的图文对的结果趋近于0;并且优化对比学习损失InfoNCE进行模型的预训练。

CLIP的双流架构使得其在推理阶段可以非常方便地用于计算图文相似度,因为CLIP已经将图文的表示映射到同一个向量空间。此外,通过对类别标签设计Prompt,CLIP的还具有强大的Zero-shot Classification能力。如下图所示,将文本标签转化为Prompt “A photo of a{object}.”,并且使用目标图像作为输出。如果文本“A photo of a dog.”于当前图像匹配度最高(具有最大的余弦相似度),即可以说明,当前图像的物体是“dog”。由此可见,预训练后的CLIP模型可以非常好的直接应用于图像分类模型,而不需要额外的训练。

EasyNLP借鉴CLIP的轻量化、易迁移的预训练架构,构建基于CLIP包含图像和文本Encoder两部分的双流模型,同时基于商品数据,以优化电商场景的文图检索优化。具体来说,我们采样了200万的商品图文数据,在OpenCLIP公开的模型权重上进行了继续预训练,使得模型具有电商领域的感知能力。同时,由于电商场景的文本概念分布稀疏,图像以商品图为主,具有较低的场景丰富性,因此,我们在预训练过程中更加关注电商概念的相关知识,引入了图文知识的细粒度交互,使得模型具备电商知识的识别能力。特别地,我们重点参考了DeCLIP的工作,对于电商概念构建其Prototype表征,存储在Feature Queue中,从而在训练过程中关注当前图文对与电商概念Prototype表征的匹配信息(见参考文献8)。

对图像部分的输入,我们将图像统一Resize为224×224的大小,并考虑不同的应用和部署场景,采用ViT-B-32(Vision Transformer层数为12,图像Patch大小为32×32)和ViT-L-14(Vision Transformer层数为24,图像patch大小为14×14)两种模型作为图像侧的Encoder。对于文本部分的输入,我们和CLIP一样采用12层Text Transformer作为文本侧Encoder,通过BPE分词器做文本预处理,并限定文本词长小于77。这两个电商场景的CLIP模型参数配置如下表:

模型配置alibaba-pai/pai-clip-commercial-base-enalibaba-pai/pai-clip-commercial-large-en
参数量(Parameters)151M428M
层数(Number of Layers)1224
注意力头数(Attention Heads)1216
隐向量维度(Hidden Size)7681024
文本长度(Text Length)7777
图像序列长度(Image Patch Size)32 x 3214 x 14
图像尺寸(Image Size)224 x 224224 x 224
词表大小(Vocabulary Size)4940849408

如上表所述,电商CLIP模型包含了两个不同的图像Encoder架构,为表中的pai-clip-commercial-base-en和pai-clip-commercial-large-en模型,分别代表ViT-B-32和ViT-L-14作为图像Backbone。

此外,我们也提供了两个中文的预训练CLIP模型,贡献到开源社区,相关配置如下:

模型配置alibaba-pai/clip_chinese_roberta_base_vit_basealibaba-pai/clip_chinese_roberta_base_vit_large
参数量(Parameters)188M406M
层数(Number of Layers)1224
注意力头数(Attention Heads)1216
隐向量维度(Hidden Size)7681024
文本长度(Text Length)7777
图像序列长度(Image Patch Size)16 x 1616 x 16
图像尺寸(Image Size)224 x 224224 x 224
词表大小(Vocabulary Size)2112821128

Fashion-Gen数据集是一个大规模的时尚场景的图文数据集,是电商领域FashionBERT、KaleidoBERT、CommerceMM等模型用来评测检索效果的较为通用的数据集。Fashion-Gen共包含293,088条商品图文数据,其中训练集包含260,480个图文对,验证集和测试集包含32,528条图文对。Fashion-Gen中的商品数据包含48个大类别,121个小类别,在训练和测试数据中类别最多的包括"tops","sweaters","jackets & coats"等。我们基于pai-clip-commercial-base-en和pai-clip-commercial-large-en这两个模型在Fashion-Gen数据集上进行了20个epoch的微调。

如下表所示,实验结果表明,相比于现公布的SOTA模型(CommerceMM),在文到图和图到文的检索结果上,我们的电商CLIP已经有了显著的效果提升。其中,Rank@1,Rank@5和Rank@10分别代表图文或文图检索结果Top 1、Top 5和Top 10中含有正确结果的准确率。我们的电商CLIP-large模型,在图文检索的结果上提升了2.9~5.6个百分点,在文图检索上的表现更加优秀,在三个评测指标上提升了8.7~15个百分点。电商base模型在文到图的检索结果上与CommerceMM相当,却使用了更少的参数量。电商CLIP无论在large还是base图像Encoder的设置下,都取得了有竞争力的电商场景跨模态检索能力。

文到图检索评测结果

图到文检索评测结果

如下展示了EasyNLP电商CLIP在Fashion-Gen验证集上的文图检索结果,对于相同的文本,我们分别展示了我们模型和开源CLIP模型的Top-1图像检索结果:

通过上述案例展示可以看出,EasyNLP电商CLIP在图文交互过程中可以捕捉更细粒度的时尚信息,更进一步在概念知识层级实现图文样本的跨模态对齐。如case 1所示,EasyNLP电商CLIP更准确的捕捉了目标商品图片的主体为“Midi skirt in pine green.”,并使得包含了“midi skirt”,“pine green”,“bow accent”,“ruffled detail”等细粒度时尚正确的图像――正面荷叶边、腰部含有蝴蝶结装饰、松绿色、中长半身裙的商品图与文本有更高的相似度。没有在预训练过程中注入电商知识的模型虽然也检索到了松绿色的商品图,但在商品主体定位上即产生了错误。case 4则更关注到了细粒度的时尚概念“three-button placket.”,使包含这些特征的正确图片(第二列)排名更靠前。case 4第三列的商品图虽然同样可以匹配“long sleeve”,“'medium' grey”等特征,但相比于ground-truth图像,其仅反映了query的部分信息。同样的,case 5中的错误图像仅关注了“in black”,“fringed edges”等细节概念,而忽视了query中特征的主体应为“sandals”。通过EasyNLP电商CLIP对于图文时尚概念的对齐,则可以很好的避免这些错误的匹配。

在EasyNLP框架中,我们在模型层构建了CLIP模型的Backbone,其核?代码如下所示:

    def forward(self, inputs,feat=None):          if self.model_type=='open_clip':              _device=self.open_clip.text_projection.device              logit_scale=self.open_clip.logit_scale.exp()          elif self.model_type=='chinese_clip':              _device=self.chinese_clip.text_projection.device              logit_scale=self.chinese_clip.logit_scale.exp()          else:              _device=self.text_projection.weight.device              logit_scale=self.logit_scale.exp()          if 'pixel_values' in inputs:              inputs['pixel_values']=inputs['pixel_values'].to(_device)          else:              inputs['pixel_values']=None          if 'input_ids' in inputs:              inputs['input_ids']=inputs['input_ids'].to(_device)          else:              inputs['input_ids']=None          if self.model_type=='open_clip':              image_embeds, text_embeds=self.open_clip(inputs['pixel_values'], inputs['input_ids'])           elif self.model_type=='chinese_clip':              image_embeds, text_embeds=self.chinese_clip(inputs['pixel_values'], inputs['input_ids'])                       else:              image_embeds=None              text_embeds=None              if 'input_ids' in inputs:                  text_outputs=self.text_encoder(input_ids=inputs['input_ids'],                  token_type_ids=inputs['token_type_ids'].to(_device),                  attention_mask=inputs['attention_mask'].to(_device))                  text_embeds=text_outputs[1]                  text_embeds=self.text_projection(text_embeds)                  text_embeds=text_embeds / text_embeds.norm(dim=-1, keepdim=True)              if 'pixel_values' in inputs:                  vision_outputs=self.vision_encoder(                      pixel_values=inputs['pixel_values']                  )                  image_embeds=vision_outputs[1].detach()                  image_embeds=self.vision_projection(image_embeds)                  image_embeds=image_embeds / image_embeds.norm(dim=-1, keepdim=True)          if feat is True:              return{'image_embeds':image_embeds,'text_embeds':text_embeds}          # cosine similarity as logits          logits_per_text=tor

车内除味有什么办法


限时: 中环转运注册送100元优惠券

车内除味    国家室内环境监测中心宋广生主任发布车内空气质量污染防控警示:解决新车车内空气质量污染问题的十招。  

  1、消费者在购买新车时,最好进行车内环境质量检测。了解和掌握车内环境污染情况,对于控制和解决车内环境污染问题具有重要作用。    2、消费者一定要增强自我保护意识  在选择车内装饰材料时候,要防止一些含有有害物质的地胶、座套垫、胶粘剂进入车内。  

3、 在开新车的前6个月内一定要加强通风,使车内环境中的有害物质尽快挥发  如果新车内气味在三个月甚至六个月内都不能完全散发,或者驾车人有不良反应,比如发现熏眼睛、呼吸刺激甚至头晕的感觉,应该对车内空气质量进行检测,以尽快发现和清除车内污染源。  

4、 体弱者、妊娠期妇女、儿童和有过敏性体质的人尽量避免在密封的条件下长时间驾驶和乘坐新车。妇女对苯、甲醛的吸入反应格外敏感,特别是妊娠期妇女长期吸入苯会导致胎儿发育畸形和流产。  

5、 新车内饰件和座椅的原始包装必须尽快拆除,新车通常会有一些塑料包装,车主在开始用车后应尽早去除这些多余的包装,以免原本可以解决的污染闷在车内“发酵”,从而产生空气污染。   

6、 许多车主喜欢在自己的车内放香水以改善室内气味,这是治标不治本,表面上异味消除了,但是目前许多香水并非天然提取物,而是化学合成品,本身就具有一定的污染,实际上空气质量没有任何改善,反而会破坏车内的空气质量。另外,决不存在适用于所有用户的香味。一个人喜欢的气味可能会让另一个人觉得不舒服。   

7、 采用有效的净化车内空气污染的措施,目前一些厂家生产了一些净化车内空气的产品,比如空气净化器和空气净化材料活性炭竹炭等等,能够降低车内污染,但是一定要注意选择有效果的。  

8、 长时间开车注意车内空调的使用和车内空气通风  在长时间驾车行驶的时候,不要长时间开空调,或者长时间使用车内循环通风系统,可以阶段性使用外循环通风系统。或者使用天窗或者开窗通风。因为车内长时间封闭,人员在车内会造成缺氧。   

9、注意后备箱成为车内异味的来源  后备箱中存放的物品气味会进入到车内,成为车内环境污染问题,比如新车的轮胎放在后备箱内的气味会进入车内。应该及时进行清洁和清理。  

10、 可以请有资质的车内空气净化治理服务公司,进行车内空气中的有害物质和异味的净化治理服务,可以尽快消除车内空气中的挥发性有机物。

蜻蜓品牌旗舰店 百丽官方旗舰店 西村名物官网 esprit官方旗舰店

GXG官方旗舰店 植美村旗舰店 哈森官方旗舰店 梦特娇皮具官方旗舰店

关于本站

Copyright © 2023 欢迎来到我的小站 备案号:粤ICP备2020117555号 |淘宝互助 |隋唐演义 | 名诗名词 | 淘宝优惠

联系我们

合作或咨询可通过如下方式:

QQ:

邮箱:

关注我们

淘优惠