Skip to content

CosmosYou/Yelpclassfication

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

背景介绍

伴随着互联网技术的不断提升,各大在线点评平台都致力于向用户提供更专业化的服务。用户和商家为餐馆提供了文字和图片,形成了丰富的餐馆介绍信息,这些信息需要分类存放。以Yelp网站为例,平台记录了大量餐馆的图像信息,每张图像信息可能附带有一些文字,这是典型的多模态数据。现在,平台需要为这些图片-文本分类,以供用户查看。

Environment

预装:Ubuntu20.04, Python 3.10, Pytorch 2.4.0, CUDA 11.8, cuDNN 8, NVCC, VNC

数据

Yelp 部分数据集 按照7 : 1.5 : 1.5 划分训练测试验证集

数据介绍

文件一:filter_photo.json,内部格式如下 { // string, 22 character unique photo id "photo_id": "_nN_DhLXkfwEkwPNxne9hw", // string, 22 character business id, 在本任务中无用 "business_id" : "tnhfDv5Il8EaGSXZGiuQGg", // string, the photo caption, if any "caption" : "carne asada fries", // string, the category the photo belongs to, if any "label" : "food" } 文件二:yelp_filtered_image.zip,解压后有20000张图片,图片名为{photo_id}.jpg

Method

yelp.sh 文件中的两行代码用于从公盘中复制解压文件,存储在/opt

cp /course362/yelp/filter_photo.json /opt
unzip /course362/yelp/yelp_filtered_image.zip -d /opt

由于在文本处理阶段使用了huggingface上的预训练模型,使用huggingface镜像。

在terminal中输入:

export HF_ENDPOINT=https://hf-mirror.com

另外还需要安装一些python包

pip install transformers timm

1.文本处理

对于文本的处理,我们需要提取文本的语义信息,以用于指导分类。在这里我们可以使用预训练好的文本模型BERT或者CLIP,代码中给出了参数可以选择使用哪个模型。

2.图片处理

对于图片处理,在此次实验中提出了两个方法,用来提取图片语义信息。

  • 直接使用预训练模型microsoft/resnet-50
  • 仿照ViT,利用文本信息指导图像信息的提取

ViT:将图片分成一个一个patch,每一个patch的大小是超参数。每一个patch进行嵌入,形成图像 patch 嵌入序列。有了一个序列就可以利用Transformer的方法进行处理。同时,将文本信息通过CrossAttention加入到训练过程中,进行模态信息的融合。

3. 模态信息融合

如果文本信息和图片信息都是使用的预训练的模型,一个简单但有效的方法是,直接将文本信息的embedding和图片得到的embedding相加,或者拼接,通过softmax层得到分类结果。

才用基于ViT修改的模型,在训练过程中实现了模态信息融合: alt text

4. Loss function

 nn.CrossEntropyLoss()

计算交叉熵,作为训练的损失。

优化器采用

optim.AdamW

Result

训练过程 alt text 训练损失 alt text

alt text

在测试集上ACC:0.815,precision:0.7428 有分类效果

code

code包括

yelp_classification.py 训练模型,并评估结果

module:model.py 定义了模型

utils: compute_metrics.py 计算评价结果的指标

text_represent.py 获取文字的embedding表示

About

Yelp dataset classification

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors