liuyizhang
commited on
Commit
•
ed7763f
1
Parent(s):
434a891
update app.py
Browse files- GroundingDINO/groundingdino/version.py +1 -1
- app.py +24 -8
GroundingDINO/groundingdino/version.py
CHANGED
@@ -1 +1 @@
|
|
1 |
-
__version__ =
|
|
|
1 |
+
__version__ = '0.1.0'
|
app.py
CHANGED
@@ -1,12 +1,15 @@
|
|
1 |
|
2 |
-
import subprocess, os, sys
|
3 |
|
4 |
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
|
5 |
|
6 |
-
|
|
|
7 |
|
8 |
result = subprocess.run(['pip', 'list'], check=True)
|
9 |
-
print(f'pip list
|
|
|
|
|
10 |
|
11 |
if not os.path.exists('./sam_vit_h_4b8939.pth'):
|
12 |
result = subprocess.run(['wget', 'https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth'], check=True)
|
@@ -210,12 +213,22 @@ def run_grounded_sam(image_path, text_prompt, task_type, inpaint_prompt, box_thr
|
|
210 |
# load image
|
211 |
image_pil, image = load_image(image_path.convert("RGB"))
|
212 |
|
|
|
|
|
213 |
# visualize raw image
|
214 |
-
image_pil.save(os.path.join(output_dir, "
|
215 |
|
216 |
# run grounding dino model
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
boxes_filt, pred_phrases = get_grounding_output(
|
218 |
-
groundingdino_model, image, text_prompt, box_threshold, text_threshold, device=
|
219 |
)
|
220 |
|
221 |
size = image_pil.size
|
@@ -250,9 +263,10 @@ def run_grounded_sam(image_path, text_prompt, task_type, inpaint_prompt, box_thr
|
|
250 |
}
|
251 |
# import ipdb; ipdb.set_trace()
|
252 |
image_with_box = plot_boxes_to_image(image_pil, pred_dict)[0]
|
253 |
-
image_path = os.path.join(output_dir, "
|
254 |
image_with_box.save(image_path)
|
255 |
image_result = cv2.cvtColor(cv2.imread(image_path), cv2.COLOR_BGR2RGB)
|
|
|
256 |
return image_result
|
257 |
elif task_type == 'segment':
|
258 |
assert sam_checkpoint, 'sam_checkpoint is not found!'
|
@@ -265,9 +279,10 @@ def run_grounded_sam(image_path, text_prompt, task_type, inpaint_prompt, box_thr
|
|
265 |
for box, label in zip(boxes_filt, pred_phrases):
|
266 |
show_box(box.numpy(), plt.gca(), label)
|
267 |
plt.axis('off')
|
268 |
-
image_path = os.path.join(output_dir, "
|
269 |
plt.savefig(image_path, bbox_inches="tight")
|
270 |
image_result = cv2.cvtColor(cv2.imread(image_path), cv2.COLOR_BGR2RGB)
|
|
|
271 |
return image_result
|
272 |
elif task_type == 'inpainting':
|
273 |
assert inpaint_prompt, 'inpaint_prompt is not found!'
|
@@ -277,9 +292,10 @@ def run_grounded_sam(image_path, text_prompt, task_type, inpaint_prompt, box_thr
|
|
277 |
image_pil = Image.fromarray(image)
|
278 |
|
279 |
image = sd_pipe(prompt=inpaint_prompt, image=image_pil, mask_image=mask_pil).images[0]
|
280 |
-
image_path = os.path.join(output_dir, "
|
281 |
image.save(image_path)
|
282 |
image_result = cv2.cvtColor(cv2.imread(image_path), cv2.COLOR_BGR2RGB)
|
|
|
283 |
return image_result
|
284 |
else:
|
285 |
print("task_type:{} error!".format(task_type))
|
|
|
1 |
|
2 |
+
import subprocess, os, sys, time
|
3 |
|
4 |
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
|
5 |
|
6 |
+
result = subprocess.run(['pip', 'install', '-e', 'GroundingDINO'], check=True)
|
7 |
+
print(f'pip install GroundingDINO = {result}')
|
8 |
|
9 |
result = subprocess.run(['pip', 'list'], check=True)
|
10 |
+
print(f'pip list = {result}')
|
11 |
+
|
12 |
+
sys.path.insert(0, './GroundingDINO')
|
13 |
|
14 |
if not os.path.exists('./sam_vit_h_4b8939.pth'):
|
15 |
result = subprocess.run(['wget', 'https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth'], check=True)
|
|
|
213 |
# load image
|
214 |
image_pil, image = load_image(image_path.convert("RGB"))
|
215 |
|
216 |
+
file_temp = int(time.time())
|
217 |
+
|
218 |
# visualize raw image
|
219 |
+
# image_pil.save(os.path.join(output_dir, f"raw_image_{file_temp}.jpg"))
|
220 |
|
221 |
# run grounding dino model
|
222 |
+
groundingdino_device = 'cpu'
|
223 |
+
if device != 'cpu':
|
224 |
+
try:
|
225 |
+
from groundingdino import _C
|
226 |
+
groundingdino_device = 'cuda:0'
|
227 |
+
except:
|
228 |
+
warnings.warn("Failed to load custom C++ ops. Running on CPU mode Only in groundingdino!")
|
229 |
+
|
230 |
boxes_filt, pred_phrases = get_grounding_output(
|
231 |
+
groundingdino_model, image, text_prompt, box_threshold, text_threshold, device=groundingdino_device
|
232 |
)
|
233 |
|
234 |
size = image_pil.size
|
|
|
263 |
}
|
264 |
# import ipdb; ipdb.set_trace()
|
265 |
image_with_box = plot_boxes_to_image(image_pil, pred_dict)[0]
|
266 |
+
image_path = os.path.join(output_dir, f"grounding_dino_output_{file_temp}.jpg")
|
267 |
image_with_box.save(image_path)
|
268 |
image_result = cv2.cvtColor(cv2.imread(image_path), cv2.COLOR_BGR2RGB)
|
269 |
+
os.remove(image_path)
|
270 |
return image_result
|
271 |
elif task_type == 'segment':
|
272 |
assert sam_checkpoint, 'sam_checkpoint is not found!'
|
|
|
279 |
for box, label in zip(boxes_filt, pred_phrases):
|
280 |
show_box(box.numpy(), plt.gca(), label)
|
281 |
plt.axis('off')
|
282 |
+
image_path = os.path.join(output_dir, f"grounding_seg_output_{file_temp}.jpg")
|
283 |
plt.savefig(image_path, bbox_inches="tight")
|
284 |
image_result = cv2.cvtColor(cv2.imread(image_path), cv2.COLOR_BGR2RGB)
|
285 |
+
os.remove(image_path)
|
286 |
return image_result
|
287 |
elif task_type == 'inpainting':
|
288 |
assert inpaint_prompt, 'inpaint_prompt is not found!'
|
|
|
292 |
image_pil = Image.fromarray(image)
|
293 |
|
294 |
image = sd_pipe(prompt=inpaint_prompt, image=image_pil, mask_image=mask_pil).images[0]
|
295 |
+
image_path = os.path.join(output_dir, f"grounded_sam_inpainting_output_{file_temp}.jpg")
|
296 |
image.save(image_path)
|
297 |
image_result = cv2.cvtColor(cv2.imread(image_path), cv2.COLOR_BGR2RGB)
|
298 |
+
os.remove(image_path)
|
299 |
return image_result
|
300 |
else:
|
301 |
print("task_type:{} error!".format(task_type))
|