diff --git a/README.md b/README.md index cbe6396..437a90d 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,15 @@ Rembg is a tool to remove images background.

+

+ + + + + + +

+ **If this project has helped you, please consider making a [donation](https://www.buymeacoffee.com/danielgatis).** ## Sponsor diff --git a/examples/anime-girl-1.jpg b/examples/anime-girl-1.jpg new file mode 100644 index 0000000..5f404ec Binary files /dev/null and b/examples/anime-girl-1.jpg differ diff --git a/examples/anime-girl-1.out.png b/examples/anime-girl-1.out.png new file mode 100644 index 0000000..b415933 Binary files /dev/null and b/examples/anime-girl-1.out.png differ diff --git a/examples/anime-girl-2.jpg b/examples/anime-girl-2.jpg new file mode 100644 index 0000000..21501d2 Binary files /dev/null and b/examples/anime-girl-2.jpg differ diff --git a/examples/anime-girl-2.out.png b/examples/anime-girl-2.out.png new file mode 100644 index 0000000..7cdae38 Binary files /dev/null and b/examples/anime-girl-2.out.png differ diff --git a/examples/anime-girl-3.jpg b/examples/anime-girl-3.jpg new file mode 100644 index 0000000..683d8f6 Binary files /dev/null and b/examples/anime-girl-3.jpg differ diff --git a/examples/anime-girl-3.out.png b/examples/anime-girl-3.out.png new file mode 100644 index 0000000..457c4d7 Binary files /dev/null and b/examples/anime-girl-3.out.png differ diff --git a/rembg/sessions/dis_anime.py b/rembg/sessions/dis_anime.py new file mode 100644 index 0000000..a71618f --- /dev/null +++ b/rembg/sessions/dis_anime.py @@ -0,0 +1,49 @@ +import os +from typing import List + +import numpy as np +import pooch +from PIL import Image +from PIL.Image import Image as PILImage + +from .base import BaseSession + + +class DisSession(BaseSession): + def predict(self, img: PILImage, *args, **kwargs) -> List[PILImage]: + ort_outs = self.inner_session.run( + None, + self.normalize(img, (0.485, 0.456, 0.406), (1.0, 1.0, 1.0), (1024, 1024)), + ) + + pred = ort_outs[0][:, 0, :, :] + + ma = np.max(pred) + mi = np.min(pred) + + pred = (pred - mi) / (ma - mi) + pred = np.squeeze(pred) + + mask = Image.fromarray((pred * 255).astype("uint8"), mode="L") + mask = mask.resize(img.size, Image.LANCZOS) + + return [mask] + + @classmethod + def download_models(cls, *args, **kwargs): + fname = f"{cls.name()}.onnx" + pooch.retrieve( + "https://github.com/danielgatis/rembg/releases/download/v0.0.0/isnet-anime.onnx", + None + if cls.checksum_disabled(*args, **kwargs) + else "md5:6f184e756bb3bd901c8849220a83e38e", + fname=fname, + path=cls.u2net_home(*args, **kwargs), + progressbar=True, + ) + + return os.path.join(cls.u2net_home(), fname) + + @classmethod + def name(cls, *args, **kwargs): + return "isnet-anime" diff --git a/rembg/sessions/dis.py b/rembg/sessions/dis_general_use.py similarity index 100% rename from rembg/sessions/dis.py rename to rembg/sessions/dis_general_use.py diff --git a/tests/fixtures/anime-girl-1.jpg b/tests/fixtures/anime-girl-1.jpg new file mode 100644 index 0000000..5f404ec Binary files /dev/null and b/tests/fixtures/anime-girl-1.jpg differ diff --git a/tests/results/anime-girl-1.isnet-anime.png b/tests/results/anime-girl-1.isnet-anime.png new file mode 100644 index 0000000..8ed53b8 Binary files /dev/null and b/tests/results/anime-girl-1.isnet-anime.png differ diff --git a/tests/results/anime-girl-1.isnet-general-use.png b/tests/results/anime-girl-1.isnet-general-use.png new file mode 100644 index 0000000..1f57302 Binary files /dev/null and b/tests/results/anime-girl-1.isnet-general-use.png differ diff --git a/tests/results/anime-girl-1.sam.png b/tests/results/anime-girl-1.sam.png new file mode 100644 index 0000000..daf576f Binary files /dev/null and b/tests/results/anime-girl-1.sam.png differ diff --git a/tests/results/anime-girl-1.silueta.png b/tests/results/anime-girl-1.silueta.png new file mode 100644 index 0000000..199c3a3 Binary files /dev/null and b/tests/results/anime-girl-1.silueta.png differ diff --git a/tests/results/anime-girl-1.u2net.png b/tests/results/anime-girl-1.u2net.png new file mode 100644 index 0000000..fc48847 Binary files /dev/null and b/tests/results/anime-girl-1.u2net.png differ diff --git a/tests/results/anime-girl-1.u2net_cloth_seg.png b/tests/results/anime-girl-1.u2net_cloth_seg.png new file mode 100644 index 0000000..2dbd1ab Binary files /dev/null and b/tests/results/anime-girl-1.u2net_cloth_seg.png differ diff --git a/tests/results/anime-girl-1.u2net_human_seg.png b/tests/results/anime-girl-1.u2net_human_seg.png new file mode 100644 index 0000000..6ca8915 Binary files /dev/null and b/tests/results/anime-girl-1.u2net_human_seg.png differ diff --git a/tests/results/anime-girl-1.u2netp.png b/tests/results/anime-girl-1.u2netp.png new file mode 100644 index 0000000..4b20f05 Binary files /dev/null and b/tests/results/anime-girl-1.u2netp.png differ diff --git a/tests/results/car-1.isnet-anime.png b/tests/results/car-1.isnet-anime.png new file mode 100644 index 0000000..cdb19da Binary files /dev/null and b/tests/results/car-1.isnet-anime.png differ diff --git a/tests/results/car-1.isnet-general-use.png b/tests/results/car-1.isnet-general-use.png index 2e4beb7..dba386d 100644 Binary files a/tests/results/car-1.isnet-general-use.png and b/tests/results/car-1.isnet-general-use.png differ diff --git a/tests/results/car-1.sam.png b/tests/results/car-1.sam.png index f36b669..2250b06 100644 Binary files a/tests/results/car-1.sam.png and b/tests/results/car-1.sam.png differ diff --git a/tests/results/car-1.silueta.png b/tests/results/car-1.silueta.png index 82f572f..286cfcf 100644 Binary files a/tests/results/car-1.silueta.png and b/tests/results/car-1.silueta.png differ diff --git a/tests/results/car-1.u2net.png b/tests/results/car-1.u2net.png index e5c3994..d8f9115 100644 Binary files a/tests/results/car-1.u2net.png and b/tests/results/car-1.u2net.png differ diff --git a/tests/results/car-1.u2net_cloth_seg.png b/tests/results/car-1.u2net_cloth_seg.png index 64ffd88..e4ae761 100644 Binary files a/tests/results/car-1.u2net_cloth_seg.png and b/tests/results/car-1.u2net_cloth_seg.png differ diff --git a/tests/results/car-1.u2net_human_seg.png b/tests/results/car-1.u2net_human_seg.png index fee65a6..597e885 100644 Binary files a/tests/results/car-1.u2net_human_seg.png and b/tests/results/car-1.u2net_human_seg.png differ diff --git a/tests/results/car-1.u2netp.png b/tests/results/car-1.u2netp.png index ba72870..8eeaa7b 100644 Binary files a/tests/results/car-1.u2netp.png and b/tests/results/car-1.u2netp.png differ diff --git a/tests/results/cloth-1.isnet-anime.png b/tests/results/cloth-1.isnet-anime.png new file mode 100644 index 0000000..7c4c65d Binary files /dev/null and b/tests/results/cloth-1.isnet-anime.png differ diff --git a/tests/results/cloth-1.isnet-general-use.png b/tests/results/cloth-1.isnet-general-use.png index 6e474f7..9f141ea 100644 Binary files a/tests/results/cloth-1.isnet-general-use.png and b/tests/results/cloth-1.isnet-general-use.png differ diff --git a/tests/results/cloth-1.sam.png b/tests/results/cloth-1.sam.png index 664a7dc..2ef9037 100644 Binary files a/tests/results/cloth-1.sam.png and b/tests/results/cloth-1.sam.png differ diff --git a/tests/results/cloth-1.silueta.png b/tests/results/cloth-1.silueta.png index 9bc356a..78af756 100644 Binary files a/tests/results/cloth-1.silueta.png and b/tests/results/cloth-1.silueta.png differ diff --git a/tests/results/cloth-1.u2net.png b/tests/results/cloth-1.u2net.png index 501bb5b..8743fcd 100644 Binary files a/tests/results/cloth-1.u2net.png and b/tests/results/cloth-1.u2net.png differ diff --git a/tests/results/cloth-1.u2net_cloth_seg.png b/tests/results/cloth-1.u2net_cloth_seg.png index bc72550..63ab692 100644 Binary files a/tests/results/cloth-1.u2net_cloth_seg.png and b/tests/results/cloth-1.u2net_cloth_seg.png differ diff --git a/tests/results/cloth-1.u2net_human_seg.png b/tests/results/cloth-1.u2net_human_seg.png index 2abde7f..62ccc79 100644 Binary files a/tests/results/cloth-1.u2net_human_seg.png and b/tests/results/cloth-1.u2net_human_seg.png differ diff --git a/tests/results/cloth-1.u2netp.png b/tests/results/cloth-1.u2netp.png index cc11944..c2fce72 100644 Binary files a/tests/results/cloth-1.u2netp.png and b/tests/results/cloth-1.u2netp.png differ diff --git a/tests/test_remove.py b/tests/test_remove.py index 6c2fc44..79758b6 100644 --- a/tests/test_remove.py +++ b/tests/test_remove.py @@ -11,6 +11,11 @@ here = Path(__file__).parent.resolve() def test_remove(): kwargs = { "sam": { + "anime-girl-1" : { + "input_points": [[400, 165]], + "input_labels": [1], + }, + "car-1" : { "input_points": [[250, 200]], "input_labels": [1], @@ -19,7 +24,7 @@ def test_remove(): "cloth-1" : { "input_points": [[370, 495]], "input_labels": [1], - } + }, } } @@ -30,9 +35,10 @@ def test_remove(): "u2net_cloth_seg", "silueta", "isnet-general-use", + "isnet-anime", "sam" ]: - for picture in ["car-1", "cloth-1"]: + for picture in ["anime-girl-1", "car-1", "cloth-1"]: image_path = Path(here / "fixtures" / f"{picture}.jpg") image = image_path.read_bytes()