Spaces:
Running
on
Zero
Running
on
Zero
WIP fix image loading
Browse files- app.py +14 -5
- requirements.txt +1 -1
app.py
CHANGED
@@ -1,13 +1,15 @@
|
|
1 |
import gradio as gr
|
2 |
import spaces
|
3 |
-
from transformers import
|
|
|
4 |
import torch
|
|
|
5 |
from PIL import Image
|
6 |
-
import
|
7 |
|
8 |
|
9 |
models = {
|
10 |
-
"Qwen/Qwen2-VL-7B-Instruct":
|
11 |
}
|
12 |
|
13 |
processors = {
|
@@ -17,6 +19,13 @@ processors = {
|
|
17 |
DESCRIPTION = "# Qwen2-VL Object Localization Demo"
|
18 |
|
19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
@spaces.GPU
|
21 |
def run_example(image, text_input, model_id="Qwen/Qwen2-VL-7B-Instruct"):
|
22 |
model = models[model_id].eval().cuda()
|
@@ -26,7 +35,7 @@ def run_example(image, text_input, model_id="Qwen/Qwen2-VL-7B-Instruct"):
|
|
26 |
{
|
27 |
"role": "user",
|
28 |
"content": [
|
29 |
-
{"type": "image", "image": image},
|
30 |
{"type": "text", "text": f"Give a bounding box for {text_input}"},
|
31 |
],
|
32 |
}
|
@@ -67,7 +76,7 @@ with gr.Blocks(css=css) as demo:
|
|
67 |
with gr.Tab(label="Qwen2-VL Input"):
|
68 |
with gr.Row():
|
69 |
with gr.Column():
|
70 |
-
input_img = gr.Image(label="Input Picture")
|
71 |
model_selector = gr.Dropdown(choices=list(models.keys()), label="Model", value="Qwen/Qwen2-VL-7B-Instruct")
|
72 |
text_input = gr.Textbox(label="Description of Localization Target")
|
73 |
submit_btn = gr.Button(value="Submit")
|
|
|
1 |
import gradio as gr
|
2 |
import spaces
|
3 |
+
from transformers import Qwen2VLForConditionalGeneration, AutoTokenizer, AutoProcessor
|
4 |
+
from qwen_vl_utils import process_vision_info
|
5 |
import torch
|
6 |
+
import base64
|
7 |
from PIL import Image
|
8 |
+
from io import BytesIO
|
9 |
|
10 |
|
11 |
models = {
|
12 |
+
"Qwen/Qwen2-VL-7B-Instruct": Qwen2VLForConditionalGeneration.from_pretrained("Qwen/Qwen2-VL-7B-Instruct") #, torch_dtype="auto", device_map="auto")
|
13 |
}
|
14 |
|
15 |
processors = {
|
|
|
19 |
DESCRIPTION = "# Qwen2-VL Object Localization Demo"
|
20 |
|
21 |
|
22 |
+
def image_to_base64(image):
|
23 |
+
buffered = BytesIO()
|
24 |
+
image.save(buffered, format="PNG") # Save the image in memory as PNG
|
25 |
+
img_str = base64.b64encode(buffered.getvalue()).decode("utf-8") # Encode image to base64
|
26 |
+
return img_str
|
27 |
+
|
28 |
+
|
29 |
@spaces.GPU
|
30 |
def run_example(image, text_input, model_id="Qwen/Qwen2-VL-7B-Instruct"):
|
31 |
model = models[model_id].eval().cuda()
|
|
|
35 |
{
|
36 |
"role": "user",
|
37 |
"content": [
|
38 |
+
{"type": "image", "image": f"data:image;base64,{image_to_base64(image)}"},
|
39 |
{"type": "text", "text": f"Give a bounding box for {text_input}"},
|
40 |
],
|
41 |
}
|
|
|
76 |
with gr.Tab(label="Qwen2-VL Input"):
|
77 |
with gr.Row():
|
78 |
with gr.Column():
|
79 |
+
input_img = gr.Image(label="Input Picture", type="pil")
|
80 |
model_selector = gr.Dropdown(choices=list(models.keys()), label="Model", value="Qwen/Qwen2-VL-7B-Instruct")
|
81 |
text_input = gr.Textbox(label="Description of Localization Target")
|
82 |
submit_btn = gr.Button(value="Submit")
|
requirements.txt
CHANGED
@@ -3,6 +3,6 @@ Pillow==10.3.0
|
|
3 |
Requests==2.31.0
|
4 |
torch
|
5 |
torchvision
|
6 |
-
transformers
|
7 |
accelerate==0.30.0
|
8 |
qwen-vl-utils
|
|
|
3 |
Requests==2.31.0
|
4 |
torch
|
5 |
torchvision
|
6 |
+
git+https://github.com/huggingface/transformers.git@main
|
7 |
accelerate==0.30.0
|
8 |
qwen-vl-utils
|