donb-hf commited on
Commit
640c7a9
1 Parent(s): 0054153
.python-version ADDED
@@ -0,0 +1 @@
 
 
1
+ 3.10
__pycache__/config.cpython-310.pyc ADDED
Binary file (282 Bytes). View file
 
app.py CHANGED
@@ -1,9 +1,13 @@
1
  import os
2
  import logging
3
  import sys
 
 
 
 
4
 
5
  # Function to get logging level from environment variable
6
- def get_logging_level(default_level=logging.DEBUG): # Default to DEBUG for detailed logs
7
  log_level_str = os.getenv('VISION_AGENT_LOG_LEVEL', '').upper()
8
  if log_level_str == 'DEBUG':
9
  return logging.DEBUG
@@ -18,24 +22,9 @@ def get_logging_level(default_level=logging.DEBUG): # Default to DEBUG for deta
18
  else:
19
  return default_level
20
 
21
- # Set up logging before importing the library
22
- logging_level = get_logging_level()
23
- logging.basicConfig(stream=sys.stdout, level=logging_level)
24
- _LOGGER = logging.getLogger(__name__)
25
-
26
- # Explicitly set logging level for the vision-agent library
27
- vision_agent_logger = logging.getLogger('vision_agent')
28
- vision_agent_logger.setLevel(logging_level)
29
-
30
- # Set logging level for Hugging Face libraries
31
- hf_hub_logger = logging.getLogger('huggingface_hub')
32
- hf_hub_logger.setLevel(logging_level)
33
-
34
- datasets_logger = logging.getLogger('datasets')
35
- datasets_logger.setLevel(logging_level)
36
-
37
- # Print the logging level to verify it's set correctly
38
- print(f"Logging level set to: {logging.getLevelName(logging_level)}")
39
 
40
  from huggingface_hub import login
41
  import time
@@ -44,7 +33,7 @@ from typing import *
44
  from pillow_heif import register_heif_opener
45
  register_heif_opener()
46
  import vision_agent as va
47
- from vision_agent.tools import register_tool, load_image, owl_v2, overlay_bounding_boxes, save_image
48
 
49
  # Perform login using the token
50
  hf_token = os.getenv("HF_TOKEN")
@@ -53,7 +42,8 @@ login(token=hf_token, add_to_git_credential=True)
53
  import numpy as np
54
  from PIL import Image
55
 
56
- def detect_brain_tumor(image, seg_input, debug: bool = True):
 
57
  """
58
  Detects a brain tumor in the given image and returns the annotated image.
59
 
@@ -66,18 +56,66 @@ def detect_brain_tumor(image, seg_input, debug: bool = True):
66
  tuple: (numpy array of image, list of (label, (x1, y1, x2, y2)) tuples)
67
  """
68
  if debug:
69
- _LOGGER.debug(f"Image received, shape: {image.shape}")
70
 
71
  # Step 2: Detect brain tumor using owl_v2
72
  prompt = "detect brain tumor"
73
  detections = owl_v2(prompt, image)
74
  if debug:
75
- _LOGGER.debug(f"Raw detections: {detections}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
 
77
  # Step 3: Overlay bounding boxes on the image
78
  image_with_bboxes = overlay_bounding_boxes(image, detections)
79
  if debug:
80
- _LOGGER.debug("Bounding boxes overlaid on the image")
81
 
82
  # Prepare annotations for AnnotatedImage output
83
  annotations = []
@@ -92,7 +130,55 @@ def detect_brain_tumor(image, seg_input, debug: bool = True):
92
  annotations.append(((x1, y1, x2, y2), f"{label} {score:.2f}"))
93
 
94
  if debug:
95
- _LOGGER.debug(f"Annotations: {annotations}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
 
97
  # Convert image to numpy array if it's not already
98
  if isinstance(image_with_bboxes, Image.Image):
@@ -104,7 +190,7 @@ INTRO_TEXT="# 🔬🧠 OmniScience -- Agentic Imaging Analysis 🤖🧫"
104
 
105
  with gr.Blocks(css="style.css") as demo:
106
  gr.Markdown(INTRO_TEXT)
107
- with gr.Tab("Segment/Detect"):
108
  with gr.Row():
109
  with gr.Column():
110
  image = gr.Image(type="numpy")
@@ -135,10 +221,82 @@ with gr.Blocks(css="style.css") as demo:
135
  annotated_image
136
  ]
137
  seg_btn.click(
138
- fn=detect_brain_tumor,
139
  inputs=seg_inputs,
140
  outputs=seg_outputs,
141
  )
142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  if __name__ == "__main__":
144
  demo.queue(max_size=10).launch(debug=True)
 
1
  import os
2
  import logging
3
  import sys
4
+ from config import WEAVE_PROJECT, WANDB_API_KEY
5
+ import weave
6
+
7
+ weave.init(WEAVE_PROJECT)
8
 
9
  # Function to get logging level from environment variable
10
+ def get_logging_level(default_level=logging.INFO): # Default to DEBUG for detailed logs
11
  log_level_str = os.getenv('VISION_AGENT_LOG_LEVEL', '').upper()
12
  if log_level_str == 'DEBUG':
13
  return logging.DEBUG
 
22
  else:
23
  return default_level
24
 
25
+ # Initialize logger
26
+ logging.basicConfig(level=get_logging_level(), format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
27
+ logger = logging.getLogger('vision_agent')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
  from huggingface_hub import login
30
  import time
 
33
  from pillow_heif import register_heif_opener
34
  register_heif_opener()
35
  import vision_agent as va
36
+ from vision_agent.tools import register_tool, load_image, owl_v2, grounding_dino, florencev2_object_detection, overlay_bounding_boxes, save_image
37
 
38
  # Perform login using the token
39
  hf_token = os.getenv("HF_TOKEN")
 
42
  import numpy as np
43
  from PIL import Image
44
 
45
+ @weave.op()
46
+ def detect_brain_tumor_owlv2(image, seg_input, debug: bool = True):
47
  """
48
  Detects a brain tumor in the given image and returns the annotated image.
49
 
 
56
  tuple: (numpy array of image, list of (label, (x1, y1, x2, y2)) tuples)
57
  """
58
  if debug:
59
+ logger.debug(f"Image received, shape: {image.shape}")
60
 
61
  # Step 2: Detect brain tumor using owl_v2
62
  prompt = "detect brain tumor"
63
  detections = owl_v2(prompt, image)
64
  if debug:
65
+ logger.debug(f"Raw detections: {detections}")
66
+
67
+ # Step 3: Overlay bounding boxes on the image
68
+ image_with_bboxes = overlay_bounding_boxes(image, detections)
69
+ if debug:
70
+ logger.debug("Bounding boxes overlaid on the image")
71
+
72
+ # Prepare annotations for AnnotatedImage output
73
+ annotations = []
74
+ for detection in detections:
75
+ label = detection['label']
76
+ score = detection['score']
77
+ bbox = detection['bbox']
78
+ x1, y1, x2, y2 = bbox
79
+ # Convert normalized coordinates to pixel coordinates
80
+ height, width = image.shape[:2]
81
+ x1, y1, x2, y2 = int(x1*width), int(y1*height), int(x2*width), int(y2*height)
82
+ annotations.append(((x1, y1, x2, y2), f"{label} {score:.2f}"))
83
+
84
+ if debug:
85
+ logger.debug(f"Annotations: {annotations}")
86
+
87
+ # Convert image to numpy array if it's not already
88
+ if isinstance(image_with_bboxes, Image.Image):
89
+ image_with_bboxes = np.array(image_with_bboxes)
90
+
91
+ return (image_with_bboxes, annotations)
92
+
93
+ @weave.op()
94
+ def detect_brain_tumor_dino(image, seg_input, debug: bool = True):
95
+ """
96
+ Detects a brain tumor in the given image and returns the annotated image.
97
+
98
+ Parameters:
99
+ image: The input image (as numpy array provided by Gradio).
100
+ seg_input: The segmentation input (not used in this function, but required for Gradio).
101
+ debug (bool): Flag to enable logging for debugging purposes.
102
+
103
+ Returns:
104
+ tuple: (numpy array of image, list of (label, (x1, y1, x2, y2)) tuples)
105
+ """
106
+ if debug:
107
+ logger.debug(f"Image received, shape: {image.shape}")
108
+
109
+ # Step 2: Detect brain tumor using grounding_dino
110
+ prompt = "detect brain tumor"
111
+ detections = grounding_dino(prompt, image)
112
+ if debug:
113
+ logger.debug(f"Raw detections: {detections}")
114
 
115
  # Step 3: Overlay bounding boxes on the image
116
  image_with_bboxes = overlay_bounding_boxes(image, detections)
117
  if debug:
118
+ logger.debug("Bounding boxes overlaid on the image")
119
 
120
  # Prepare annotations for AnnotatedImage output
121
  annotations = []
 
130
  annotations.append(((x1, y1, x2, y2), f"{label} {score:.2f}"))
131
 
132
  if debug:
133
+ logger.debug(f"Annotations: {annotations}")
134
+
135
+ # Convert image to numpy array if it's not already
136
+ if isinstance(image_with_bboxes, Image.Image):
137
+ image_with_bboxes = np.array(image_with_bboxes)
138
+
139
+ return (image_with_bboxes, annotations)
140
+
141
+ @weave.op()
142
+ def detect_brain_tumor_florence2(image, seg_input, debug: bool = True):
143
+ """
144
+ Detects a brain tumor in the given image and returns the annotated image.
145
+
146
+ Parameters:
147
+ image: The input image (as numpy array provided by Gradio).
148
+ seg_input: The segmentation input (not used in this function, but required for Gradio).
149
+ debug (bool): Flag to enable logging for debugging purposes.
150
+
151
+ Returns:
152
+ tuple: (numpy array of image, list of (label, (x1, y1, x2, y2)) tuples)
153
+ """
154
+ if debug:
155
+ logger.debug(f"Image received, shape: {image.shape}")
156
+
157
+ # Step 2: Detect brain tumor using florencev2 - NO PROMPT
158
+ prompt = "detect brain tumor"
159
+ detections = florencev2_object_detection(prompt)
160
+ if debug:
161
+ logger.debug(f"Raw detections: {detections}")
162
+
163
+ # Step 3: Overlay bounding boxes on the image
164
+ image_with_bboxes = overlay_bounding_boxes(image, detections)
165
+ if debug:
166
+ logger.debug("Bounding boxes overlaid on the image")
167
+
168
+ # Prepare annotations for AnnotatedImage output
169
+ annotations = []
170
+ for detection in detections:
171
+ label = detection['label']
172
+ score = detection['score']
173
+ bbox = detection['bbox']
174
+ x1, y1, x2, y2 = bbox
175
+ # Convert normalized coordinates to pixel coordinates
176
+ height, width = image.shape[:2]
177
+ x1, y1, x2, y2 = int(x1*width), int(y1*height), int(x2*width), int(y2*height)
178
+ annotations.append(((x1, y1, x2, y2), f"{label} {score:.2f}"))
179
+
180
+ if debug:
181
+ logger.debug(f"Annotations: {annotations}")
182
 
183
  # Convert image to numpy array if it's not already
184
  if isinstance(image_with_bboxes, Image.Image):
 
190
 
191
  with gr.Blocks(css="style.css") as demo:
192
  gr.Markdown(INTRO_TEXT)
193
+ with gr.Tab("Object Detection - Owl V2"):
194
  with gr.Row():
195
  with gr.Column():
196
  image = gr.Image(type="numpy")
 
221
  annotated_image
222
  ]
223
  seg_btn.click(
224
+ fn=detect_brain_tumor_owlv2,
225
  inputs=seg_inputs,
226
  outputs=seg_outputs,
227
  )
228
 
229
+ with gr.Tab("Object Detection - DINO"):
230
+ with gr.Row():
231
+ with gr.Column():
232
+ image = gr.Image(type="numpy")
233
+ seg_input = gr.Text(label="Entities to Segment/Detect", value="detect brain tumor")
234
+
235
+ with gr.Column():
236
+ annotated_image = gr.AnnotatedImage(label="Output")
237
+
238
+ seg_btn = gr.Button("Submit")
239
+ examples = [["./examples/194_jpg.rf.3e3dd592d034bb5ee27a978553819f42.jpg", "detect brain tumor"],
240
+ ["./examples/239_jpg.rf.3dcc0799277fb78a2ab21db7761ccaeb.jpg", "detect brain tumor"],
241
+ ["./examples/1385_jpg.rf.3c67cb92e2922dba0e6dba86f69df40b.jpg", "detect brain tumor"],
242
+ ["./examples/1491_jpg.rf.3c658e83538de0fa5a3f4e13d7d85f12.jpg", "detect brain tumor"],
243
+ ["./examples/1550_jpg.rf.3d067be9580ec32dbee5a89c675d8459.jpg", "detect brain tumor"],
244
+ ["./examples/2256_jpg.rf.3afd7903eaf3f3c5aa8da4bbb928bc19.jpg", "detect brain tumor"],
245
+ ["./examples/2871_jpg.rf.3b6eadfbb369abc2b3bcb52b406b74f2.jpg", "detect brain tumor"],
246
+ ["./examples/2921_jpg.rf.3b952f91f27a6248091e7601c22323ad.jpg", "detect brain tumor"],
247
+ ]
248
+ gr.Examples(
249
+ examples=examples,
250
+ inputs=[image, seg_input],
251
+ )
252
+ seg_inputs = [
253
+ image,
254
+ seg_input
255
+ ]
256
+ seg_outputs = [
257
+ annotated_image
258
+ ]
259
+ seg_btn.click(
260
+ fn=detect_brain_tumor_dino,
261
+ inputs=seg_inputs,
262
+ outputs=seg_outputs,
263
+ )
264
+
265
+ with gr.Tab("Object Detection - Florence2"):
266
+ with gr.Row():
267
+ with gr.Column():
268
+ image = gr.Image(type="numpy")
269
+ seg_input = gr.Text(label="Entities to Segment/Detect - PROMPT IS NOT PASSED TO FLORENCE2", value="detect brain tumor")
270
+
271
+ with gr.Column():
272
+ annotated_image = gr.AnnotatedImage(label="Output")
273
+
274
+ seg_btn = gr.Button("Submit")
275
+ examples = [["./examples/194_jpg.rf.3e3dd592d034bb5ee27a978553819f42.jpg", "detect brain tumor"],
276
+ ["./examples/239_jpg.rf.3dcc0799277fb78a2ab21db7761ccaeb.jpg", "detect brain tumor"],
277
+ ["./examples/1385_jpg.rf.3c67cb92e2922dba0e6dba86f69df40b.jpg", "detect brain tumor"],
278
+ ["./examples/1491_jpg.rf.3c658e83538de0fa5a3f4e13d7d85f12.jpg", "detect brain tumor"],
279
+ ["./examples/1550_jpg.rf.3d067be9580ec32dbee5a89c675d8459.jpg", "detect brain tumor"],
280
+ ["./examples/2256_jpg.rf.3afd7903eaf3f3c5aa8da4bbb928bc19.jpg", "detect brain tumor"],
281
+ ["./examples/2871_jpg.rf.3b6eadfbb369abc2b3bcb52b406b74f2.jpg", "detect brain tumor"],
282
+ ["./examples/2921_jpg.rf.3b952f91f27a6248091e7601c22323ad.jpg", "detect brain tumor"],
283
+ ]
284
+ gr.Examples(
285
+ examples=examples,
286
+ inputs=[image, seg_input],
287
+ )
288
+ seg_inputs = [
289
+ image,
290
+ seg_input
291
+ ]
292
+ seg_outputs = [
293
+ annotated_image
294
+ ]
295
+ seg_btn.click(
296
+ fn=detect_brain_tumor_dino,
297
+ inputs=seg_inputs,
298
+ outputs=seg_outputs,
299
+ )
300
+
301
  if __name__ == "__main__":
302
  demo.queue(max_size=10).launch(debug=True)
config.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # config.py
2
+ import os
3
+ from dotenv import load_dotenv
4
+
5
+ load_dotenv()
6
+
7
+ WANDB_API_KEY = os.getenv('WANDB_API_KEY')
8
+ WEAVE_PROJECT = "omniscience-app"
examples/cart1.jpg DELETED
Binary file (99.9 kB)
 
examples/cart1.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "cart1",
3
- "comment": "Computer illustration of CAR-T therapy",
4
- "model": "paligemma-3b-mix-224",
5
- "prompt": "segment cells",
6
- "license": "https://www.cancertherapyadvisor.com/wp-content/uploads/sites/12/2019/09/CAR-T_G_864309570-860x574.jpg"
7
- }
 
 
 
 
 
 
 
 
examples/cart2.jpg DELETED
Binary file (179 kB)
 
examples/cart2.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "cart2",
3
- "comment": "Cancerous T-Cells Using Car-T Therapy",
4
- "model": "paligemma-3b-mix-224",
5
- "prompt": "segment cells",
6
- "license": "https://www.coherentmarketinsights.com/blogimg/uploads/2017/02/Cancerous-T-Cells-Using-CAR-T-Therapy.jpg"
7
- }
 
 
 
 
 
 
 
 
examples/cart3.jpg DELETED
Binary file (87.2 kB)
 
examples/cart3.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "cart3",
3
- "comment": "CAR T cell therapy",
4
- "model": "paligemma-3b-mix-224",
5
- "prompt": "segment cells",
6
- "license": "https://delveinsight-blog.s3.amazonaws.com/blog/wp-content/uploads/2018/12/09022609/adusumillia-car_0_3x2.jpg"
7
- }
 
 
 
 
 
 
 
 
examples/cnmc1.bmp DELETED
Binary file (609 kB)
 
examples/cnmc1.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "cnmc1",
3
- "comment": "cnmc-leukemia-2019",
4
- "model": "paligemma-cnmc-ft",
5
- "prompt": "Are these cells healthy or cancerous?",
6
- "license": "https://www.cancerimagingarchive.net/collection/c-nmc-2019/"
7
- }
 
 
 
 
 
 
 
 
examples/cnmc2.bmp DELETED
Binary file (609 kB)
 
examples/cnmc2.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "cnmc2",
3
- "comment": "cnmc-leukemia-2019",
4
- "model": "paligemma-cnmc-ft",
5
- "prompt": "Are these cells healthy or cancerous?",
6
- "license": "https://www.cancerimagingarchive.net/collection/c-nmc-2019/"
7
- }
 
 
 
 
 
 
 
 
examples/cnmc3.bmp DELETED
Binary file (609 kB)
 
examples/cnmc3.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "cnmc3",
3
- "comment": "cnmc-leukemia-2019",
4
- "model": "paligemma-cnmc-ft",
5
- "prompt": "Are these cells healthy or cancerous?",
6
- "license": "https://www.cancerimagingarchive.net/collection/c-nmc-2019/"
7
- }
 
 
 
 
 
 
 
 
examples/cnmc4.bmp DELETED
Binary file (609 kB)
 
examples/cnmc4.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "cnmc4",
3
- "comment": "cnmc-leukemia-2019",
4
- "model": "paligemma-cnmc-ft",
5
- "prompt": "Are these cells healthy or cancerous?",
6
- "license": "https://www.cancerimagingarchive.net/collection/c-nmc-2019/"
7
- }
 
 
 
 
 
 
 
 
examples/cnmc5.bmp DELETED
Binary file (609 kB)
 
examples/cnmc5.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "cnmc5",
3
- "comment": "cnmc-leukemia-2019",
4
- "model": "paligemma-cnmc-ft",
5
- "prompt": "Are these cells healthy or cancerous?",
6
- "license": "https://www.cancerimagingarchive.net/collection/c-nmc-2019/"
7
- }
 
 
 
 
 
 
 
 
examples/cnmc6.bmp DELETED
Binary file (609 kB)
 
examples/cnmc6.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "cnmc6",
3
- "comment": "cnmc-leukemia-2019",
4
- "model": "paligemma-cnmc-ft",
5
- "prompt": "Are these cells healthy or cancerous?",
6
- "license": "https://www.cancerimagingarchive.net/collection/c-nmc-2019/"
7
- }
 
 
 
 
 
 
 
 
examples/cnmc7.bmp DELETED
Binary file (609 kB)
 
examples/cnmc7.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "cnmc7",
3
- "comment": "cnmc-leukemia-2019",
4
- "model": "paligemma-cnmc-ft",
5
- "prompt": "Are these cells healthy or cancerous?",
6
- "license": "https://www.cancerimagingarchive.net/collection/c-nmc-2019/"
7
- }
 
 
 
 
 
 
 
 
examples/cnmc8.bmp DELETED
Binary file (609 kB)
 
examples/cnmc8.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "cnmc8",
3
- "comment": "cnmc-leukemia-2019",
4
- "model": "paligemma-cnmc-ft",
5
- "prompt": "Are these cells healthy or cancerous?",
6
- "license": "https://www.cancerimagingarchive.net/collection/c-nmc-2019/"
7
- }
 
 
 
 
 
 
 
 
examples/cnmc9.bmp DELETED
Binary file (609 kB)
 
examples/cnmc9.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "cnmc9",
3
- "comment": "cnmc-leukemia-2019",
4
- "model": "paligemma-cnmc-ft",
5
- "prompt": "Are these cells healthy or cancerous?",
6
- "license": "https://www.cancerimagingarchive.net/collection/c-nmc-2019/"
7
- }
 
 
 
 
 
 
 
 
examples/tumor1.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "tumor1",
3
- "comment": "",
4
- "model": "",
5
- "prompt": "detect cell tumor",
6
- "license": ""
7
- }
 
 
 
 
 
 
 
 
examples/tumor10.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "tumor10",
3
- "comment": "",
4
- "model": "",
5
- "prompt": "detect cell tumor",
6
- "license": ""
7
- }
 
 
 
 
 
 
 
 
examples/tumor2.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "tumor2",
3
- "comment": "",
4
- "model": "",
5
- "prompt": "detect cell tumor",
6
- "license": ""
7
- }
 
 
 
 
 
 
 
 
examples/tumor3.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "tumor3",
3
- "comment": "",
4
- "model": "",
5
- "prompt": "detect cell tumor",
6
- "license": ""
7
- }
 
 
 
 
 
 
 
 
examples/tumor4.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "tumor4",
3
- "comment": "",
4
- "model": "",
5
- "prompt": "detect cell tumor",
6
- "license": ""
7
- }
 
 
 
 
 
 
 
 
examples/tumor5.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "tumor5",
3
- "comment": "",
4
- "model": "",
5
- "prompt": "detect cell tumor",
6
- "license": ""
7
- }
 
 
 
 
 
 
 
 
examples/tumor6.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "tumor6",
3
- "comment": "",
4
- "model": "",
5
- "prompt": "detect cell tumor",
6
- "license": ""
7
- }
 
 
 
 
 
 
 
 
examples/tumor7.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "tumor7",
3
- "comment": "",
4
- "model": "",
5
- "prompt": "detect cell tumor",
6
- "license": ""
7
- }
 
 
 
 
 
 
 
 
examples/tumor8.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "tumor8",
3
- "comment": "",
4
- "model": "",
5
- "prompt": "detect cell tumor",
6
- "license": ""
7
- }
 
 
 
 
 
 
 
 
examples/tumor9.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "name": "tumor9",
3
- "comment": "",
4
- "model": "",
5
- "prompt": "detect cell tumor",
6
- "license": ""
7
- }
 
 
 
 
 
 
 
 
requirements.txt CHANGED
@@ -1,6 +1,7 @@
1
  git+https://github.com/donbr/vision-agent.git
2
  git+https://github.com/donbr/vision-agent-tools.git
3
- spaces
4
  pillow
5
  pillow-heif
6
- weave
 
 
 
1
  git+https://github.com/donbr/vision-agent.git
2
  git+https://github.com/donbr/vision-agent-tools.git
 
3
  pillow
4
  pillow-heif
5
+ weave
6
+ huggingface-hub
7
+ gradio