# Multimodal-Sentiment-Analysis
多模态情感分析——基于BERT+ResNet50的多种融合方法,数据学院人工智能课程第五次实验代码
本项目基于Hugging Face和torchvision实现,共有五种融合方法(2Naive 3Attention),在Models文件夹中查看
## Project Structure
```
|-- Multimodal-Sentiment-Analysis
|-- Config.py
|-- main.py
|-- README.md
|-- requirements.txt
|-- Trainer.py
|-- data
| |-- .DS_Store
| |-- test.json
| |-- test_without_label.txt
| |-- train.json
| |-- train.txt
| |-- data
|-- Models
| |-- CMACModel.py
| |-- HSTECModel.py
| |-- NaiveCatModel.py
| |-- NaiveCombineModel.py
| |-- OTEModel.py
| |-- __init__.py
|-- src
| |-- CrossModalityAttentionCombineModel.png
| |-- HiddenStateTransformerEncoderCombineModel.png
| |-- OutputTransformerEncoderModel.png
|-- utils
|-- common.py
|-- DataProcess.py
|-- __init__.py
|-- APIs
| |-- APIDataset.py
| |-- APIDecode.py
| |-- APIEncode.py
| |-- APIMetric.py
| |-- __init__.py
```
## Requirements
chardet==4.0.0
numpy==1.22.2
Pillow==9.2.0
scikit_learn==1.1.1
torch==1.8.2
torchvision==0.9.2
tqdm==4.63.0
transformers==4.18.0
```shell
pip install -r requirements.txt
```
## Model
两个Naive方法就不展示了
**CrossModalityAttentionCombine**
![CrossModalityAttentionCombineModel](./src/CrossModalityAttentionCombineModel.png)
**HiddenStateTransformerEncoder**
![HiddenStateTransformerEncoderCombineModel](./src/HiddenStateTransformerEncoderCombineModel.png)
**OutputTransformerEncoder**
![OutputTransformerEncoderModel](./src/OutputTransformerEncoderModel.png)
## Train
需下载数据集,并放在data文件夹中解压,数据集地址:链接: https://pan.baidu.com/s/10fOExXqSCS4NmIjfsfuo9w?pwd=gqzm 提取码: gqzm 复制这段内容后打开百度网盘手机App,操作更方便哦
```shell
python main.py --do_train --epoch 10 --text_pretrained_model roberta-base --fuse_model_type OTE 单模态(--text_only --img_only)
```
fuse_model_type可选:CMAC、HSTEC、OTE、NaiveCat、NaiveCombine
text_pretrain_model可在Hugging Face上选择合适的
## Test
```shell
python main.py --do_test --text_pretrained_model roberta-base --fuse_model_type OTE --load_model_path $your_model_path$ 单模态(--text_only --img_only)
```
## Config
```python
class config:
# 根目录
root_path = os.getcwd()
data_dir = os.path.join(root_path, './data/data/')
train_data_path = os.path.join(root_path, 'data/train.json')
test_data_path = os.path.join(root_path, 'data/test.json')
output_path = os.path.join(root_path, 'output')
output_test_path = os.path.join(output_path, 'test.txt')
load_model_path = None
# 一般超参
epoch = 20
learning_rate = 3e-5
weight_decay = 0
num_labels = 3
loss_weight = [1.68, 9.3, 3.36]
# Fuse相关
fuse_model_type = 'NaiveCombine'
only = None
middle_hidden_size = 64
attention_nhead = 8
attention_dropout = 0.4
fuse_dropout = 0.5
out_hidden_size = 128
# BERT相关
fixed_text_model_params = False
bert_name = 'roberta-base'
bert_learning_rate = 5e-6
bert_dropout = 0.2
# ResNet相关
fixed_img_model_params = False
image_size = 224
fixed_image_model_params = True
resnet_learning_rate = 5e-6
resnet_dropout = 0.2
img_hidden_seq = 64
# Dataloader params
checkout_params = {'batch_size': 4, 'shuffle': False}
train_params = {'batch_size': 16, 'shuffle': True, 'num_workers': 2}
val_params = {'batch_size': 16, 'shuffle': False, 'num_workers': 2}
test_params = {'batch_size': 8, 'shuffle': False, 'num_workers': 2}
```
## Result
| Model | Acc |
| ----------------------------- | ---------- |
| NaiveCat | 71.25 |
| NaiveCombine | 73.625 |
| CrossModalityAttentionCombine | 67.1875 |
| HiddenStateTransformerEncoder | 73.125 |
| **OutputTransformerEncoder** | **74.625** |
#### 消融实验
OutputTransformerEncoderModel Result:(另一模态输入文本为空字符串或空白图片)
| Feature | Acc |
| ---------- | ------ |
| Text Only | 71.875 |
| Image Only | 63 |
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
<项目介绍> - 多模态情感分析——基于BERT+ResNet50的多种融合方法,数据学院人工智能课程第五次实验代码 本项目基于Hugging Face和torchvision实现,共有五种融合方法(2Naive 3Attention),在Models文件夹中查看 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
资源推荐
资源详情
资源评论
收起资源包目录
多模态情感分析——基于BERT+ResNet的多种融合方法.zip (40个子文件)
Multimodal-Sentiment-Analysis-main
main.py 4KB
src
HiddenStateTransformerEncoderCombineModel.png 69KB
OutputTransformerEncoderModel.png 33KB
CrossModalityAttentionCombineModel.png 71KB
data
.DS_Store 8KB
test.json 87KB
train.json 715KB
test_without_label.txt 5KB
train.txt 53KB
LICENSE 11KB
Trainer.py 4KB
utils
__init__.py 0B
DataProcess.py 2KB
common.py 3KB
__pycache__
DataProcess.cpython-38.pyc 3KB
common.cpython-38.pyc 2KB
__init__.cpython-38.pyc 162B
APIs
__init__.py 0B
APIDecode.py 425B
APIEncode.py 2KB
APIMetric.py 278B
APIDataset.py 1KB
__pycache__
APIDataset.cpython-38.pyc 2KB
APIEncode.cpython-38.pyc 2KB
APIMetrics.cpython-38.pyc 298B
APIMetric.cpython-38.pyc 436B
APIDecode.cpython-38.pyc 647B
__init__.cpython-38.pyc 169B
requirements.txt 129B
Config.py 1KB
README.md 4KB
Models
NaiveCombineModel.py 3KB
__init__.py 0B
NaiveCatModel.py 3KB
CMACModel.py 5KB
HSTECModel.py 5KB
OTEModel.py 3KB
__pycache__
OTEModel.cpython-38.pyc 3KB
NaiveCombineModel.cpython-38.pyc 3KB
__init__.cpython-38.pyc 160B
共 40 条
- 1
资源评论
- sangaria2024-06-19发现一个宝藏资源,资源有很高的参考价值,赶紧学起来~
- 柒七Qi2024-09-18资源很赞,希望多一些这类资源。
- lyz20005102024-12-16感谢资源主的分享,很值得参考学习,资源价值较高,支持!
程序员无锋
- 粉丝: 3701
- 资源: 2564
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- SA213-TP310HCbN钢采用镍基焊丝ERNiCrCoMo-1焊接工艺探讨 - .pdf
- SA213-T91钢小管低温环境下的焊接工艺 - .pdf
- SA-335P91钢的焊接工艺探讨.pdf
- SA—335P91钢的焊接工艺试验研究.pdf
- SA335P91钢焊接工艺研究.pdf
- SA335P91集箱焊接工艺的改良.pdf
- SA-335P91耐热钢的焊接性试验研究.pdf
- SA387Gr.22C1.2钢在产品中的焊接.pdf
- SA904L钢板焊接工艺探讨.pdf
- SA-724MGrB层板的焊接工艺评定.pdf
- SA516-70+SA240-TP316L不锈复合钢板的焊接.pdf
- SA516 Cr60厚板塔器焊接.pdf
- SA516-Gr70钢焊接接头低温断裂阻力研究.pdf
- SAF2507超级双相不锈钢焊接技术研究现状.pdf
- SAF2205双相不锈钢焊接换热管热处理工艺及设备改进.pdf
- SAF2507与Q235钢异种金属焊接接头组织研究.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功