Tyler Ng
commited on
Update app.py
Browse files
app.py
CHANGED
|
@@ -25,6 +25,9 @@ from transparent_background import Remover
|
|
| 25 |
# rembg (U2Net + IS-Net via ONNX)
|
| 26 |
from rembg import new_session, remove as rembg_remove
|
| 27 |
|
|
|
|
|
|
|
|
|
|
| 28 |
|
| 29 |
# ----------------------------
|
| 30 |
# Utilities
|
|
@@ -101,6 +104,7 @@ class Timing:
|
|
| 101 |
class ModelManager:
|
| 102 |
def __init__(self):
|
| 103 |
self._inspy: Optional[Remover] = None
|
|
|
|
| 104 |
self._torch_models: Dict[str, torch.nn.Module] = {}
|
| 105 |
self._torch_model_on_gpu: Optional[str] = None
|
| 106 |
self._rembg_sessions: Dict[str, object] = {}
|
|
@@ -126,6 +130,11 @@ class ModelManager:
|
|
| 126 |
self._inspy = Remover(jit=False)
|
| 127 |
return self._inspy
|
| 128 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 129 |
def _offload_torch_models_from_gpu(self, keep_name: str):
|
| 130 |
if get_device() != "cuda":
|
| 131 |
return
|
|
@@ -264,6 +273,11 @@ class ModelManager:
|
|
| 264 |
out = rembg_remove(img_rgb, session=sess)
|
| 265 |
out = ensure_rgba(out)
|
| 266 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 267 |
else:
|
| 268 |
raise ValueError(f"Unknown model: {model_name}")
|
| 269 |
|
|
@@ -294,6 +308,7 @@ MODEL_CHOICES = [
|
|
| 294 |
"U2Net",
|
| 295 |
"BRIA RMBG 2.0",
|
| 296 |
"IS-Net",
|
|
|
|
| 297 |
]
|
| 298 |
|
| 299 |
|
|
@@ -393,6 +408,7 @@ Benchmarked models:
|
|
| 393 |
3. **U2Net** β via rembg/ONNX
|
| 394 |
4. **BRIA RMBG 2.0** β briaai/RMBG-2.0 (requires license acceptance)
|
| 395 |
5. **IS-Net** β isnet-general-use via rembg
|
|
|
|
| 396 |
|
| 397 |
**Notes**
|
| 398 |
- Output is true transparent PNG (RGBA)
|
|
|
|
| 25 |
# rembg (U2Net + IS-Net via ONNX)
|
| 26 |
from rembg import new_session, remove as rembg_remove
|
| 27 |
|
| 28 |
+
# withoutBG (4-stage ONNX pipeline)
|
| 29 |
+
from withoutbg import WithoutBG
|
| 30 |
+
|
| 31 |
|
| 32 |
# ----------------------------
|
| 33 |
# Utilities
|
|
|
|
| 104 |
class ModelManager:
|
| 105 |
def __init__(self):
|
| 106 |
self._inspy: Optional[Remover] = None
|
| 107 |
+
self._withoutbg: Optional[object] = None
|
| 108 |
self._torch_models: Dict[str, torch.nn.Module] = {}
|
| 109 |
self._torch_model_on_gpu: Optional[str] = None
|
| 110 |
self._rembg_sessions: Dict[str, object] = {}
|
|
|
|
| 130 |
self._inspy = Remover(jit=False)
|
| 131 |
return self._inspy
|
| 132 |
|
| 133 |
+
def _load_withoutbg(self):
|
| 134 |
+
if self._withoutbg is None:
|
| 135 |
+
self._withoutbg = WithoutBG.opensource()
|
| 136 |
+
return self._withoutbg
|
| 137 |
+
|
| 138 |
def _offload_torch_models_from_gpu(self, keep_name: str):
|
| 139 |
if get_device() != "cuda":
|
| 140 |
return
|
|
|
|
| 273 |
out = rembg_remove(img_rgb, session=sess)
|
| 274 |
out = ensure_rgba(out)
|
| 275 |
|
| 276 |
+
elif model_name == "withoutBG":
|
| 277 |
+
model = self._load_withoutbg()
|
| 278 |
+
out = model.remove_background(img_rgb)
|
| 279 |
+
out = ensure_rgba(out)
|
| 280 |
+
|
| 281 |
else:
|
| 282 |
raise ValueError(f"Unknown model: {model_name}")
|
| 283 |
|
|
|
|
| 308 |
"U2Net",
|
| 309 |
"BRIA RMBG 2.0",
|
| 310 |
"IS-Net",
|
| 311 |
+
"withoutBG",
|
| 312 |
]
|
| 313 |
|
| 314 |
|
|
|
|
| 408 |
3. **U2Net** β via rembg/ONNX
|
| 409 |
4. **BRIA RMBG 2.0** β briaai/RMBG-2.0 (requires license acceptance)
|
| 410 |
5. **IS-Net** β isnet-general-use via rembg
|
| 411 |
+
6. **withoutBG** β 4-stage ONNX pipeline (Depth β ISNet β Matting β Refiner)
|
| 412 |
|
| 413 |
**Notes**
|
| 414 |
- Output is true transparent PNG (RGBA)
|