BiRefNet 是什么?
BiRefNet 是用于背景去除和抠图的模型。
正式来说,它是用于 Dichotomous Image Segmentation (DIS) 的模型,也就是把图像分成 前景 和 背景 两部分。
它并不是像 SAM 那样,通过“这个点”“这个框”“这个物体”来指定并生成蒙版。BiRefNet 更擅长从头发、植物等细节复杂的对象中,生成高质量的切出蒙版。
模型下载
- birefnet.safetensors (444 MB)
📂ComfyUI/
└── 📂models/
└── 📂background_removal/
└── birefnet.safetensors
workflow
切出前景

{
"id": "32d5b916-1532-435e-8274-bab16b8cce42",
"revision": 0,
"last_node_id": 15,
"last_link_id": 18,
"nodes": [
{
"id": 3,
"type": "LoadBackgroundRemovalModel",
"pos": [
769.3428839311762,
373.2630368921259
],
"size": [
328.627516211709,
58
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "bg_model",
"type": "BACKGROUND_REMOVAL",
"links": [
1
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0",
"Node name for S&R": "LoadBackgroundRemovalModel"
},
"widgets_values": [
"birefnet.safetensors"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 1,
"type": "RemoveBackground",
"pos": [
1140.4167084744367,
373.2630368921259
],
"size": [
204.705078125,
46
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "bg_removal_model",
"type": "BACKGROUND_REMOVAL",
"link": 1
},
{
"name": "image",
"type": "IMAGE",
"link": 8
}
],
"outputs": [
{
"name": "mask",
"type": "MASK",
"links": [
3,
13
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0",
"Node name for S&R": "RemoveBackground"
},
"widgets_values": [],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 10,
"type": "InvertMask",
"pos": [
1387.568094930988,
373.2630368921259
],
"size": [
140,
26
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "mask",
"type": "MASK",
"link": 13
}
],
"outputs": [
{
"name": "MASK",
"type": "MASK",
"links": [
15
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0",
"Node name for S&R": "InvertMask"
},
"widgets_values": [],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 4,
"type": "MaskPreview",
"pos": [
1387.568094930988,
617.9104524429572
],
"size": [
261.7862348244132,
283.74516954429964
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "mask",
"type": "MASK",
"link": 3
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0",
"Node name for S&R": "MaskPreview"
},
"widgets_values": []
},
{
"id": 2,
"type": "LoadImage",
"pos": [
769.3428839311762,
494.9638574769056
],
"size": [
328.627516211709,
406.6917645103512
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
8,
16
]
},
{
"name": "MASK",
"type": "MASK",
"links": []
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"normal02_input.jpg",
"image"
]
},
{
"id": 11,
"type": "JoinImageWithAlpha",
"pos": [
1587.4157037841544,
494.9638574769056
],
"size": [
216.6609912109374,
46
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 16
},
{
"name": "alpha",
"type": "MASK",
"link": 15
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
18
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0",
"Node name for S&R": "JoinImageWithAlpha"
},
"widgets_values": [],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 15,
"type": "SaveImage",
"pos": [
1841.5916728163381,
494.9638574769056
],
"size": [
303.0471535866202,
354.2881776680789
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 18
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0"
},
"widgets_values": [
"ComfyUI"
]
}
],
"links": [
[
1,
3,
0,
1,
0,
"BACKGROUND_REMOVAL"
],
[
3,
1,
0,
4,
0,
"MASK"
],
[
8,
2,
0,
1,
1,
"IMAGE"
],
[
13,
1,
0,
10,
0,
"MASK"
],
[
15,
10,
0,
11,
1,
"MASK"
],
[
16,
2,
0,
11,
0,
"IMAGE"
],
[
18,
11,
0,
15,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1,
"offset": [
-585.8257424834793,
-221.4257217325228
]
},
"frontendVersion": "1.45.19"
},
"version": 0.4
}
- 使用
Load Background Removal Model读取birefnet.safetensors。 - 将图像和模型输入
Remove Background后,会输出用于背景去除的MASK。 - 想要背景透明的图像时,使用
Join Image with Alpha。- 但如果直接使用这个蒙版,前景会变透明,所以中间要接一个
Invert Mask。
- 但如果直接使用这个蒙版,前景会变透明,所以中间要接一个
填充背景
上面的 workflow 会把背景变为透明,但作为图像生成或分析的预处理使用时,把背景填充成单色通常更容易处理。

{
"id": "32d5b916-1532-435e-8274-bab16b8cce42",
"revision": 0,
"last_node_id": 13,
"last_link_id": 20,
"nodes": [
{
"id": 3,
"type": "LoadBackgroundRemovalModel",
"pos": [
776.2984792746487,
215.5777412691436
],
"size": [
325.9727446183857,
58
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "bg_model",
"type": "BACKGROUND_REMOVAL",
"links": [
1
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0",
"Node name for S&R": "LoadBackgroundRemovalModel"
},
"widgets_values": [
"birefnet.safetensors"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 1,
"type": "RemoveBackground",
"pos": [
1145.3690790242017,
215.5777412691436
],
"size": [
204.705078125,
46
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "bg_removal_model",
"type": "BACKGROUND_REMOVAL",
"link": 1
},
{
"name": "image",
"type": "IMAGE",
"link": 8
}
],
"outputs": [
{
"name": "mask",
"type": "MASK",
"links": [
15
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0",
"Node name for S&R": "RemoveBackground"
},
"widgets_values": [],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 11,
"type": "InvertMask",
"pos": [
1393.172012280369,
215.5777412691436
],
"size": [
140,
26
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "mask",
"type": "MASK",
"link": 15
}
],
"outputs": [
{
"name": "MASK",
"type": "MASK",
"links": [
16
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0",
"Node name for S&R": "InvertMask"
},
"widgets_values": [],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 12,
"type": "ColorToRGBInt",
"pos": [
1262.8057138281881,
426.71661130361684
],
"size": [
270,
78
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "rgb_int",
"type": "INT",
"links": [
19
]
},
{
"name": "hex",
"type": "COLOR",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0",
"Node name for S&R": "ColorToRGBInt"
},
"widgets_values": [
"#ffffff"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 10,
"type": "EmptyImage",
"pos": [
1262.8055334741948,
555.658608688232
],
"size": [
270,
130
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "color",
"type": "INT",
"widget": {
"name": "color"
},
"link": 19
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
18
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0",
"Node name for S&R": "EmptyImage"
},
"widgets_values": [
1024,
1024,
1,
0
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 2,
"type": "LoadImage",
"pos": [
775.1632258740977,
335.574967141765
],
"size": [
325.5056205715746,
459.13681582045564
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
8,
17
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"depth03_input.jpg",
"image"
]
},
{
"id": 8,
"type": "ImageCompositeMasked",
"pos": [
1597.768975382267,
332.6964371281348
],
"size": [
271.64609375,
146
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "destination",
"type": "IMAGE",
"link": 17
},
{
"name": "source",
"type": "IMAGE",
"link": 18
},
{
"name": "mask",
"shape": 7,
"type": "MASK",
"link": 16
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
20
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0",
"Node name for S&R": "ImageCompositeMasked"
},
"widgets_values": [
0,
0,
true
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 13,
"type": "SaveImage",
"pos": [
1904.5789033233184,
332.6964371281348
],
"size": [
360.75008862304685,
495.060003692627
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 20
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.26.0"
},
"widgets_values": [
"ComfyUI"
]
}
],
"links": [
[
1,
3,
0,
1,
0,
"BACKGROUND_REMOVAL"
],
[
8,
2,
0,
1,
1,
"IMAGE"
],
[
15,
1,
0,
11,
0,
"MASK"
],
[
16,
11,
0,
8,
2,
"MASK"
],
[
17,
2,
0,
8,
0,
"IMAGE"
],
[
18,
10,
0,
8,
1,
"IMAGE"
],
[
19,
12,
0,
10,
0,
"INT"
],
[
20,
8,
0,
13,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.7513148009015778,
"offset": [
-431.4889771758615,
-4.5243700184477955
]
},
"frontendVersion": "1.45.19",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
- 将原图、反转后的蒙版、单色图像输入
Image Composite Masked。 - 只把被蒙版选中的背景部分替换为单色图像。
- 详情请参考 图层合成。