danielgatis / rembg

Rembg is a tool to remove images background
MIT License
16.96k stars 1.87k forks source link

exec from a php file #28

Closed latrille-bot closed 3 years ago

latrille-bot commented 4 years ago

Hello,

Thank you so much for this great tool. I have a php website using CodeIgniter.

When I execute the code below from a php file at the root of my website, it"s working fine. When I execute it in the codeIgniter 'application' folder (what I need), it doesn't work. Any file is returned.

I have tried with python as well

$rembgpy = '/my_path/app.py'; $in = '/my_path/lanterne.jpg'; $out = '/mypath/new_lanterne.png';

exec("rembg -o '$out' '$in'");

exec("cat '$in' | python3.6 '$rembgpy' > '$out' ");

Do you have any idea ? (In codeIgniter, python is working for other python program)

Thank you very much Aude

danielgatis commented 4 years ago

sorry, I have no idea how to CodeIgniter works and I don't know anything about PHP.

AltayAkkus commented 4 years ago

I will soon release a Docker Container which you could deploy and call it via its API.

latrille-bot commented 4 years ago

Thank you for your answer. I have found the real problem : is that rembg can only be executed as a root user so that when calling from my website, it can't work. Do you know how I can give rights rembg to be executed not only as root user ? (in Linux/Centos7)

Thank you a lot

latrille-bot commented 4 years ago

Sorry, but I have made several manipulations. And finally done as a root user

pip uninstall rembg pip install rembg

installation is successfull but when calling rembg, it doesn't work anymore, i have this error

 curl https://www.mydomain.fr/vase.jpg | rembg > output.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0Traceback (most recent call last):
  File "/usr/local/bin/rembg", line 5, in <module>
    from rembg.cmd.cli import main
  File "/usr/local/lib/python3.6/site-packages/rembg/cmd/cli.py", line 7, in <module>
    from ..bg import remove
  File "/usr/local/lib/python3.6/site-packages/rembg/bg.py", line 67, in <module>
    @functools.lru_cache
  File "/usr/lib64/python3.6/functools.py", line 477, in lru_cache
    raise TypeError('Expected maxsize to be an integer or None')
TypeError: Expected maxsize to be an integer or None
 14  556k   14 81659    0     0  12709      0  0:00:44  0:00:06  0:00:38 12709
curl: (23) Failed writing body (261 != 16384)

This was working at first installation, I don't know what to do now... thanks !

danielgatis commented 4 years ago

you don't need a root user to install rembg.

just do:

pip install --user rembg

and run it as a normal user

latrille-bot commented 4 years ago

Thank you. I did that but still the same error. Problem in the cache ? ( lru_cache) because I have installed twice ?

Thanks

latrille-bot commented 4 years ago

Installation seems ok

 pip install rembg
Processing /root/.cache/pip/wheels/cd/dd/ef/0eea656948c0f72013eac870556c4ebf795052103acb39c44e/rembg-1.0.14-py3-none-any.whl
Requirement already satisfied: scikit-image==0.17.2 in /usr/local/lib64/python3.6/site-packages (from rembg) (0.17.2)
Requirement already satisfied: tqdm==4.48.2 in /usr/local/lib/python3.6/site-packages (from rembg) (4.48.2)
Requirement already satisfied: numpy==1.19.1 in /usr/local/lib64/python3.6/site-packages (from rembg) (1.19.1)
Requirement already satisfied: waitress==1.4.4 in /usr/local/lib/python3.6/site-packages (from rembg) (1.4.4)
Requirement already satisfied: pillow==7.2.0 in /usr/local/lib64/python3.6/site-packages (from rembg) (7.2.0)
Requirement already satisfied: torch==1.6.0 in /usr/local/lib64/python3.6/site-packages (from rembg) (1.6.0)
Requirement already satisfied: flask==1.1.2 in /usr/local/lib64/python3.6/site-packages (from rembg) (1.1.2)
Requirement already satisfied: pymatting==1.0.6 in /usr/local/lib/python3.6/site-packages (from rembg) (1.0.6)
Requirement already satisfied: scipy==1.5.2 in /usr/local/lib64/python3.6/site-packages (from rembg) (1.5.2)
Requirement already satisfied: torchvision==0.7.0 in /usr/local/lib64/python3.6/site-packages (from rembg) (0.7.0)
Requirement already satisfied: requests==2.24.0 in /usr/local/lib/python3.6/site-packages (from rembg) (2.24.0)
Requirement already satisfied: matplotlib!=3.0.0,>=2.0.0 in /usr/local/lib64/python3.6/site-packages (from scikit-image==0.17.2->rembg) (3.3.2)
Requirement already satisfied: imageio>=2.3.0 in /usr/local/lib/python3.6/site-packages (from scikit-image==0.17.2->rembg) (2.9.0)
Requirement already satisfied: networkx>=2.0 in /usr/local/lib/python3.6/site-packages (from scikit-image==0.17.2->rembg) (2.5)
Requirement already satisfied: PyWavelets>=1.1.1 in /usr/local/lib64/python3.6/site-packages (from scikit-image==0.17.2->rembg) (1.1.1)
Requirement already satisfied: tifffile>=2019.7.26 in /usr/local/lib/python3.6/site-packages (from scikit-image==0.17.2->rembg) (2020.9.3)
Requirement already satisfied: future in /usr/local/lib/python3.6/site-packages (from torch==1.6.0->rembg) (0.18.2)
Requirement already satisfied: Werkzeug>=0.15 in /usr/local/lib/python3.6/site-packages (from flask==1.1.2->rembg) (1.0.1)
Requirement already satisfied: click>=5.1 in /usr/local/lib/python3.6/site-packages (from flask==1.1.2->rembg) (7.1.2)
Requirement already satisfied: itsdangerous>=0.24 in /usr/local/lib/python3.6/site-packages (from flask==1.1.2->rembg) (1.1.0)
Requirement already satisfied: Jinja2>=2.10.1 in /usr/local/lib/python3.6/site-packages (from flask==1.1.2->rembg) (2.11.2)
Requirement already satisfied: numba>=0.47.0 in /usr/local/lib64/python3.6/site-packages (from pymatting==1.0.6->rembg) (0.51.2)
Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.6/site-packages (from requests==2.24.0->rembg) (3.0.4)
Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.6/site-packages (from requests==2.24.0->rembg) (2.10)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/site-packages (from requests==2.24.0->rembg) (2020.6.20)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.6/site-packages (from requests==2.24.0->rembg) (1.25.10)
Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib64/python3.6/site-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image==0.17.2->rembg) (1.3.1)
Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.6/site-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image==0.17.2->rembg) (2.8.1)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /usr/local/lib/python3.6/site-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image==0.17.2->rembg) (2.4.7)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/site-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image==0.17.2->rembg) (0.10.0)
Requirement already satisfied: decorator>=4.3.0 in /usr/local/lib/python3.6/site-packages (from networkx>=2.0->scikit-image==0.17.2->rembg) (4.4.2)
Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib64/python3.6/site-packages (from Jinja2>=2.10.1->flask==1.1.2->rembg) (1.1.1)
Requirement already satisfied: llvmlite<0.35,>=0.34.0.dev0 in /usr/local/lib64/python3.6/site-packages (from numba>=0.47.0->pymatting==1.0.6->rembg) (0.34.0)
Requirement already satisfied: setuptools in /usr/lib/python3.6/site-packages (from numba>=0.47.0->pymatting==1.0.6->rembg) (39.2.0)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.6/site-packages (from python-dateutil>=2.1->matplotlib!=3.0.0,>=2.0.0->scikit-image==0.17.2->rembg) (1.15.0)
Installing collected packages: rembg
Successfully installed rembg-1.0.14
latrille-bot commented 4 years ago

It seems also you change something 2 days ago. line @functools.lru_cache Maybe a problem with this new version ?

Thank you again

danielgatis commented 4 years ago

try to remove the ~/.u2net folder and run again.

latrille-bot commented 4 years ago

It's done and here is the result after running again :

[root@ns344379 rembg]# curl -s http://www.mydomain.fr/uploads/temp_flux/vase.jpg | rembg > output.png
Traceback (most recent call last):
  File "/usr/local/bin/rembg", line 5, in <module>
    from rembg.cmd.cli import main
  File "/usr/local/lib/python3.6/site-packages/rembg/cmd/cli.py", line 7, in <module>
    from ..bg import remove
  File "/usr/local/lib/python3.6/site-packages/rembg/bg.py", line 11, in <module>
    from .u2net import detect
ModuleNotFoundError: No module named 'rembg.u2net'
danielgatis commented 4 years ago

try to remove the ~/.u2net folder and run again.

this folder is in your HOME folder.

Update your python to >= 3.8

Follow this steps:

pip uninstall rembg
pip uninstall  --user rembg

rm -fr ~/.u2net

pip install --user rembg
latrille-bot commented 4 years ago

ok I have done these steps and reinstall rembg with pip3.8 like that

[root@ns344379 bin]# pip3.8 install rembg
Collecting rembg
  Downloading rembg-1.0.15.tar.gz (13 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Collecting torch==1.7.0
  Downloading torch-1.7.0-cp38-cp38-manylinux1_x86_64.whl (776.8 MB)
     |████████████████████████████████| 776.8 MB 57 bytes/s
Collecting requests==2.24.0
  Using cached requests-2.24.0-py2.py3-none-any.whl (61 kB)
Collecting flask==1.1.2
  Using cached Flask-1.1.2-py2.py3-none-any.whl (94 kB)
Collecting pillow==8.0.1
  Downloading Pillow-8.0.1-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 56.3 MB/s
Collecting numpy==1.19.4
  Downloading numpy-1.19.4-cp38-cp38-manylinux2010_x86_64.whl (14.5 MB)
     |████████████████████████████████| 14.5 MB 29.5 MB/s
Collecting torchvision==0.8.1
  Downloading torchvision-0.8.1-cp38-cp38-manylinux1_x86_64.whl (12.8 MB)
     |████████████████████████████████| 12.8 MB 46.2 MB/s
Collecting scikit-image==0.17.2
  Downloading scikit_image-0.17.2-cp38-cp38-manylinux1_x86_64.whl (12.4 MB)
     |████████████████████████████████| 12.4 MB 58.3 MB/s
Collecting waitress==1.4.4
  Using cached waitress-1.4.4-py2.py3-none-any.whl (58 kB)
Collecting scipy==1.5.4
  Downloading scipy-1.5.4-cp38-cp38-manylinux1_x86_64.whl (25.8 MB)
     |████████████████████████████████| 25.8 MB 56.7 MB/s
Collecting tqdm==4.51.0
  Downloading tqdm-4.51.0-py2.py3-none-any.whl (70 kB)
     |████████████████████████████████| 70 kB 2.6 MB/s
Collecting pymatting==1.1.1
  Downloading PyMatting-1.1.1-py3-none-any.whl (48 kB)
     |████████████████████████████████| 48 kB 1.1 MB/s
Collecting typing-extensions
  Downloading typing_extensions-3.7.4.3-py3-none-any.whl (22 kB)
Collecting future
  Using cached future-0.18.2.tar.gz (829 kB)
Collecting dataclasses
  Downloading dataclasses-0.6-py3-none-any.whl (14 kB)
Collecting idna<3,>=2.5
  Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
Collecting certifi>=2017.4.17
  Downloading certifi-2020.11.8-py2.py3-none-any.whl (155 kB)
     |████████████████████████████████| 155 kB 67.6 MB/s
Collecting chardet<4,>=3.0.2
  Using cached chardet-3.0.4-py2.py3-none-any.whl (133 kB)
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
  Downloading urllib3-1.25.11-py2.py3-none-any.whl (127 kB)
     |████████████████████████████████| 127 kB 68.9 MB/s
Collecting Werkzeug>=0.15
  Using cached Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB)
Collecting itsdangerous>=0.24
  Using cached itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)
Collecting Jinja2>=2.10.1
  Using cached Jinja2-2.11.2-py2.py3-none-any.whl (125 kB)
Collecting click>=5.1
  Using cached click-7.1.2-py2.py3-none-any.whl (82 kB)
Collecting networkx>=2.0
  Using cached networkx-2.5-py3-none-any.whl (1.6 MB)
Collecting PyWavelets>=1.1.1
  Downloading PyWavelets-1.1.1-cp38-cp38-manylinux1_x86_64.whl (4.4 MB)
     |████████████████████████████████| 4.4 MB 65.1 MB/s
Collecting imageio>=2.3.0
  Using cached imageio-2.9.0-py3-none-any.whl (3.3 MB)
Collecting matplotlib!=3.0.0,>=2.0.0
  Downloading matplotlib-3.3.2-cp38-cp38-manylinux1_x86_64.whl (11.6 MB)
     |████████████████████████████████| 11.6 MB 56.3 MB/s
Collecting tifffile>=2019.7.26
  Downloading tifffile-2020.10.1-py3-none-any.whl (152 kB)
     |████████████████████████████████| 152 kB 76.5 MB/s
Collecting numba!=0.49.0
  Downloading numba-0.51.2-cp38-cp38-manylinux2014_x86_64.whl (3.1 MB)
     |████████████████████████████████| 3.1 MB 71.9 MB/s
Collecting MarkupSafe>=0.23
  Downloading MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl (32 kB)
Collecting decorator>=4.3.0
  Using cached decorator-4.4.2-py2.py3-none-any.whl (9.2 kB)
Collecting pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3
  Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Collecting kiwisolver>=1.0.1
  Downloading kiwisolver-1.3.1-cp38-cp38-manylinux1_x86_64.whl (1.2 MB)
     |████████████████████████████████| 1.2 MB 70.5 MB/s
Collecting python-dateutil>=2.1
  Using cached python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
Collecting cycler>=0.10
  Using cached cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
Collecting llvmlite<0.35,>=0.34.0.dev0
  Downloading llvmlite-0.34.0-cp38-cp38-manylinux2010_x86_64.whl (24.6 MB)
     |████████████████████████████████| 24.6 MB 27.1 MB/s
Requirement already satisfied: setuptools in /usr/local/lib/python3.8/site-packa            ges (from numba!=0.49.0->pymatting==1.1.1->rembg) (49.2.1)
Collecting six>=1.5
  Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Using legacy 'setup.py install' for future, since package 'wheel' is not install            ed.
Building wheels for collected packages: rembg
  Building wheel for rembg (PEP 517) ... done
  Created wheel for rembg: filename=rembg-1.0.15-py3-none-any.whl size=12392 sha            256=dabe6cba0140e37d6dbb6aa3610d4f9ea8ecdd4d75f52dbd01efff35a8c5d84d
  Stored in directory: /root/.cache/pip/wheels/73/a6/25/0f191b765e98af5e60c6de9d            b0998692048faf0b8fbaed0e55
Successfully built rembg
Installing collected packages: typing-extensions, future, numpy, dataclasses, to            rch, idna, certifi, chardet, urllib3, requests, Werkzeug, itsdangerous, MarkupSa            fe, Jinja2, click, flask, pillow, torchvision, decorator, networkx, PyWavelets,             scipy, imageio, pyparsing, kiwisolver, six, python-dateutil, cycler, matplotlib,             tifffile, scikit-image, waitress, tqdm, llvmlite, numba, pymatting, rembg
    Running setup.py install for future ... done
Successfully installed Jinja2-2.11.2 MarkupSafe-1.1.1 PyWavelets-1.1.1 Werkzeug-            1.0.1 certifi-2020.11.8 chardet-3.0.4 click-7.1.2 cycler-0.10.0 dataclasses-0.6             decorator-4.4.2 flask-1.1.2 future-0.18.2 idna-2.10 imageio-2.9.0 itsdangerous-1            .1.0 kiwisolver-1.3.1 llvmlite-0.34.0 matplotlib-3.3.2 networkx-2.5 numba-0.51.2             numpy-1.19.4 pillow-8.0.1 pymatting-1.1.1 pyparsing-2.4.7 python-dateutil-2.8.1             rembg-1.0.15 requests-2.24.0 scikit-image-0.17.2 scipy-1.5.4 six-1.15.0 tifffil            e-2020.10.1 torch-1.7.0 torchvision-0.8.1 tqdm-4.51.0 typing-extensions-3.7.4.3             urllib3-1.25.11 waitress-1.4.4
WARNING: You are using pip version 20.2.1; however, version 20.2.4 is available.
You should consider upgrading via the '/usr/local/bin/python3.8 -m pip install -            -upgrade pip' command.

and now run again rembg

[root@ns344379 bin]# curl -s http://www.mydomain.fr/uploads/temp_flux/vase.jpg | rembg > output.png
Traceback (most recent call last):
  File "/usr/local/bin/rembg", line 5, in <module>
    from rembg.cmd.cli import main
  File "/usr/local/lib/python3.8/site-packages/rembg/cmd/cli.py", line 7, in <module>
    from ..bg import remove
  File "/usr/local/lib/python3.8/site-packages/rembg/bg.py", line 11, in <module>
    from .u2net import detect
  File "/usr/local/lib/python3.8/site-packages/rembg/u2net/detect.py", line 11, in <module>
    import torchvision
  File "/usr/local/lib/python3.8/site-packages/torchvision/__init__.py", line 7, in <module>
    from torchvision import datasets
  File "/usr/local/lib/python3.8/site-packages/torchvision/datasets/__init__.py", line 6, in <module>
    from .mnist import MNIST, EMNIST, FashionMNIST, KMNIST, QMNIST
  File "/usr/local/lib/python3.8/site-packages/torchvision/datasets/mnist.py", line 11, in <module>
    import lzma
  File "/usr/local/lib/python3.8/lzma.py", line 27, in <module>
    from _lzma import *
ModuleNotFoundError: No module named '_lzma'

Thank you

danielgatis commented 4 years ago

https://github.com/pandas-dev/pandas/issues/27532#issuecomment-514044754

latrille-bot commented 4 years ago

ok now, here is the result

[root@ns344379 Python-3.8.6]# curl -s http://www.mydomain.fr/uploads/temp_flux/vase.jpg | rembg > output.png
/usr/local/lib/python3.8/site-packages/torch/cuda/__init__.py:52: UserWarning: CUDA initialization: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx (Triggered internally at  /pytorch/c10/cuda/CUDAFunctions.cpp:100.)
  return torch._C._cuda_getDeviceCount() > 0
Traceback (most recent call last):
  File "/usr/local/bin/rembg", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/site-packages/rembg/cmd/cli.py", line 113, in main
    remove(
  File "/usr/local/lib/python3.8/site-packages/rembg/bg.py", line 84, in remove
    img = Image.open(io.BytesIO(data)).convert("RGB")
  File "/usr/local/lib/python3.8/site-packages/PIL/Image.py", line 2943, in open
    raise UnidentifiedImageError(
PIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7fd6771e3360>
danielgatis commented 4 years ago

there is no image here: http://www.mydomain.fr/uploads/temp_flux/vase.jpg

latrille-bot commented 4 years ago

I replace it for some privacy reasons but it exists ! Here it is http://www.bibelotandco.fr/uploads/temp_flux/vase.jpg


[root@ns344379 Python-3.8.6]# curl -s http://www.bibelotandco.fr/uploads/temp_flux/vase.jpg | rembg > output.png
/usr/local/lib/python3.8/site-packages/torch/cuda/__init__.py:52: UserWarning: CUDA initialization: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx (Triggered internally at  /pytorch/c10/cuda/CUDAFunctions.cpp:100.)
  return torch._C._cuda_getDeviceCount() > 0
Traceback (most recent call last):
  File "/usr/local/bin/rembg", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/site-packages/rembg/cmd/cli.py", line 113, in main
    remove(
  File "/usr/local/lib/python3.8/site-packages/rembg/bg.py", line 84, in remove
    img = Image.open(io.BytesIO(data)).convert("RGB")
  File "/usr/local/lib/python3.8/site-packages/PIL/Image.py", line 2943, in open
    raise UnidentifiedImageError(
PIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7fa9a75dff90>
latrille-bot commented 4 years ago

So when executing with curl, still have the same error.

[root@ns344379 detourage-rembg]# curl -s http://www.bibelotandco.fr/uploads/temp_flux/vase.jpg | rembg > output.png
Traceback (most recent call last):
  File "/usr/local/bin/rembg", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/site-packages/rembg/cmd/cli.py", line 113, in main
    remove(
  File "/usr/local/lib/python3.8/site-packages/rembg/bg.py", line 84, in remove
    img = Image.open(io.BytesIO(data)).convert("RGB")
  File "/usr/local/lib/python3.8/site-packages/PIL/Image.py", line 2943, in open
    raise UnidentifiedImageError(
PIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7f5a0e316e00>

When executing with app.py or exec("rembg -o '$out' '$in'"); I have the output file but I get this error message :

[W NNPACK.cpp:80] Could not initialize NNPACK! Reason: Unsupported hardware.

If you have any idea Thank you