You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
黄海 69fb649e96
First Commit
1 year ago
..
.github/workflows First Commit 1 year ago
assets First Commit 1 year ago
img First Commit 1 year ago
output First Commit 1 year ago
upload First Commit 1 year ago
web First Commit 1 year ago
.dockerignore First Commit 1 year ago
.gitignore First Commit 1 year ago
Dockerfile First Commit 1 year ago
LICENSE First Commit 1 year ago
README.md First Commit 1 year ago
app.py First Commit 1 year ago
requirements.txt First Commit 1 year ago
启动.bat First Commit 1 year ago

README.md

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

Imgae matting

Here are a few effects(omitting mask images)

image-1

image-2

How to Run

Method 1: Run from Source Code

Firstly, you need to download the project code and install the required dependencies.

# Python 3.10

git clone https://github.com/ihmily/image-matting.git
cd image-matting
pip install -r requirements.txt

Next, use the following command to run the web interface.

python app.py

Finally, visit http://127.0.0.1:8000/.

Method 2: Run with Docker

Simply run the following commands after entering the project folder.

Pull the Docker image.

docker pull ihmily/image-matting:latest

After the image is pulled, run the container.

docker run -p 8000:8000 ihmily/image-matting:latest

Alternatively, you can build the image yourself.

docker build -t image-matting:latest .
docker run -p 8000:8000 image-matting:latest

Lastly, visit http://127.0.0.1:8000 to perform online image matting. Feel free to choose the method that suits your preference.

Use API

Please run it before use API

File upload

import requests

server = "http://127.0.0.1:8000"
image_path = "image.png"
model_name = "universal"  # people,universal
files = {"image": (image_path, open(image_path, "rb"))}
data = {"model": model_name}
response = requests.post(server+'/matting', files=files, data=data)
print(response.text)
json_data = response.json()
image_url = json_data['result_image_url']
mask_url = json_data['mask_image_url']
print("image_url:", server + image_url)
print("mask_url:", server + mask_url)

Url upload

import requests

server = "http://127.0.0.1:8000"
image_url = "http://your-image-url/demo.png"
data = {"image_url": image_url, "model": "universal"}  # people,universal
response = requests.post(server+'/matting/url', json=data)
print(response.text)
json_data = response.json()
image_url = json_data['result_image_url']
mask_url = json_data['mask_image_url']
print("image_url:",server+image_url)
print("mask_url:",server+mask_url)

You can freely choose the method you want to upload from above.If you want to get the cropped cutout, you can call crop_image_by_alpha_channel function.

image-3

image-4

References

https://modelscope.cn/models/damo/cv_unet_universal-matting/summary

https://modelscope.cn/models/damo/cv_unet_image-matting/summary