John Ho
commited on
Commit
·
b2e3d42
1
Parent(s):
7afaf9e
added input validation
Browse files
README.md
CHANGED
|
@@ -11,3 +11,18 @@ short_description: sam2 images and video inference on ZeroGPU
|
|
| 11 |
---
|
| 12 |
|
| 13 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
---
|
| 12 |
|
| 13 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
| 14 |
+
|
| 15 |
+
# Changelog
|
| 16 |
+
|
| 17 |
+
this huggingspace demo borrows extensively from [SkalskiP/florence-sam](https://huggingface.co/spaces/SkalskiP/florence-sam/tree/main).
|
| 18 |
+
Here are some changes that's noteworthy:
|
| 19 |
+
|
| 20 |
+
* the `RuntimeError: No available kernel. Aborting execution.` error documented [here](https://github.com/facebookresearch/sam2/issues/48), [here](https://huggingface.co/spaces/SkalskiP/florence-sam/discussions/5), and [here](https://github.com/facebookresearch/sam2/issues/100) is fixed with the following lines in `app.py` (see [this commit](https://huggingface.co/spaces/SkalskiP/florence-sam/commit/488d99ebc8b60d6a87b84a545dc0561cfadefc65)) with the `@torch.inference_mode()` and
|
| 21 |
+
`@torch.autocast(device_type="cuda", dtype=torch.bfloat16)` before
|
| 22 |
+
the inference function:
|
| 23 |
+
```python
|
| 24 |
+
torch.autocast(device_type="cuda", dtype=torch.bfloat16).__enter__()
|
| 25 |
+
if torch.cuda.get_device_properties(0).major >= 8:
|
| 26 |
+
torch.backends.cuda.matmul.allow_tf32 = True
|
| 27 |
+
torch.backends.cudnn.allow_tf32 = True
|
| 28 |
+
```
|
app.py
CHANGED
|
@@ -69,7 +69,17 @@ def detect_image(
|
|
| 69 |
Returns:
|
| 70 |
list: a list of masks
|
| 71 |
"""
|
| 72 |
-
bboxes =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 73 |
model = load_im_model(variant=variant)
|
| 74 |
return run_sam_im_inference(
|
| 75 |
model, image=im, bboxes=bboxes, get_pil_mask=False, b64_encode_mask=True
|
|
|
|
| 69 |
Returns:
|
| 70 |
list: a list of masks
|
| 71 |
"""
|
| 72 |
+
bboxes = (
|
| 73 |
+
json.loads(bboxes)
|
| 74 |
+
if isinstance(bboxes, str) and type(bboxes) != type(None)
|
| 75 |
+
else bboxes
|
| 76 |
+
)
|
| 77 |
+
assert bboxes or points, f"either bboxes or points must be provided."
|
| 78 |
+
if points:
|
| 79 |
+
assert len(points) == len(
|
| 80 |
+
point_labels
|
| 81 |
+
), f"{len(points)} points provided but there are {len(point_labels)} labels."
|
| 82 |
+
|
| 83 |
model = load_im_model(variant=variant)
|
| 84 |
return run_sam_im_inference(
|
| 85 |
model, image=im, bboxes=bboxes, get_pil_mask=False, b64_encode_mask=True
|