format md (#611)

This commit is contained in:
Vladimir Budylnikov 2024-03-24 17:31:43 +04:00 committed by GitHub
parent e1bd73c085
commit 2e23bab4fa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 103 additions and 68 deletions

16
.github/workflows/lint_markdown.yml vendored Normal file
View File

@ -0,0 +1,16 @@
---
name: Markdown Lint
on:
push:
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install markdownlint
uses: DavidAnson/markdownlint-cli2-action@v15

4
.markdownlint.yaml Normal file
View File

@ -0,0 +1,4 @@
---
default: true
MD013: false # line-length
MD033: false # no-inline-html

129
README.md
View File

@ -5,43 +5,42 @@
[![Hugging Face Spaces](https://img.shields.io/badge/🤗%20Hugging%20Face-Spaces-blue)](https://huggingface.co/spaces/KenjieDec/RemBG) [![Hugging Face Spaces](https://img.shields.io/badge/🤗%20Hugging%20Face-Spaces-blue)](https://huggingface.co/spaces/KenjieDec/RemBG)
[![Streamlit App](https://img.shields.io/badge/🎈%20Streamlit%20Community-Cloud-blue)](https://bgremoval.streamlit.app/) [![Streamlit App](https://img.shields.io/badge/🎈%20Streamlit%20Community-Cloud-blue)](https://bgremoval.streamlit.app/)
Rembg is a tool to remove images background. Rembg is a tool to remove images background.
<p style="display: flex;align-items: center;justify-content: center;"> <p style="display: flex;align-items: center;justify-content: center;">
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/car-1.jpg" width="100" /> <img alt="example car-1" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/car-1.jpg" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/car-1.out.png" width="100" /> <img alt="example car-1.out" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/car-1.out.png" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/car-2.jpg" width="100" /> <img alt="example car-2" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/car-2.jpg" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/car-2.out.png" width="100" /> <img alt="example car-2.out" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/car-2.out.png" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/car-3.jpg" width="100" /> <img alt="example car-3" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/car-3.jpg" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/car-3.out.png" width="100" /> <img alt="example car-3.out" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/car-3.out.png" width="100" />
</p> </p>
<p style="display: flex;align-items: center;justify-content: center;"> <p style="display: flex;align-items: center;justify-content: center;">
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/animal-1.jpg" width="100" /> <img alt="example animal-1" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/animal-1.jpg" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/animal-1.out.png" width="100" /> <img alt="example animal-1.out" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/animal-1.out.png" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/animal-2.jpg" width="100" /> <img alt="example animal-2" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/animal-2.jpg" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/animal-2.out.png" width="100" /> <img alt="example animal-2.out" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/animal-2.out.png" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/animal-3.jpg" width="100" /> <img alt="example animal-3" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/animal-3.jpg" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/animal-3.out.png" width="100" /> <img alt="example animal-3.out" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/animal-3.out.png" width="100" />
</p> </p>
<p style="display: flex;align-items: center;justify-content: center;"> <p style="display: flex;align-items: center;justify-content: center;">
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/girl-1.jpg" width="100" /> <img alt="example girl-1" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/girl-1.jpg" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/girl-1.out.png" width="100" /> <img alt="example girl-1.out" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/girl-1.out.png" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/girl-2.jpg" width="100" /> <img alt="example girl-2" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/girl-2.jpg" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/girl-2.out.png" width="100" /> <img alt="example girl-2.out" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/girl-2.out.png" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/girl-3.jpg" width="100" /> <img alt="example girl-3" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/girl-3.jpg" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/girl-3.out.png" width="100" /> <img alt="example girl-3.out" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/girl-3.out.png" width="100" />
</p> </p>
<p style="display: flex;align-items: center;justify-content: center;"> <p style="display: flex;align-items: center;justify-content: center;">
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/anime-girl-1.jpg" width="100" /> <img alt="example anime-girl-1" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/anime-girl-1.jpg" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/anime-girl-1.out.png" width="100" /> <img alt="example anime-girl-1.out" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/anime-girl-1.out.png" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/anime-girl-2.jpg" width="100" /> <img alt="example anime-girl-2" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/anime-girl-2.jpg" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/anime-girl-2.out.png" width="100" /> <img alt="example anime-girl-2.out" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/anime-girl-2.out.png" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/anime-girl-3.jpg" width="100" /> <img alt="example anime-girl-3" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/anime-girl-3.jpg" width="100" />
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/anime-girl-3.out.png" width="100" /> <img alt="example anime-girl-3.out" src="https://raw.githubusercontent.com/danielgatis/rembg/master/examples/anime-girl-3.out.png" width="100" />
</p> </p>
**If this project has helped you, please consider making a [donation](https://www.buymeacoffee.com/danielgatis).** **If this project has helped you, please consider making a [donation](https://www.buymeacoffee.com/danielgatis).**
@ -69,7 +68,7 @@ Rembg is a tool to remove images background.
## Requirements ## Requirements
``` ```text
python: >3.7, <3.13 python: >3.7, <3.13
``` ```
@ -86,10 +85,10 @@ GPU support:
First of all, you need to check if your system supports the `onnxruntime-gpu`. First of all, you need to check if your system supports the `onnxruntime-gpu`.
Go to https://onnxruntime.ai and check the installation matrix. Go to <https://onnxruntime.ai> and check the installation matrix.
<p style="display: flex;align-items: center;justify-content: center;"> <p style="display: flex;align-items: center;justify-content: center;">
<img src="https://raw.githubusercontent.com/danielgatis/rembg/master/onnxruntime-installation-matrix.png" width="400" /> <img alt="onnxruntime-installation-matrix" src="https://raw.githubusercontent.com/danielgatis/rembg/master/onnxruntime-installation-matrix.png" width="400" />
</p> </p>
If yes, just run: If yes, just run:
@ -104,6 +103,7 @@ pip install rembg[gpu,cli] # for library + cli
After the installation step you can use rembg just typing `rembg` in your terminal window. After the installation step you can use rembg just typing `rembg` in your terminal window.
The `rembg` command has 4 subcommands, one for each input type: The `rembg` command has 4 subcommands, one for each input type:
- `i` for files - `i` for files
- `p` for folders - `p` for folders
- `s` for http server - `s` for http server
@ -111,13 +111,13 @@ The `rembg` command has 4 subcommands, one for each input type:
You can get help about the main command using: You can get help about the main command using:
``` ```shell
rembg --help rembg --help
``` ```
As well, about all the subcommands using: As well, about all the subcommands using:
``` ```shell
rembg <COMMAND> --help rembg <COMMAND> --help
``` ```
@ -127,44 +127,43 @@ Used when input and output are files.
Remove the background from a remote image Remove the background from a remote image
``` ```shell
curl -s http://input.png | rembg i > output.png curl -s http://input.png | rembg i > output.png
``` ```
Remove the background from a local file Remove the background from a local file
``` ```shell
rembg i path/to/input.png path/to/output.png rembg i path/to/input.png path/to/output.png
``` ```
Remove the background specifying a model Remove the background specifying a model
``` ```shell
rembg i -m u2netp path/to/input.png path/to/output.png rembg i -m u2netp path/to/input.png path/to/output.png
``` ```
Remove the background returning only the mask Remove the background returning only the mask
``` ```shell
rembg i -om path/to/input.png path/to/output.png rembg i -om path/to/input.png path/to/output.png
``` ```
Remove the background applying an alpha matting Remove the background applying an alpha matting
``` ```shell
rembg i -a path/to/input.png path/to/output.png rembg i -a path/to/input.png path/to/output.png
``` ```
Passing extras parameters Passing extras parameters
``` ```shell
SAM example SAM example
rembg i -m sam -x '{ "sam_prompt": [{"type": "point", "data": [724, 740], "label": 1}] }' examples/plants-1.jpg examples/plants-1.out.png rembg i -m sam -x '{ "sam_prompt": [{"type": "point", "data": [724, 740], "label": 1}] }' examples/plants-1.jpg examples/plants-1.out.png
``` ```
``` ```shell
Custom model example Custom model example
rembg i -m u2net_custom -x '{"model_path": "~/.u2net/u2net.onnx"}' path/to/input.png path/to/output.png rembg i -m u2net_custom -x '{"model_path": "~/.u2net/u2net.onnx"}' path/to/input.png path/to/output.png
@ -176,13 +175,13 @@ Used when input and output are folders.
Remove the background from all images in a folder Remove the background from all images in a folder
``` ```shell
rembg p path/to/input path/to/output rembg p path/to/input path/to/output
``` ```
Same as before, but watching for new/changed files to process Same as before, but watching for new/changed files to process
``` ```shell
rembg p -w path/to/input path/to/output rembg p -w path/to/input path/to/output
``` ```
@ -190,7 +189,7 @@ rembg p -w path/to/input path/to/output
Used to start http server. Used to start http server.
``` ```shell
rembg s --host 0.0.0.0 --port 7000 --log_level info rembg s --host 0.0.0.0 --port 7000 --log_level info
``` ```
@ -198,13 +197,13 @@ To see the complete endpoints documentation, go to: `http://localhost:7000/api`.
Remove the background from an image url Remove the background from an image url
``` ```shell
curl -s "http://localhost:7000/api/remove?url=http://input.png" -o output.png curl -s "http://localhost:7000/api/remove?url=http://input.png" -o output.png
``` ```
Remove the background from an uploaded image Remove the background from an uploaded image
``` ```shell
curl -s -F file=@/path/to/input.jpg "http://localhost:7000/api/remove" -o output.png curl -s -F file=@/path/to/input.jpg "http://localhost:7000/api/remove" -o output.png
``` ```
@ -212,7 +211,7 @@ curl -s -F file=@/path/to/input.jpg "http://localhost:7000/api/remove" -o outpu
Process a sequence of RGB24 images from stdin. This is intended to be used with another program, such as FFMPEG, that outputs RGB24 pixel data to stdout, which is piped into the stdin of this program, although nothing prevents you from manually typing in images at stdin. Process a sequence of RGB24 images from stdin. This is intended to be used with another program, such as FFMPEG, that outputs RGB24 pixel data to stdout, which is piped into the stdin of this program, although nothing prevents you from manually typing in images at stdin.
``` ```shell
rembg b image_width image_height -o output_specifier rembg b image_width image_height -o output_specifier
``` ```
@ -224,13 +223,12 @@ Arguments:
Example usage with FFMPEG: Example usage with FFMPEG:
``` ```shell
ffmpeg -i input.mp4 -ss 10 -an -f rawvideo -pix_fmt rgb24 pipe:1 | rembg b 1280 720 -o folder/output-%03u.png ffmpeg -i input.mp4 -ss 10 -an -f rawvideo -pix_fmt rgb24 pipe:1 | rembg b 1280 720 -o folder/output-%03u.png
``` ```
The width and height values must match the dimension of output images from FFMPEG. Note for FFMPEG, the "`-an -f rawvideo -pix_fmt rgb24 pipe:1`" part is required for the whole thing to work. The width and height values must match the dimension of output images from FFMPEG. Note for FFMPEG, the "`-an -f rawvideo -pix_fmt rgb24 pipe:1`" part is required for the whole thing to work.
## Usage as a library ## Usage as a library
Input and output as bytes Input and output as bytes
@ -294,14 +292,16 @@ for file in Path('path/to/folder').glob('*.png'):
output = remove(input, session=session) output = remove(input, session=session)
o.write(output) o.write(output)
``` ```
To see a full list of examples on how to use rembg, go to the [examples](USAGE.md) page. To see a full list of examples on how to use rembg, go to the [examples](USAGE.md) page.
## Usage as a docker ## Usage as a docker
Just replace the `rembg` command for `docker run danielgatis/rembg`. Just replace the `rembg` command for `docker run danielgatis/rembg`.
Try this: Try this:
``` ```shell
docker run -v path/to/input:/rembg danielgatis/rembg i input.png path/to/output/output.png docker run -v path/to/input:/rembg danielgatis/rembg i input.png path/to/output/output.png
``` ```
@ -311,33 +311,32 @@ All models are downloaded and saved in the user home folder in the `.u2net` dire
The available models are: The available models are:
- u2net ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net.onnx), [source](https://github.com/xuebinqin/U-2-Net)): A pre-trained model for general use cases. - u2net ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net.onnx), [source](https://github.com/xuebinqin/U-2-Net)): A pre-trained model for general use cases.
- u2netp ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2netp.onnx), [source](https://github.com/xuebinqin/U-2-Net)): A lightweight version of u2net model. - u2netp ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2netp.onnx), [source](https://github.com/xuebinqin/U-2-Net)): A lightweight version of u2net model.
- u2net_human_seg ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_human_seg.onnx), [source](https://github.com/xuebinqin/U-2-Net)): A pre-trained model for human segmentation. - u2net_human_seg ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_human_seg.onnx), [source](https://github.com/xuebinqin/U-2-Net)): A pre-trained model for human segmentation.
- u2net_cloth_seg ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_cloth_seg.onnx), [source](https://github.com/levindabhi/cloth-segmentation)): A pre-trained model for Cloths Parsing from human portrait. Here clothes are parsed into 3 category: Upper body, Lower body and Full body. - u2net_cloth_seg ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_cloth_seg.onnx), [source](https://github.com/levindabhi/cloth-segmentation)): A pre-trained model for Cloths Parsing from human portrait. Here clothes are parsed into 3 category: Upper body, Lower body and Full body.
- silueta ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/silueta.onnx), [source](https://github.com/xuebinqin/U-2-Net/issues/295)): Same as u2net but the size is reduced to 43Mb. - silueta ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/silueta.onnx), [source](https://github.com/xuebinqin/U-2-Net/issues/295)): Same as u2net but the size is reduced to 43Mb.
- isnet-general-use ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/isnet-general-use.onnx), [source](https://github.com/xuebinqin/DIS)): A new pre-trained model for general use cases. - isnet-general-use ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/isnet-general-use.onnx), [source](https://github.com/xuebinqin/DIS)): A new pre-trained model for general use cases.
- isnet-anime ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/isnet-anime.onnx), [source](https://github.com/SkyTNT/anime-segmentation)): A high-accuracy segmentation for anime character. - isnet-anime ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/isnet-anime.onnx), [source](https://github.com/SkyTNT/anime-segmentation)): A high-accuracy segmentation for anime character.
- sam ([download encoder](https://github.com/danielgatis/rembg/releases/download/v0.0.0/vit_b-encoder-quant.onnx), [download decoder](https://github.com/danielgatis/rembg/releases/download/v0.0.0/vit_b-decoder-quant.onnx), [source](https://github.com/facebookresearch/segment-anything)): A pre-trained model for any use cases. - sam ([download encoder](https://github.com/danielgatis/rembg/releases/download/v0.0.0/vit_b-encoder-quant.onnx), [download decoder](https://github.com/danielgatis/rembg/releases/download/v0.0.0/vit_b-decoder-quant.onnx), [source](https://github.com/facebookresearch/segment-anything)): A pre-trained model for any use cases.
### How to train your own model ### How to train your own model
If You need more fine tuned models try this: If You need more fine tuned models try this:
https://github.com/danielgatis/rembg/issues/193#issuecomment-1055534289 <https://github.com/danielgatis/rembg/issues/193#issuecomment-1055534289>
## Some video tutorials ## Some video tutorials
- https://www.youtube.com/watch?v=3xqwpXjxyMQ - <https://www.youtube.com/watch?v=3xqwpXjxyMQ>
- https://www.youtube.com/watch?v=dFKRGXdkGJU - <https://www.youtube.com/watch?v=dFKRGXdkGJU>
- https://www.youtube.com/watch?v=Ai-BS_T7yjE - <https://www.youtube.com/watch?v=Ai-BS_T7yjE>
- https://www.youtube.com/watch?v=D7W-C0urVcQ - <https://www.youtube.com/watch?v=D7W-C0urVcQ>
## References ## References
- https://arxiv.org/pdf/2005.09007.pdf - <https://arxiv.org/pdf/2005.09007.pdf>
- https://github.com/NathanUA/U-2-Net - <https://github.com/NathanUA/U-2-Net>
- https://github.com/pymatting/pymatting - <https://github.com/pymatting/pymatting>
## FAQ ## FAQ
@ -349,7 +348,7 @@ This library directly depends on the [onnxruntime](https://pypi.org/project/onnx
Liked some of my work? Buy me a coffee (or more likely a beer) Liked some of my work? Buy me a coffee (or more likely a beer)
<a href="https://www.buymeacoffee.com/danielgatis" target="_blank"><img src="https://bmc-cdn.nyc3.digitaloceanspaces.com/BMC-button-images/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;"></a> <a href="https://www.buymeacoffee.com/danielgatis" target="_blank"><img src="https://bmc-cdn.nyc3.digitaloceanspaces.com/BMC-button-images/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;"></a> <!-- markdownlint-disable MD033 -->
## Star History ## Star History

View File

@ -1,6 +1,7 @@
# How to use the remove function # How to use the remove function
## Load the Image ## Load the Image
```python ```python
from PIL import Image from PIL import Image
from rembg import new_session, remove from rembg import new_session, remove
@ -10,17 +11,22 @@ output_path = 'output.png'
input = Image.open(input_path) input = Image.open(input_path)
``` ```
## Removing the background ## Removing the background
### Without additional arguments ### Without additional arguments
This defaults to the `u2net` model. This defaults to the `u2net` model.
```python ```python
output = remove(input) output = remove(input)
output.save(output_path) output.save(output_path)
``` ```
### With a specific model ### With a specific model
You can use the `new_session` function to create a session with a specific model. You can use the `new_session` function to create a session with a specific model.
```python ```python
model_name = "isnet-general-use" model_name = "isnet-general-use"
session = new_session(model_name) session = new_session(model_name)
@ -28,7 +34,9 @@ output = remove(input, session=session)
``` ```
### For processing multiple image files ### For processing multiple image files
By default, `remove` initialises a new session every call. This can be a large bottleneck if you're having to process multiple images. Initialise a session and pass it in to the `remove` function for fast multi-image support By default, `remove` initialises a new session every call. This can be a large bottleneck if you're having to process multiple images. Initialise a session and pass it in to the `remove` function for fast multi-image support
```python ```python
model_name = "unet" model_name = "unet"
rembg_session = new_session(model_name) rembg_session = new_session(model_name)
@ -36,33 +44,42 @@ for img in images:
output = remove(img, session=rembg_session) output = remove(img, session=rembg_session)
``` ```
### With alpha matting ### With alpha matting
Alpha matting is a post processing step that can be used to improve the quality of the output. Alpha matting is a post processing step that can be used to improve the quality of the output.
```python ```python
output = remove(input, alpha_matting=True, alpha_matting_foreground_threshold=270,alpha_matting_background_threshold=20, alpha_matting_erode_size=11) output = remove(input, alpha_matting=True, alpha_matting_foreground_threshold=270,alpha_matting_background_threshold=20, alpha_matting_erode_size=11)
``` ```
### Only mask ### Only mask
If you only want the mask, you can use the `only_mask` argument. If you only want the mask, you can use the `only_mask` argument.
```python ```python
output = remove(input, only_mask=True) output = remove(input, only_mask=True)
``` ```
### With post processing ### With post processing
You can use the `post_process_mask` argument to post process the mask to get better results. You can use the `post_process_mask` argument to post process the mask to get better results.
```python ```python
output = remove(input, post_process_mask=True) output = remove(input, post_process_mask=True)
``` ```
### Replacing the background color ### Replacing the background color
You can use the `bgcolor` argument to replace the background color. You can use the `bgcolor` argument to replace the background color.
```python ```python
output = remove(input, bgcolor=(255, 255, 255, 255)) output = remove(input, bgcolor=(255, 255, 255, 255))
``` ```
### Using input points ### Using input points
You can use the `input_points` and `input_labels` arguments to specify the points that should be used for the masks. This only works with the `sam` model. You can use the `input_points` and `input_labels` arguments to specify the points that should be used for the masks. This only works with the `sam` model.
```python ```python
import numpy as np import numpy as np
# Define the points and labels # Define the points and labels
@ -74,8 +91,7 @@ image = remove(image,session=session, input_points=input_points, input_labels=in
``` ```
## Save the image ## Save the image
```python ```python
output.save(output_path) output.save(output_path)
``` ```