jonathanjordan21 commited on
Commit
1909f20
1 Parent(s): 73b273b

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -0
app.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import re
3
+ from PIL import Image
4
+ from io import BytesIO
5
+ import torch
6
+
7
+ from transformers import DonutProcessor, VisionEncoderDecoderModel
8
+
9
+
10
+ def predict(inp):
11
+ # Load processor
12
+ processor = DonutProcessor.from_pretrained("jonathanjordan21/donut_fine_tuning_food_composition_id")
13
+
14
+ # Load model
15
+ model = VisionEncoderDecoderModel.from_pretrained("jonathanjordan21/donut_fine_tuning_food_composition_id")
16
+
17
+ # Define Json Parser
18
+ def get_komposisi(image_path, image=None):
19
+ image = Image.open(image_path).convert('RGB') if image== None else image.convert('RGB')
20
+
21
+ task_prompt = "<s_kmpsi>"
22
+ decoder_input_ids = processor.tokenizer(task_prompt, add_special_tokens=False, return_tensors="pt").input_ids
23
+
24
+ pixel_values = processor(image, return_tensors="pt").pixel_values
25
+
26
+ outputs = model.generate(
27
+ pixel_values.to(device),
28
+ decoder_input_ids=decoder_input_ids.to(device),
29
+ max_length=model.decoder.config.max_position_embeddings,
30
+ early_stopping=True,
31
+ pad_token_id=processor.tokenizer.pad_token_id,
32
+ eos_token_id=processor.tokenizer.eos_token_id,
33
+ use_cache=True,
34
+ bad_words_ids=[[processor.tokenizer.unk_token_id]],
35
+ return_dict_in_generate=True,
36
+ )
37
+
38
+ sequence1 = processor.batch_decode(outputs.sequences)[0]
39
+ sequence2 = sequence1.replace(processor.tokenizer.eos_token, "").replace(processor.tokenizer.pad_token, "")
40
+ sequence3 = re.sub(r"<.*?>", "", sequence2, count=1).strip() # remove first task start token
41
+
42
+ return processor.token2json(sequence3)
43
+
44
+ #Generate Output
45
+ out = get_komposisi("", Image.open(BytesIO(image)))
46
+ return out
47
+
48
+
49
+ def upload_file(files):
50
+ file_paths = [file.name for file in files]
51
+ return file_paths
52
+
53
+ gr.Interface(fn=predict,
54
+ inputs=gr.Image(type="pil"),
55
+ outputs="json",
56
+ examples=["lion.jpg", "cheetah.jpg"]).launch()
57
+