# Rembg (AWS Lambda)
[![Downloads](https://pepy.tech/badge/rembg-aws-lambda)](https://pepy.tech/project/rembg-aws-lambda)
[![Downloads](https://pepy.tech/badge/rembg-aws-lambda/month)](https://pepy.tech/project/rembg-aws-lambda)
[![Downloads](https://pepy.tech/badge/rembg-aws-lambda/week)](https://pepy.tech/project/rembg-aws-lambda)
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://img.shields.io/badge/License-MIT-blue.svg)
[![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/)
> This is a *stripped-down* fork of [`danielgatis/rembg`](https://github.com/danielgatis/rembg)
> designed for [AWS Lambda](https://aws.amazon.com/lambda/) environments.
[`rembg-aws-lambda`](https://pypi.org/project/rembg-aws-lambda/) is a tool to remove images background.
<p style="display: flex;align-items: center;justify-content: center;">
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/car-1.jpg" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/car-1.out.png" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/car-2.jpg" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/car-2.out.png" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/car-3.jpg" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/car-3.out.png" width="100" />
</p>
<p style="display: flex;align-items: center;justify-content: center;">
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/animal-1.jpg" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/animal-1.out.png" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/animal-2.jpg" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/animal-2.out.png" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/animal-3.jpg" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/animal-3.out.png" width="100" />
</p>
<p style="display: flex;align-items: center;justify-content: center;">
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/girl-1.jpg" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/girl-1.out.png" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/girl-2.jpg" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/girl-2.out.png" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/girl-3.jpg" width="100" />
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/girl-3.out.png" width="100" />
</p>
**Check out my similar project, [`profile-photo`](https://github.com/rnag/profile-photo),
which can create a [headshot](https://www.nfi.edu/headshot-photo/) from an image.**
## Requirements
```
python: >3.7, <3.11
```
## Installation
CPU support:
```bash
pip install rembg-aws-lambda
```
GPU support:
First of all, you need to check if your system supports the `onnxruntime-gpu`.
Go to https://onnxruntime.ai and check the installation matrix.
<p style="display: flex;align-items: center;justify-content: center;">
<img src="https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/onnxruntime-installation-matrix.png" width="400" />
</p>
If yes, just run:
```bash
pip install rembg-aws-lambda[gpu]
```
## Usage as a library
Input and output as bytes
```python
from rembg import remove
input_path = 'input.png'
output_path = 'output.png'
with open(input_path, 'rb') as i:
with open(output_path, 'wb') as o:
input = i.read()
output = remove(input)
o.write(output)
```
Input and output as a PIL image
```python
from rembg import remove
from PIL import Image
input_path = 'input.png'
output_path = 'output.png'
input = Image.open(input_path)
output = remove(input)
output.save(output_path)
```
Input and output as a numpy array
```python
from rembg import remove
import cv2
input_path = 'input.png'
output_path = 'output.png'
input = cv2.imread(input_path)
output = remove(input)
cv2.imwrite(output_path, output)
```
How to iterate over files in a performatic way
```python
from pathlib import Path
from rembg import remove, new_session
session = new_session()
for file in Path('path/to/folder').glob('*.png'):
input_path = str(file)
output_path = str(file.parent / (file.stem + ".out.png"))
with open(input_path, 'rb') as i:
with open(output_path, 'wb') as o:
input = i.read()
output = remove(input, session=session)
o.write(output)
```
## Models
All models are downloaded and saved in the user home folder in the `.u2net` directory.
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.
- 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_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.
### How to train your own model
If You need more fine tunned models try this:
https://github.com/danielgatis/rembg/issues/193#issuecomment-1055534289
## Some video tutorials
- https://www.youtube.com/watch?v=3xqwpXjxyMQ
- https://www.youtube.com/watch?v=dFKRGXdkGJU
- https://www.youtube.com/watch?v=Ai-BS_T7yjE
- https://www.youtube.com/watch?v=dFKRGXdkGJU
- https://www.youtube.com/watch?v=D7W-C0urVcQ
## References
- https://arxiv.org/pdf/2005.09007.pdf
- https://github.com/NathanUA/U-2-Net
- https://github.com/pymatting/pymatting
## Buy me a coffee
Liked some of my work? Buy me a coffee (or more likely a beer)
<a href="https://www.buymeacoffee.com/ritviknag" 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>
## License
Copyright:
* (c) 2020-present [Daniel Gatis](https://github.com/danielgatis)
* (c) 2023-present [Ritvik Nag](https://github.com/rnag)
Licensed under [MIT License](./LICENSE.txt)
Raw data
{
"_id": null,
"home_page": "https://github.com/rnag/rembg-aws-lambda",
"name": "rembg-aws-lambda",
"maintainer": "",
"docs_url": null,
"requires_python": ">3.7, <3.11",
"maintainer_email": "",
"keywords": "remove,background,u2net",
"author": "Daniel Gatis",
"author_email": "danielgatis@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/82/07/5059e42bfed0254d92c8017f6d39f01e3e44e4ca793977e63e76501791af/rembg-aws-lambda-0.2.0.tar.gz",
"platform": null,
"description": "# Rembg (AWS Lambda)\n\n[![Downloads](https://pepy.tech/badge/rembg-aws-lambda)](https://pepy.tech/project/rembg-aws-lambda)\n[![Downloads](https://pepy.tech/badge/rembg-aws-lambda/month)](https://pepy.tech/project/rembg-aws-lambda)\n[![Downloads](https://pepy.tech/badge/rembg-aws-lambda/week)](https://pepy.tech/project/rembg-aws-lambda)\n[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://img.shields.io/badge/License-MIT-blue.svg)\n[![Hugging Face Spaces](https://img.shields.io/badge/\ud83e\udd17%20Hugging%20Face-Spaces-blue)](https://huggingface.co/spaces/KenjieDec/RemBG)\n[![Streamlit App](https://img.shields.io/badge/\ud83c\udf88%20Streamlit%20Community-Cloud-blue)](https://bgremoval.streamlit.app/)\n\n\n> This is a *stripped-down* fork of [`danielgatis/rembg`](https://github.com/danielgatis/rembg)\n> designed for [AWS Lambda](https://aws.amazon.com/lambda/) environments.\n\n[`rembg-aws-lambda`](https://pypi.org/project/rembg-aws-lambda/) is a tool to remove images background.\n\n<p style=\"display: flex;align-items: center;justify-content: center;\">\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/car-1.jpg\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/car-1.out.png\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/car-2.jpg\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/car-2.out.png\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/car-3.jpg\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/car-3.out.png\" width=\"100\" />\n</p>\n\n<p style=\"display: flex;align-items: center;justify-content: center;\">\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/animal-1.jpg\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/animal-1.out.png\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/animal-2.jpg\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/animal-2.out.png\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/animal-3.jpg\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/animal-3.out.png\" width=\"100\" />\n</p>\n\n<p style=\"display: flex;align-items: center;justify-content: center;\">\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/girl-1.jpg\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/girl-1.out.png\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/girl-2.jpg\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/girl-2.out.png\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/girl-3.jpg\" width=\"100\" />\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/examples/girl-3.out.png\" width=\"100\" />\n</p>\n\n**Check out my similar project, [`profile-photo`](https://github.com/rnag/profile-photo),\nwhich can create a [headshot](https://www.nfi.edu/headshot-photo/) from an image.**\n\n## Requirements\n\n```\npython: >3.7, <3.11\n```\n\n## Installation\n\nCPU support:\n\n```bash\npip install rembg-aws-lambda\n```\n\nGPU support:\n\nFirst of all, you need to check if your system supports the `onnxruntime-gpu`.\n\nGo to https://onnxruntime.ai and check the installation matrix.\n\n<p style=\"display: flex;align-items: center;justify-content: center;\">\n <img src=\"https://raw.githubusercontent.com/rnag/rembg-aws-lambda/master/onnxruntime-installation-matrix.png\" width=\"400\" />\n</p>\n\nIf yes, just run:\n\n```bash\npip install rembg-aws-lambda[gpu]\n```\n\n## Usage as a library\n\nInput and output as bytes\n\n```python\nfrom rembg import remove\n\ninput_path = 'input.png'\noutput_path = 'output.png'\n\nwith open(input_path, 'rb') as i:\n with open(output_path, 'wb') as o:\n input = i.read()\n output = remove(input)\n o.write(output)\n```\n\nInput and output as a PIL image\n\n```python\nfrom rembg import remove\nfrom PIL import Image\n\ninput_path = 'input.png'\noutput_path = 'output.png'\n\ninput = Image.open(input_path)\noutput = remove(input)\noutput.save(output_path)\n```\n\nInput and output as a numpy array\n\n```python\nfrom rembg import remove\nimport cv2\n\ninput_path = 'input.png'\noutput_path = 'output.png'\n\ninput = cv2.imread(input_path)\noutput = remove(input)\ncv2.imwrite(output_path, output)\n```\n\nHow to iterate over files in a performatic way\n\n```python\nfrom pathlib import Path\nfrom rembg import remove, new_session\n\nsession = new_session()\n\nfor file in Path('path/to/folder').glob('*.png'):\n input_path = str(file)\n output_path = str(file.parent / (file.stem + \".out.png\"))\n\n with open(input_path, 'rb') as i:\n with open(output_path, 'wb') as o:\n input = i.read()\n output = remove(input, session=session)\n o.write(output)\n```\n\n## Models\n\nAll models are downloaded and saved in the user home folder in the `.u2net` directory.\n\nThe available models are:\n\n- 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.\n- 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.\n- 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.\n- 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.\n- 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.\n\n### How to train your own model\n\nIf You need more fine tunned models try this:\nhttps://github.com/danielgatis/rembg/issues/193#issuecomment-1055534289\n\n\n## Some video tutorials\n\n- https://www.youtube.com/watch?v=3xqwpXjxyMQ\n- https://www.youtube.com/watch?v=dFKRGXdkGJU\n- https://www.youtube.com/watch?v=Ai-BS_T7yjE\n- https://www.youtube.com/watch?v=dFKRGXdkGJU\n- https://www.youtube.com/watch?v=D7W-C0urVcQ\n\n## References\n\n- https://arxiv.org/pdf/2005.09007.pdf\n- https://github.com/NathanUA/U-2-Net\n- https://github.com/pymatting/pymatting\n\n## Buy me a coffee\n\nLiked some of my work? Buy me a coffee (or more likely a beer)\n\n<a href=\"https://www.buymeacoffee.com/ritviknag\" 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>\n\n## License\n\nCopyright:\n * (c) 2020-present [Daniel Gatis](https://github.com/danielgatis)\n * (c) 2023-present [Ritvik Nag](https://github.com/rnag)\n\nLicensed under [MIT License](./LICENSE.txt)\n",
"bugtrack_url": null,
"license": "",
"summary": "Remove image background",
"version": "0.2.0",
"split_keywords": [
"remove",
"background",
"u2net"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "874e7436ff7aa81b7951a23311a3855b818db7367b1fc55ce911eada759e2d1b",
"md5": "44908ac5cd26497cea835b42099449f9",
"sha256": "451c1103a74e5a9ab2b0b9d7ed30d32cb058b2c047a5683f724e97e149c5172d"
},
"downloads": -1,
"filename": "rembg_aws_lambda-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "44908ac5cd26497cea835b42099449f9",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">3.7, <3.11",
"size": 164795483,
"upload_time": "2023-04-02T23:09:13",
"upload_time_iso_8601": "2023-04-02T23:09:13.515976Z",
"url": "https://files.pythonhosted.org/packages/87/4e/7436ff7aa81b7951a23311a3855b818db7367b1fc55ce911eada759e2d1b/rembg_aws_lambda-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "82075059e42bfed0254d92c8017f6d39f01e3e44e4ca793977e63e76501791af",
"md5": "7b203b97934da21216cc933366a4d983",
"sha256": "c076de3a53e72b30a8210c8d232ccafd1328ed981cd7f686234ee8cfb4cdc537"
},
"downloads": -1,
"filename": "rembg-aws-lambda-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "7b203b97934da21216cc933366a4d983",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">3.7, <3.11",
"size": 164825036,
"upload_time": "2023-04-02T23:10:23",
"upload_time_iso_8601": "2023-04-02T23:10:23.332040Z",
"url": "https://files.pythonhosted.org/packages/82/07/5059e42bfed0254d92c8017f6d39f01e3e44e4ca793977e63e76501791af/rembg-aws-lambda-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-02 23:10:23",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "rnag",
"github_project": "rembg-aws-lambda",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "rembg-aws-lambda"
}