File size: 8,642 Bytes
1d4f55a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
import streamlit as st
from streamlit_extras.switch_page_button import switch_page


translations = {
'en': {'title': 'DocOwl 1.5',
    'original_tweet': 
       """
       [Original tweet](https://twitter.com/mervenoyann/status/1782421257591357824) (April 22, 2024)
       """,
    'tweet_1':
        """
        DocOwl 1.5 is the state-of-the-art document understanding model by Alibaba with Apache 2.0 license 😍📝  
        Time to dive in and learn more 🧶 
        """,
    'tweet_2':
        """
        This model consists of a ViT-based visual encoder part that takes in crops of image and the original image itself.  
        Then the outputs of the encoder goes through a convolution based model, after that the outputs are merged with text and then fed to LLM. 
        """,
    'tweet_3':
        """
        Initially, the authors only train the convolution based part (called H-Reducer) and vision encoder while keeping LLM frozen.  
        Then for fine-tuning (on image captioning, VQA etc), they freeze vision encoder and train H-Reducer and LLM. 
        """,
    'tweet_4':
        """
        Also they use simple linear projection on text and documents. You can see below how they model the text prompts and outputs 🤓 
        """,
    'tweet_5':
        """
        They train the model various downstream tasks including:  
        - document understanding (DUE benchmark and more)  
        - table parsing (TURL, PubTabNet)  
        - chart parsing (PlotQA and more)  
        - image parsing (OCR-CC)  
        - text localization (DocVQA and more) 
        """,
    'tweet_6':
        """
        They contribute a new model called DocOwl 1.5-Chat by:  
        1. creating a new document-chat dataset with questions from document VQA datasets  
        2. feeding them to ChatGPT to get long answers  
        3. fine-tune the base model with it (which IMO works very well!) 
        """,
    'tweet_7':
        """
        Resulting generalist model and the chat model are pretty much state-of-the-art 😍  
        Below you can see how it compares to fine-tuned models.
        """,
    'tweet_8':
        """
        All the models and the datasets (also some eval datasets on above tasks!) are in this [organization](https://t.co/sJdTw1jWTR).  
        The [Space](https://t.co/57E9DbNZXf). 
        """,
    'ressources':
        """
        Ressources:  
        [mPLUG-DocOwl 1.5: Unified Structure Learning for OCR-free Document Understanding](https://arxiv.org/abs/2403.12895) 
        by Anwen Hu, Haiyang Xu, Jiabo Ye, Ming Yan, Liang Zhang, Bo Zhang, Chen Li, Ji Zhang, Qin Jin, Fei Huang, Jingren Zhou (2024)  
        [GitHub](https://github.com/X-PLUG/mPLUG-DocOwl)
        """
      },
'fr': {
    'title': 'DocOwl 1.5',
    'original_tweet': 
       """
       [Tweet de base](https://twitter.com/mervenoyann/status/1782421257591357824) (en anglais) (22 avril 2024)
       """,
    'tweet_1':
        """
        DocOwl 1.5 est le modèle de compréhension de documents d'Alibaba sous licence Apache 2.0 😍📝  
        Il est temps de découvrir ce modèle 🧶 
        """,
    'tweet_2':
        """
        Ce modèle se compose d'un encodeur visuel basé sur un ViT qui prend en compte les crops de l'image et l'image originale elle-même.  
        Les sorties de l'encodeur passent ensuite par un modèle convolutif, après quoi les sorties sont fusionnées avec le texte, puis transmises au LLM. 
        """,
    'tweet_3':
        """
        Au départ, les auteurs n'entraînent que la partie basée sur la convolution (appelée H-Reducer) et l'encodeur de vision tout en gardant le LLM gelé.  
        Ensuite, pour le finetuning (légendage d'image, VQA, etc.), ils gèlent l'encodeur de vision et entraînent le H-Reducer et le LLM. 
        """,
    'tweet_4':
        """  
        Ils utilisent également une simple projection linéaire sur le texte et les documents. Vous pouvez voir ci-dessous comment ils modélisent les prompts et les sorties textuelles 🤓 
        """,
    'tweet_5':
        """
        Ils entraînent le modèle pour diverses tâches en aval, notamment  
        - la compréhension de documents (DUE benchmark et autres)  
        - analyse de tableaux (TURL, PubTabNet)  
        - analyse de graphiques (PlotQA et autres)  
        - analyse d'images (OCR-CC)  
        - localisation de textes (DocVQA et autres) 
        """,
    'tweet_6':
        """
        Ils contribuent à un nouveau modèle appelé DocOwl 1.5-Chat en :  
        1. créant un nouveau jeu de données document-chat avec des questions provenant de jeux de données VQA
        2. en les envoyant à ChatGPT pour obtenir des réponses longues  
        3. en finetunant le modèle de base à l'aide de ce dernier (qui fonctionne très bien selon moi) 
        """,
    'tweet_7':
        """
        Le modèle généraliste qui en résulte et le modèle de chat sont pratiquement à l'état de l'art 😍  
        Ci-dessous, vous pouvez voir comment ils se comparent aux modèles finetunés.
        """,
    'tweet_8':
        """
        Tous les modèles et jeux de données (y compris certains jeux de données d'évaluation sur les tâches susmentionnées !) se trouvent dans cette [organisation](https://t.co/sJdTw1jWTR).          Le [Space](https://t.co/57E9DbNZXf). 
        """,
    'ressources':
        """
        Ressources :  
        [mPLUG-DocOwl 1.5: Unified Structure Learning for OCR-free Document Understanding](https://arxiv.org/abs/2403.12895) 
        de Anwen Hu, Haiyang Xu, Jiabo Ye, Ming Yan, Liang Zhang, Bo Zhang, Chen Li, Ji Zhang, Qin Jin, Fei Huang, Jingren Zhou (2024)  
        [GitHub](https://github.com/X-PLUG/mPLUG-DocOwl)
        """
    }
}    


def language_selector():
    languages = {'EN': '🇬🇧', 'FR': '🇫🇷'}
    selected_lang = st.selectbox('', options=list(languages.keys()), format_func=lambda x: languages[x], key='lang_selector')
    return 'en' if selected_lang == 'EN' else 'fr'

left_column, right_column = st.columns([5, 1])

# Add a selector to the right column
with right_column:
    lang = language_selector()

# Add a title to the left column
with left_column:
    st.title(translations[lang]["title"])
    
st.success(translations[lang]["original_tweet"], icon="ℹ️")
st.markdown(""" """)

st.markdown(translations[lang]["tweet_1"], unsafe_allow_html=True)
st.markdown(""" """)

st.image("pages/DocOwl_1.5/image_1.jpg", use_column_width=True)
st.markdown(""" """)

st.markdown(translations[lang]["tweet_2"], unsafe_allow_html=True)
st.markdown(""" """)

st.image("pages/DocOwl_1.5/image_2.jpeg", use_column_width=True)
st.markdown(""" """)

st.markdown(translations[lang]["tweet_3"], unsafe_allow_html=True)
st.markdown(""" """)

st.image("pages/DocOwl_1.5/image_3.jpeg", use_column_width=True)
st.markdown(""" """)

st.markdown(translations[lang]["tweet_4"], unsafe_allow_html=True)
st.markdown(""" """)

st.image("pages/DocOwl_1.5/image_4.jpeg", use_column_width=True)
st.markdown(""" """)

st.markdown(translations[lang]["tweet_5"], unsafe_allow_html=True)
st.markdown(""" """)

st.image("pages/DocOwl_1.5/image_5.jpeg", use_column_width=True)
st.markdown(""" """)

st.markdown(translations[lang]["tweet_6"], unsafe_allow_html=True)
st.markdown(""" """)

st.image("pages/DocOwl_1.5/image_6.jpeg", use_column_width=True)
st.markdown(""" """)

st.markdown(translations[lang]["tweet_7"], unsafe_allow_html=True)
st.markdown(""" """)

st.image("pages/DocOwl_1.5/image_7.jpeg", use_column_width=True)
st.markdown(""" """)

st.markdown(translations[lang]["tweet_8"], unsafe_allow_html=True)
st.markdown(""" """)

st.image("pages/DocOwl_1.5/image_8.jpeg", use_column_width=True)
st.markdown(""" """)

st.info(translations[lang]["ressources"], icon="📚")  

st.markdown(""" """)
st.markdown(""" """)
st.markdown(""" """)
col1, col2, col3= st.columns(3)
with col1:
    if lang == "en":
        if st.button('Previous paper', use_container_width=True):
            switch_page("Grounding DINO")
    else:
        if st.button('Papier précédent', use_container_width=True):
            switch_page("Grounding DINO")
with col2:
    if lang == "en":
        if st.button("Home", use_container_width=True):
            switch_page("Home")
    else:
        if st.button("Accueil", use_container_width=True):
            switch_page("Home")
with col3:
    if lang == "en":
        if st.button("Next paper", use_container_width=True):
            switch_page("MiniGemini")
    else:
        if st.button("Papier suivant", use_container_width=True):
            switch_page("MiniGemini")