pepereeee yizhangliu commited on
Commit
0f1722b
0 Parent(s):

Duplicate from yizhangliu/Text-to-Image

Browse files

Co-authored-by: yizhangliu <yizhangliu@users.noreply.huggingface.co>

Files changed (5) hide show
  1. .gitattributes +34 -0
  2. README.md +13 -0
  3. app.py +370 -0
  4. baidu_translate/module.py +104 -0
  5. requirements.txt +8 -0
.gitattributes ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Text To Image
3
+ emoji: 👀
4
+ colorFrom: purple
5
+ colorTo: indigo
6
+ sdk: gradio
7
+ sdk_version: 3.12.0
8
+ app_file: app.py
9
+ pinned: false
10
+ duplicated_from: yizhangliu/Text-to-Image
11
+ ---
12
+
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,370 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers import pipeline
2
+ import gradio as gr
3
+ import random
4
+ import string
5
+ import paddlehub as hub
6
+ import torch
7
+ from transformers import AutoModelForCausalLM, AutoTokenizer
8
+ from loguru import logger
9
+
10
+ language_translation_model = hub.Module(directory=f'./baidu_translate')
11
+ def getTextTrans(text, source='zh', target='en'):
12
+ def is_chinese(string):
13
+ for ch in string:
14
+ if u'\u4e00' <= ch <= u'\u9fff':
15
+ return True
16
+ return False
17
+
18
+ if not is_chinese(text) and target == 'en':
19
+ return text
20
+
21
+ try:
22
+ text_translation = language_translation_model.translate(text, source, target)
23
+ return text_translation
24
+ except Exception as e:
25
+ return text
26
+
27
+ space_ids = {
28
+ "spaces/stabilityai/stable-diffusion": "SD 2.1",
29
+ "spaces/runwayml/stable-diffusion-v1-5": "SD 1.5",
30
+ "spaces/stabilityai/stable-diffusion-1": "SD 1.0",
31
+ "spaces/IDEA-CCNL/Taiyi-Stable-Diffusion-Chinese": "Taiyi(太乙)",
32
+ }
33
+
34
+ tab_actions = []
35
+ tab_titles = []
36
+
37
+ extend_prompt_1 = True
38
+ extend_prompt_2 = True
39
+ extend_prompt_3 = True
40
+
41
+ thanks_info = "Thanks: "
42
+ if extend_prompt_1:
43
+ extend_prompt_pipe = pipeline('text-generation', model='yizhangliu/prompt-extend', max_length=77, pad_token_id=0)
44
+ thanks_info += "[<a style='display:inline-block' href='https://huggingface.co/spaces/daspartho/prompt-extend' _blank><font style='color:blue;weight:bold;'>prompt-extend(1)</font></a>]"
45
+ if extend_prompt_2:
46
+ def load_prompter():
47
+ prompter_model = AutoModelForCausalLM.from_pretrained("microsoft/Promptist")
48
+ tokenizer = AutoTokenizer.from_pretrained("gpt2")
49
+ tokenizer.pad_token = tokenizer.eos_token
50
+ tokenizer.padding_side = "left"
51
+ return prompter_model, tokenizer
52
+ prompter_model, prompter_tokenizer = load_prompter()
53
+ def extend_prompt_microsoft(in_text):
54
+ input_ids = prompter_tokenizer(in_text.strip()+" Rephrase:", return_tensors="pt").input_ids
55
+ eos_id = prompter_tokenizer.eos_token_id
56
+ outputs = prompter_model.generate(input_ids, do_sample=False, max_new_tokens=75, num_beams=8, num_return_sequences=8, eos_token_id=eos_id, pad_token_id=eos_id, length_penalty=-1.0)
57
+ output_texts = prompter_tokenizer.batch_decode(outputs, skip_special_tokens=True)
58
+ res = output_texts[0].replace(in_text+" Rephrase:", "").strip()
59
+ return res
60
+ thanks_info += "[<a style='display:inline-block' href='https://huggingface.co/spaces/microsoft/Promptist' _blank><font style='color:blue;weight:bold;'>Promptist(2)</font></a>]"
61
+ if extend_prompt_3:
62
+ MagicPrompt = gr.Interface.load("spaces/Gustavosta/MagicPrompt-Stable-Diffusion")
63
+ thanks_info += "[<a style='display:inline-block' href='https://huggingface.co/spaces/Gustavosta/MagicPrompt-Stable-Diffusion' _blank><font style='color:blue;weight:bold;'>MagicPrompt(3)</font></a>]"
64
+
65
+ do_dreamlike_photoreal = False
66
+ if do_dreamlike_photoreal:
67
+ def add_random_noise(prompt, noise_level=0.1):
68
+ # Get the percentage of characters to add as noise
69
+ percentage_noise = noise_level * 5
70
+ # Get the number of characters to add as noise
71
+ num_noise_chars = int(len(prompt) * (percentage_noise/100))
72
+ # Get the indices of the characters to add noise to
73
+ noise_indices = random.sample(range(len(prompt)), num_noise_chars)
74
+ # Add noise to the selected characters
75
+ prompt_list = list(prompt)
76
+ for index in noise_indices:
77
+ prompt_list[index] = random.choice(string.ascii_letters + string.punctuation)
78
+ new_prompt = "".join(prompt_list)
79
+ return new_prompt
80
+
81
+ dreamlike_photoreal_2_0 = gr.Interface.load("models/dreamlike-art/dreamlike-photoreal-2.0")
82
+ dreamlike_image = gr.Image(label="Dreamlike Photoreal 2.0")
83
+
84
+ tab_actions.append(dreamlike_image)
85
+ tab_titles.append("Dreamlike_2.0")
86
+ thanks_info += "[<a style='display:inline-block' href='https://huggingface.co/dreamlike-art/dreamlike-photoreal-2.0' _blank><font style='color:blue;weight:bold;'>dreamlike-photoreal-2.0</font></a>]"
87
+
88
+ for space_id in space_ids.keys():
89
+ print(space_id, space_ids[space_id])
90
+ try:
91
+ tab = gr.Interface.load(space_id)
92
+ tab_actions.append(tab)
93
+ tab_titles.append(space_ids[space_id])
94
+ thanks_info += f"[<a style='display:inline-block' href='https://huggingface.co/{space_id}' _blank><font style='color:blue;weight:bold;'>{space_ids[space_id]}</font></a>]"
95
+ except Exception as e:
96
+ logger.info(f"load_fail__{space_id}_{e}")
97
+
98
+ start_work = """async() => {
99
+ function isMobile() {
100
+ try {
101
+ document.createEvent("TouchEvent"); return true;
102
+ } catch(e) {
103
+ return false;
104
+ }
105
+ }
106
+ function getClientHeight()
107
+ {
108
+ var clientHeight=0;
109
+ if(document.body.clientHeight&&document.documentElement.clientHeight) {
110
+ var clientHeight = (document.body.clientHeight<document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight;
111
+ } else {
112
+ var clientHeight = (document.body.clientHeight>document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight;
113
+ }
114
+ return clientHeight;
115
+ }
116
+
117
+ function setNativeValue(element, value) {
118
+ const valueSetter = Object.getOwnPropertyDescriptor(element.__proto__, 'value').set;
119
+ const prototype = Object.getPrototypeOf(element);
120
+ const prototypeValueSetter = Object.getOwnPropertyDescriptor(prototype, 'value').set;
121
+
122
+ if (valueSetter && valueSetter !== prototypeValueSetter) {
123
+ prototypeValueSetter.call(element, value);
124
+ } else {
125
+ valueSetter.call(element, value);
126
+ }
127
+ }
128
+
129
+ window['tab_advanced'] = 0;
130
+
131
+ var gradioEl = document.querySelector('body > gradio-app').shadowRoot;
132
+ if (!gradioEl) {
133
+ gradioEl = document.querySelector('body > gradio-app');
134
+ }
135
+
136
+ if (typeof window['gradioEl'] === 'undefined') {
137
+ window['gradioEl'] = gradioEl;
138
+
139
+ tabitems = window['gradioEl'].querySelectorAll('.tabitem');
140
+ tabitems_title = window['gradioEl'].querySelectorAll('#tab_demo')[0].children[0].children[0].children;
141
+
142
+ for (var i = 0; i < tabitems.length; i++) {
143
+ if (tabitems_title[i].innerText.indexOf('SD') >= 0) {
144
+ tabitems[i].childNodes[0].children[0].style.display='none';
145
+ for (var j = 0; j < tabitems[i].childNodes[0].children[1].children.length; j++) {
146
+ if (j != 1) {
147
+ tabitems[i].childNodes[0].children[1].children[j].style.display='none';
148
+ }
149
+ }
150
+ if (tabitems_title[i].innerText.indexOf('SD 1') >= 0) {
151
+ for (var j = 0; j < 4; j++) {
152
+ tabitems[i].childNodes[0].children[1].children[3].children[1].children[j].children[2].removeAttribute("disabled");
153
+ }
154
+ } else if (tabitems_title[i].innerText.indexOf('SD 2') >= 0) {
155
+ tabitems[i].children[0].children[1].children[3].children[0].click();
156
+ }
157
+ } else if (tabitems_title[i].innerText.indexOf('Taiyi') >= 0) {
158
+ tabitems[i].children[0].children[0].children[1].style.display='none';
159
+ tabitems[i].children[0].children[0].children[0].children[0].children[1].style.display='none';
160
+ } else if (tabitems_title[i].innerText.indexOf('Dreamlike') >= 0) {
161
+ tabitems[i].childNodes[0].children[0].children[1].style.display='none';
162
+ }
163
+ }
164
+
165
+ tab_demo = window['gradioEl'].querySelectorAll('#tab_demo')[0];
166
+ tab_demo.style.display = "block";
167
+ tab_demo.setAttribute('style', 'height: 100%;');
168
+ const page1 = window['gradioEl'].querySelectorAll('#page_1')[0];
169
+ const page2 = window['gradioEl'].querySelectorAll('#page_2')[0];
170
+
171
+ btns_1 = window['gradioEl'].querySelector('#input_col1_row3').children;
172
+ btns_1_split = 100 / btns_1.length;
173
+ for (var i = 0; i < btns_1.length; i++) {
174
+ btns_1[i].setAttribute('style', 'min-width:0px;width:' + btns_1_split + '%;');
175
+ }
176
+ page1.style.display = "none";
177
+ page2.style.display = "block";
178
+
179
+ prompt_work = window['gradioEl'].querySelectorAll('#prompt_work');
180
+ for (var i = 0; i < prompt_work.length; i++) {
181
+ prompt_work[i].style.display='none';
182
+ }
183
+
184
+ window['prevPrompt'] = '';
185
+ window['doCheckPrompt'] = 0;
186
+ window['checkPrompt'] = function checkPrompt() {
187
+ try {
188
+ prompt_work = window['gradioEl'].querySelectorAll('#prompt_work');
189
+ if (prompt_work.length > 0 && prompt_work[0].children.length > 1) {
190
+ prompt_work[0].children[1].style.display='none';
191
+ prompt_work[0].style.display='block';
192
+ }
193
+ text_value = window['gradioEl'].querySelectorAll('#prompt_work')[0].querySelectorAll('textarea')[0].value;
194
+ progress_bar = window['gradioEl'].querySelectorAll('.progress-bar');
195
+ if (window['doCheckPrompt'] === 0 && window['prevPrompt'] !== text_value && progress_bar.length == 0) {
196
+ console.log('_____new prompt___[' + text_value + ']_');
197
+ window['doCheckPrompt'] = 1;
198
+ window['prevPrompt'] = text_value;
199
+ tabitems = window['gradioEl'].querySelectorAll('.tabitem');
200
+ for (var i = 0; i < tabitems.length; i++) {
201
+ inputText = null;
202
+ if (tabitems_title[i].innerText.indexOf('SD') >= 0) {
203
+ text_value = window['gradioEl'].querySelectorAll('#prompt_work')[0].querySelectorAll('textarea')[0].value;
204
+ inputText = tabitems[i].children[0].children[1].children[0].querySelectorAll('.gr-text-input')[0];
205
+ } else if (tabitems_title[i].innerText.indexOf('Taiyi') >= 0) {
206
+ text_value = window['gradioEl'].querySelectorAll('#prompt_work_zh')[0].querySelectorAll('textarea')[0].value;
207
+ inputText = tabitems[i].children[0].children[0].children[1].querySelectorAll('.gr-text-input')[0];
208
+ }
209
+ if (inputText) {
210
+ setNativeValue(inputText, text_value);
211
+ inputText.dispatchEvent(new Event('input', { bubbles: true }));
212
+ }
213
+ }
214
+
215
+ setTimeout(function() {
216
+ btns = window['gradioEl'].querySelectorAll('button');
217
+ for (var i = 0; i < btns.length; i++) {
218
+ if (['Generate image','Run', '生成图像(Generate)'].includes(btns[i].innerText)) {
219
+ btns[i].click();
220
+ }
221
+ }
222
+ window['doCheckPrompt'] = 0;
223
+ }, 10);
224
+ }
225
+ } catch(e) {
226
+ }
227
+ }
228
+ window['checkPrompt_interval'] = window.setInterval("window.checkPrompt()", 100);
229
+ }
230
+
231
+ return false;
232
+ }"""
233
+
234
+ switch_tab_advanced = """async() => {
235
+ window['tab_advanced'] = 1 - window['tab_advanced'];
236
+ if (window['tab_advanced']==0) {
237
+ action = 'none';
238
+ } else {
239
+ action = 'block';
240
+ }
241
+ tabitems = window['gradioEl'].querySelectorAll('.tabitem');
242
+ tabitems_title = window['gradioEl'].querySelectorAll('#tab_demo')[0].children[0].children[0].children;
243
+ for (var i = 0; i < tabitems.length; i++) {
244
+ if (tabitems_title[i].innerText.indexOf('SD') >= 0) {
245
+ //tabitems[i].childNodes[0].children[1].children[0].style.display=action;
246
+ //tabitems[i].childNodes[0].children[1].children[4].style.display=action;
247
+ for (var j = 0; j < tabitems[i].childNodes[0].children[1].children.length; j++) {
248
+ if (j != 1) {
249
+ tabitems[i].childNodes[0].children[1].children[j].style.display=action;
250
+ }
251
+ }
252
+ } else if (tabitems_title[i].innerText.indexOf('Taiyi') >= 0) {
253
+ tabitems[i].children[0].children[0].children[1].style.display=action;
254
+ }
255
+ }
256
+ return false;
257
+ }"""
258
+
259
+ def prompt_extend(prompt, PM):
260
+ prompt_en = getTextTrans(prompt, source='zh', target='en')
261
+ if PM == 1:
262
+ extend_prompt_en = extend_prompt_pipe(prompt_en+',', num_return_sequences=1)[0]["generated_text"]
263
+ elif PM == 2:
264
+ extend_prompt_en = extend_prompt_microsoft(prompt_en)
265
+ elif PM == 3:
266
+ extend_prompt_en = MagicPrompt(prompt_en)
267
+
268
+ if (prompt != prompt_en):
269
+ logger.info(f"extend_prompt__1_PM=[{PM}]_")
270
+ extend_prompt_out = getTextTrans(extend_prompt_en, source='en', target='zh')
271
+ else:
272
+ logger.info(f"extend_prompt__2_PM=[{PM}]_")
273
+ extend_prompt_out = extend_prompt_en
274
+
275
+ return extend_prompt_out
276
+
277
+ def prompt_extend_1(prompt):
278
+ extend_prompt_out = prompt_extend(prompt, 1)
279
+ return extend_prompt_out
280
+
281
+ def prompt_extend_2(prompt):
282
+ extend_prompt_out = prompt_extend(prompt, 2)
283
+ return extend_prompt_out
284
+
285
+ def prompt_extend_3(prompt):
286
+ extend_prompt_out = prompt_extend(prompt, 3)
287
+ return extend_prompt_out
288
+
289
+ def prompt_draw_1(prompt, noise_level):
290
+ prompt_en = getTextTrans(prompt, source='zh', target='en')
291
+ if (prompt != prompt_en):
292
+ logger.info(f"draw_prompt______1__")
293
+ prompt_zh = prompt
294
+ else:
295
+ logger.info(f"draw_prompt______2__")
296
+ prompt_zh = getTextTrans(prompt, source='en', target='zh')
297
+
298
+ prompt_with_noise = add_random_noise(prompt_en, noise_level)
299
+ dreamlike_output = dreamlike_photoreal_2_0(prompt_with_noise)
300
+ return prompt_en, prompt_zh, dreamlike_output
301
+
302
+ def prompt_draw_2(prompt):
303
+ prompt_en = getTextTrans(prompt, source='zh', target='en')
304
+ if (prompt != prompt_en):
305
+ logger.info(f"draw_prompt______1__")
306
+ prompt_zh = prompt
307
+ else:
308
+ logger.info(f"draw_prompt______2__")
309
+ prompt_zh = getTextTrans(prompt, source='en', target='zh')
310
+ return prompt_en, prompt_zh
311
+
312
+ with gr.Blocks(title='Text-to-Image') as demo:
313
+ with gr.Group(elem_id="page_1", visible=True) as page_1:
314
+ with gr.Box():
315
+ with gr.Row():
316
+ start_button = gr.Button("Let's GO!", elem_id="start-btn", visible=True)
317
+ start_button.click(fn=None, inputs=[], outputs=[], _js=start_work)
318
+
319
+ with gr.Group(elem_id="page_2", visible=False) as page_2:
320
+ with gr.Row(elem_id="prompt_row0"):
321
+ with gr.Column(id="input_col1"):
322
+ with gr.Row(elem_id="input_col1_row1"):
323
+ prompt_input0 = gr.Textbox(lines=2, label="Original prompt", visible=True)
324
+ with gr.Row(elem_id="input_col1_row2"):
325
+ prompt_work = gr.Textbox(lines=1, label="prompt_work", elem_id="prompt_work", visible=True)
326
+ with gr.Row(elem_id="input_col1_row3"):
327
+ with gr.Column(elem_id="input_col1_row2_col0"):
328
+ draw_btn_0 = gr.Button(value = "Generate(original)", elem_id="draw-btn-0")
329
+ if extend_prompt_1:
330
+ with gr.Column(elem_id="input_col1_row2_col1"):
331
+ extend_btn_1 = gr.Button(value = "Extend_1",elem_id="extend-btn-1")
332
+ if extend_prompt_2:
333
+ with gr.Column(elem_id="input_col1_row2_col2"):
334
+ extend_btn_2 = gr.Button(value = "Extend_2",elem_id="extend-btn-2")
335
+ if extend_prompt_3:
336
+ with gr.Column(elem_id="input_col1_row2_col3"):
337
+ extend_btn_3 = gr.Button(value = "Extend_3",elem_id="extend-btn-3")
338
+ with gr.Column(id="input_col2"):
339
+ prompt_input1 = gr.Textbox(lines=2, label="Extend prompt", visible=True)
340
+ draw_btn_1 = gr.Button(value = "Generate(extend)", elem_id="draw-btn-1")
341
+ with gr.Row(elem_id="prompt_row1"):
342
+ with gr.Column(id="input_col3"):
343
+ with gr.Row(elem_id="input_col3_row2"):
344
+ prompt_work_zh = gr.Textbox(lines=1, label="prompt_work_zh", elem_id="prompt_work_zh", visible=False)
345
+ with gr.Row(elem_id='tab_demo', visible=True).style(height=200):
346
+ tab_demo = gr.TabbedInterface(tab_actions, tab_titles)
347
+ if do_dreamlike_photoreal:
348
+ with gr.Row():
349
+ noise_level=gr.Slider(minimum=0.1, maximum=3, step=0.1, label="Dreamlike noise Level: [Higher noise level produces more diverse outputs, while lower noise level produces similar outputs.]")
350
+ with gr.Row():
351
+ switch_tab_advanced_btn = gr.Button(value = "Switch_tab_advanced", elem_id="switch_tab_advanced_btn")
352
+ switch_tab_advanced_btn.click(fn=None, inputs=[], outputs=[], _js=switch_tab_advanced)
353
+ with gr.Row():
354
+ gr.HTML(f"<p>{thanks_info}</p>")
355
+
356
+ if extend_prompt_1:
357
+ extend_btn_1.click(fn=prompt_extend_1, inputs=[prompt_input0], outputs=[prompt_input1])
358
+ if extend_prompt_2:
359
+ extend_btn_2.click(fn=prompt_extend_2, inputs=[prompt_input0], outputs=[prompt_input1])
360
+ if extend_prompt_3:
361
+ extend_btn_3.click(fn=prompt_extend_3, inputs=[prompt_input0], outputs=[prompt_input1])
362
+
363
+ if do_dreamlike_photoreal:
364
+ draw_btn_0.click(fn=prompt_draw_1, inputs=[prompt_input0, noise_level], outputs=[prompt_work, prompt_work_zh, dreamlike_image])
365
+ draw_btn_1.click(fn=prompt_draw_1, inputs=[prompt_input1, noise_level], outputs=[prompt_work, prompt_work_zh, dreamlike_image])
366
+ else:
367
+ draw_btn_0.click(fn=prompt_draw_2, inputs=[prompt_input0], outputs=[prompt_work, prompt_work_zh])
368
+ draw_btn_1.click(fn=prompt_draw_2, inputs=[prompt_input1], outputs=[prompt_work, prompt_work_zh])
369
+
370
+ demo.launch()
baidu_translate/module.py ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import argparse
2
+ import random
3
+ from hashlib import md5
4
+ from typing import Optional
5
+
6
+ import requests
7
+
8
+ import paddlehub as hub
9
+ from paddlehub.module.module import moduleinfo
10
+ from paddlehub.module.module import runnable
11
+ from paddlehub.module.module import serving
12
+
13
+
14
+ def make_md5(s, encoding='utf-8'):
15
+ return md5(s.encode(encoding)).hexdigest()
16
+
17
+
18
+ @moduleinfo(name="baidu_translate",
19
+ version="1.0.0",
20
+ type="text/machine_translation",
21
+ summary="",
22
+ author="baidu-nlp",
23
+ author_email="paddle-dev@baidu.com")
24
+ class BaiduTranslate:
25
+
26
+ def __init__(self, appid=None, appkey=None):
27
+ """
28
+ :param appid: appid for requesting Baidu translation service.
29
+ :param appkey: appkey for requesting Baidu translation service.
30
+ """
31
+ # Set your own appid/appkey.
32
+ if appid == None:
33
+ self.appid = '20201015000580007'
34
+ else:
35
+ self.appid = appid
36
+ if appkey is None:
37
+ self.appkey = 'IFJB6jBORFuMmVGDRud1'
38
+ else:
39
+ self.appkey = appkey
40
+ self.url = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
41
+
42
+ def translate(self, query: str, from_lang: Optional[str] = "en", to_lang: Optional[int] = "zh"):
43
+ """
44
+ Create image by text prompts using ErnieVilG model.
45
+
46
+ :param query: Text to be translated.
47
+ :param from_lang: Source language.
48
+ :param to_lang: Dst language.
49
+
50
+ Return translated string.
51
+ """
52
+ # Generate salt and sign
53
+ salt = random.randint(32768, 65536)
54
+ sign = make_md5(self.appid + query + str(salt) + self.appkey)
55
+
56
+ # Build request
57
+ headers = {'Content-Type': 'application/x-www-form-urlencoded'}
58
+ payload = {'appid': self.appid, 'q': query, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}
59
+
60
+ # Send request
61
+ try:
62
+ r = requests.post(self.url, params=payload, headers=headers)
63
+ result = r.json()
64
+ except Exception as e:
65
+ error_msg = str(e)
66
+ raise RuntimeError(error_msg)
67
+ if 'error_code' in result:
68
+ raise RuntimeError(result['error_msg'])
69
+ return result['trans_result'][0]['dst']
70
+
71
+ @runnable
72
+ def run_cmd(self, argvs):
73
+ """
74
+ Run as a command.
75
+ """
76
+ self.parser = argparse.ArgumentParser(description="Run the {} module.".format(self.name),
77
+ prog='hub run {}'.format(self.name),
78
+ usage='%(prog)s',
79
+ add_help=True)
80
+ self.arg_input_group = self.parser.add_argument_group(title="Input options", description="Input data. Required")
81
+ self.add_module_input_arg()
82
+ args = self.parser.parse_args(argvs)
83
+ if args.appid is not None and args.appkey is not None:
84
+ self.appid = args.appid
85
+ self.appkey = args.appkey
86
+ result = self.translate(args.query, args.from_lang, args.to_lang)
87
+ return result
88
+
89
+ @serving
90
+ def serving_method(self, query, from_lang, to_lang):
91
+ """
92
+ Run as a service.
93
+ """
94
+ return self.translate(query, from_lang, to_lang)
95
+
96
+ def add_module_input_arg(self):
97
+ """
98
+ Add the command input options.
99
+ """
100
+ self.arg_input_group.add_argument('--query', type=str)
101
+ self.arg_input_group.add_argument('--from_lang', type=str, default='en', help="源语言")
102
+ self.arg_input_group.add_argument('--to_lang', type=str, default='zh', help="目标语言")
103
+ self.arg_input_group.add_argument('--appid', type=str, default=None, help="注册得到的个人appid")
104
+ self.arg_input_group.add_argument('--appkey', type=str, default=None, help="注册得到的个人appkey")
requirements.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ ftfy
2
+ spacy
3
+ transformers
4
+ torch
5
+ gradio
6
+ paddlepaddle==2.3.2
7
+ paddlehub
8
+ loguru