Image Segmentation
BiRefNet
Safetensors
Transformers
background-removal
mask-generation
Dichotomous Image Segmentation
Camouflaged Object Detection
Salient Object Detection
pytorch_model_hub_mixin
model_hub_mixin
custom_code
Instructions to use ZhengPeng7/BiRefNet with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- BiRefNet
How to use ZhengPeng7/BiRefNet with BiRefNet:
# Option 1: use with transformers from transformers import AutoModelForImageSegmentation birefnet = AutoModelForImageSegmentation.from_pretrained("ZhengPeng7/BiRefNet", trust_remote_code=True)# Option 2: use with BiRefNet # Install from https://github.com/ZhengPeng7/BiRefNet from models.birefnet import BiRefNet model = BiRefNet.from_pretrained("ZhengPeng7/BiRefNet") - Transformers
How to use ZhengPeng7/BiRefNet with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-segmentation", model="ZhengPeng7/BiRefNet", trust_remote_code=True)# Load model directly from transformers import AutoModelForImageSegmentation model = AutoModelForImageSegmentation.from_pretrained("ZhengPeng7/BiRefNet", trust_remote_code=True, dtype="auto") - Notebooks
- Google Colab
- Kaggle
Commit ·
273735e
1
Parent(s): 26e7919
For the compatibility with the meta device used in transformers==5.0.0.
Browse files- birefnet.py +3 -3
birefnet.py
CHANGED
|
@@ -383,7 +383,7 @@ class PyramidVisionTransformerImpr(nn.Module):
|
|
| 383 |
embed_dim=embed_dims[3])
|
| 384 |
|
| 385 |
# transformer encoder
|
| 386 |
-
dpr =
|
| 387 |
cur = 0
|
| 388 |
self.block1 = nn.ModuleList([Block(
|
| 389 |
dim=embed_dims[0], num_heads=num_heads[0], mlp_ratio=mlp_ratios[0], qkv_bias=qkv_bias, qk_scale=qk_scale,
|
|
@@ -442,7 +442,7 @@ class PyramidVisionTransformerImpr(nn.Module):
|
|
| 442 |
#load_checkpoint(self, pretrained, map_location='cpu', strict=False, logger=logger)
|
| 443 |
|
| 444 |
def reset_drop_path(self, drop_path_rate):
|
| 445 |
-
dpr =
|
| 446 |
cur = 0
|
| 447 |
for i in range(self.depths[0]):
|
| 448 |
self.block1[i].drop_path.drop_prob = dpr[cur + i]
|
|
@@ -1128,7 +1128,7 @@ class SwinTransformer(nn.Module):
|
|
| 1128 |
self.pos_drop = nn.Dropout(p=drop_rate)
|
| 1129 |
|
| 1130 |
# stochastic depth
|
| 1131 |
-
dpr =
|
| 1132 |
|
| 1133 |
# build layers
|
| 1134 |
self.layers = nn.ModuleList()
|
|
|
|
| 383 |
embed_dim=embed_dims[3])
|
| 384 |
|
| 385 |
# transformer encoder
|
| 386 |
+
dpr = np.linspace(0, drop_path_rate, sum(depths)).tolist() # stochastic depth decay rule
|
| 387 |
cur = 0
|
| 388 |
self.block1 = nn.ModuleList([Block(
|
| 389 |
dim=embed_dims[0], num_heads=num_heads[0], mlp_ratio=mlp_ratios[0], qkv_bias=qkv_bias, qk_scale=qk_scale,
|
|
|
|
| 442 |
#load_checkpoint(self, pretrained, map_location='cpu', strict=False, logger=logger)
|
| 443 |
|
| 444 |
def reset_drop_path(self, drop_path_rate):
|
| 445 |
+
dpr = np.linspace(0, drop_path_rate, sum(self.depths)).tolist()
|
| 446 |
cur = 0
|
| 447 |
for i in range(self.depths[0]):
|
| 448 |
self.block1[i].drop_path.drop_prob = dpr[cur + i]
|
|
|
|
| 1128 |
self.pos_drop = nn.Dropout(p=drop_rate)
|
| 1129 |
|
| 1130 |
# stochastic depth
|
| 1131 |
+
dpr = np.linspace(0, drop_path_rate, sum(depths)).tolist() # stochastic depth decay rule
|
| 1132 |
|
| 1133 |
# build layers
|
| 1134 |
self.layers = nn.ModuleList()
|