README.md 7.45 KB
Newer Older
lvskiller's avatar
readme  
lvskiller committed
1
2
# Monkey: Image Resolution and Text Label Are Important Things for Large Multi-modal Models

Melos's avatar
Melos committed
3

Yuliang Liu's avatar
Yuliang Liu committed
4
5
6
7
8
<br>
<p align="center">
    <img src="images/logo_monkey.png" width="300"/>
<p>
<br>
lvskiller's avatar
readme  
lvskiller committed
9
10

<div align="center">
Yuliang Liu's avatar
Yuliang Liu committed
11
Zhang Li*, Biao Yang*, Qiang Liu, Zhiyin Ma, Shuo Zhang, Jingxu Yang, Yabo Sun, Yuliang Liu†, Xiang Bai†
lvskiller's avatar
readme  
lvskiller committed
12
13
14
15
</div>
<div align="center">
<strong>Huazhong University of Science and Technology, Kingsoft</strong>
</div>
Yuliang Liu's avatar
Yuliang Liu committed
16
<p align="center">
Melos's avatar
Melos committed
17
<a href="https://arxiv.org/abs/2311.06607">Paper</a>&nbsp&nbsp | &nbsp&nbsp<a href="http://27.17.252.152:7680/">Demo</a>&nbsp&nbsp | &nbsp&nbsp<a href="http://huggingface.co/datasets/echo840/Detailed_Caption">Detailed Caption</a>&nbsp&nbsp | &nbsp&nbsp<a href="http://huggingface.co/echo840/Monkey">Model Weight</a>&nbsp&nbsp
lvskiller's avatar
lvskiller committed
18
<!--     | &nbsp&nbsp<a href="Monkey Model">Monkey Models</a>&nbsp | &nbsp <a href="http://huggingface.co/echo840/Monkey">Tutorial</a> -->
Yuliang Liu's avatar
Yuliang Liu committed
19
</p>
lvskiller's avatar
lvskiller committed
20

Melos's avatar
Melos committed
21
22
-----

Yuliang Liu's avatar
Yuliang Liu committed
23
**Monkey** brings a training-efficient approach to effectively improve the input resolution capacity up to 896 x 1344 pixels without pretraining from the start. To bridge the gap between simple text labels and high input resolution, we propose a multi-level description generation method, which automatically provides rich information that can guide the model to learn the contextual association between scenes and objects. With the synergy of these two designs, our model achieved excellent results on multiple benchmarks. By comparing our model with various LMMs, including GPT4V, our model demonstrates promising performance in image captioning by paying attention to textual information and capturing fine details within the images; its improved input resolution also enables remarkable performance in document images with dense text. 
Yuliang Liu's avatar
Yuliang Liu committed
24
    
lvskiller's avatar
lvskiller committed
25

lvskiller's avatar
readme  
lvskiller committed
26
27
## Spotlights

Yuliang Liu's avatar
Yuliang Liu committed
28
- **Contextual associations.** Our method demonstrates a superior ability to infer the relationships between targets more effectively when answering questions, which results in delivering more comprehensive and insightful results.
Melos's avatar
Melos committed
29
30
- **Support resolution up to 1344 x 896.** Surpassing the standard 448 x 448 resolution typically employed for LMMs, this significant increase in resolution augments the ability to discern and understand unnoticeable or tightly clustered objects and dense text. 
- **Enhanced general performance.** We carried out testing across 16 diverse datasets, leading to impressive performance by our Monkey model in tasks such as Image Captioning, General Visual Question Answering, Text-centric Visual Question Answering, and Document-oriented Visual Question Answering.
lvskiller's avatar
readme  
lvskiller committed
31

lvskiller's avatar
lvskiller committed
32
33
34
35
36
37
38
39
40
41
42
43
## Environment

```python
conda create -n monkey python=3.9
conda activate monkey
git clone https://github.com/Yuliang-Liu/Monkey.git
cd ./Monkey
pip install -r requirements.txt
```



Yuliang Liu's avatar
Yuliang Liu committed
44
## Demo
lvskiller's avatar
readme  
lvskiller committed
45

Melos's avatar
Melos committed
46
[Demo](http://27.17.252.152:7680/) is fast and easy to use. Simply uploading an image from your desktop or phone, or capture one directly. Before 14/11/2023, we have observed that for some random pictures Monkey can achieve more accurate results than GPT4V.  
Yuliang Liu's avatar
Yuliang Liu committed
47
48
<br>
<p align="center">
Yuliang Liu's avatar
Yuliang Liu committed
49
    <img src="images/demo_gpt4v_compare4.png" width="900"/>
Yuliang Liu's avatar
Yuliang Liu committed
50
51
52
53
<p>
<br>

For those who prefer responses in Chinese, use the '生成中文描述' button to get descriptions in Chinese.
lvskiller's avatar
lvskiller committed
54

Yuliang Liu's avatar
Yuliang Liu committed
55
<br>
Yuliang Liu's avatar
Yuliang Liu committed
56
<p align="center">
Yuliang Liu's avatar
Yuliang Liu committed
57
    <img src="images/generation_chn.png" width="900"/>
Yuliang Liu's avatar
Yuliang Liu committed
58
59
<p>
<br>
lvskiller's avatar
lvskiller committed
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
We also provide the source code for the demo, allowing you to customize certain parameters for a more unique experience. The specific operations are as follows:

 1. Make sure you have configured the [environment](#environment).
 2. You can choose to use the demo offline or online:
- **Offline:** 
	- Download the [Model Weight](http://huggingface.co/echo840/Monkey). 
	- Modify `DEFAULT_CKPT_PATH="pathto/Monkey"` in the `demo.py` file to your model weight path. 
	- Run the demo using the following command: 
	```
	python demo.py
	```
- **Online:** 
	- Run the demo and download model weights online with the following command: 
	```
	python demo.py -c echo840/Monkey 
	```

## Dataset

We have open-sourced the data generated by the multi-level description generation method. You can download it at [Detailed Caption](https://huggingface.co/datasets/echo840/Detailed_Caption).

## Evaluate

We offer evaluation code for 14 Visual Question Answering (VQA) datasets in the `evaluate_vqa.py` file, facilitating a quick verification of results.  The specific operations are as follows:

 1. Make sure you have configured the [environment](#environment).
 2. Modify `sys.path.append("pathto/Monkey")`  to your model weight path.
 3. Prepare the datasets required for evaluation. 
 4. Run the evaluation code.

 Take ESTVQA as an example:
 - Prepare data according to the following directory structure:
```
├── data
|	├── estvqa
|		├── test_image
|			├── {image_path0}
|			├── {image_path1}
|					  ·
|					  ·
|		├── estvqa.jsonl
```
 - Example of the format of each line of the annotated `.jsonl` file:
```
{"image": "data/estvqa/test_image/011364.jpg", "question": "What is this store?", "answer": "pizzeria", "question_id": 0}
```
 - Modify the dictionary `ds_collections`:
```
ds_collections = {
	'estvqa_test': {
	'test': 'data/estvqa/estvqa.jsonl',
	'metric': 'anls',
	'max_new_tokens': 100,
	},
	...
}
```
 - Run the following command:
```
bash eval/eval.sh 'EVAL_PTH' 'SAVE_NAME'
```

## Train

We also offer Monkey's model definition and training code, which you can explore above. You can execute the training code through executing `finetune_ds_debug.sh`.

**ATTENTION:** Specify the path to your training data, which should be a json file consisting of a list of conversations.


lvskiller's avatar
lvskiller committed
129
130


Yuliang Liu's avatar
Yuliang Liu committed
131

Yuliang Liu's avatar
Yuliang Liu committed
132
## Performance
lvskiller's avatar
lvskiller committed
133

Yuliang Liu's avatar
Yuliang Liu committed
134
<br>
Yuliang Liu's avatar
Yuliang Liu committed
135

Yuliang Liu's avatar
Yuliang Liu committed
136
<p align="center">
Yuliang Liu's avatar
Yuliang Liu committed
137
    <img src="images/radar.png" width="800"/>
Yuliang Liu's avatar
Yuliang Liu committed
138
139
<p>
<br>
Yuliang Liu's avatar
Yuliang Liu committed
140
141
142



lvskiller's avatar
readme  
lvskiller committed
143
144
## Cases

Yuliang Liu's avatar
Yuliang Liu committed
145
Our model can accurately describe the details in the image.
lvskiller's avatar
readme  
lvskiller committed
146

Yuliang Liu's avatar
Yuliang Liu committed
147
148
149
150
151
<br>
<p align="center">
    <img src="images/caption_1.png" width="700"/>
<p>
<br>
lvskiller's avatar
lvskiller committed
152

Yuliang Liu's avatar
Yuliang Liu committed
153
Besides, our model has also demonstrated some capabilities in fine-grained question answering.
lvskiller's avatar
readme  
lvskiller committed
154

Yuliang Liu's avatar
Yuliang Liu committed
155
156
157
158
159
<br>
<p align="center">
    <img src="images/qa_1.png" width="700"/>
<p>
<br>
lvskiller's avatar
readme  
lvskiller committed
160

Yuliang Liu's avatar
Yuliang Liu committed
161
We have also achieved impressive performance on document-based tasks.
lvskiller's avatar
readme  
lvskiller committed
162

Yuliang Liu's avatar
Yuliang Liu committed
163
164
165
166
167
<br>
<p align="center">
    <img src="images/Doc_Chart.png" width="700"/>
<p>
<br>
lvskiller's avatar
readme  
lvskiller committed
168

Yuliang Liu's avatar
Yuliang Liu committed
169
We qualitatively compare with existing LMMs including GPT4V, Qwen-vl, etc, which shows inspiring results. One can have a try using the provided demo. 
lvskiller's avatar
readme  
lvskiller committed
170

Yuliang Liu's avatar
Yuliang Liu committed
171
172
173
174
175
<br>
<p align="center">
    <img src="images/compare.png" width="800"/>
<p>
<br>
lvskiller's avatar
lvskiller committed
176

Yuliang Liu's avatar
Yuliang Liu committed
177
178
179
180
## Citing Monkey
If you wish to refer to the baseline results published here, please use the following BibTeX entries:

```BibTeX
Yuliang Liu's avatar
Yuliang Liu committed
181
@article{li2023monkey,
Yuliang Liu's avatar
Yuliang Liu committed
182
  title={Monkey: Image Resolution and Text Label Are Important Things for Large Multi-modal Models},
Yuliang Liu's avatar
Yuliang Liu committed
183
  author={Li, Zhang and Yang, Biao and Liu, Qiang and Ma, Zhiyin and Zhang, Shuo and Yang, Jingxu and Sun, Yabo and Liu, Yuliang and Bai, Xiang},
Yuliang Liu's avatar
Yuliang Liu committed
184
185
186
187
188
189
  journal={arXiv preprint arXiv:2311.06607},
  year={2023}
}
```

If you find the Monkey cute, please star. It would be a great encouragement for us.
lvskiller's avatar
lvskiller committed
190

lvskiller's avatar
readme  
lvskiller committed
191
192
## Acknowledgement

Melos's avatar
Melos committed
193
[Qwen-VL](https://github.com/QwenLM/Qwen-VL.git): the codebase we built upon. Thanks for the authors of Qwen for providing the framework.
lvskiller's avatar
readme  
lvskiller committed
194

Yuliang Liu's avatar
Yuliang Liu committed
195

Yuliang Liu's avatar
Yuliang Liu committed
196
## Copyright
Yuliang Liu's avatar
Yuliang Liu committed
197
We welcome suggestions to help us improve the Monkey. For any query, please contact Dr. Yuliang Liu: ylliu@hust.edu.cn. If you find something interesting, please also feel free to share with us through email or open an issue. Thanks!