advimman / lama

🦙 LaMa Image Inpainting, Resolution-robust Large Mask Inpainting with Fourier Convolutions, WACV 2022
https://advimman.github.io/lama-project/
Apache License 2.0
7.56k stars 813 forks source link

Colab broken: LaMa-inpainting.ipynb #240

Open steinhaug opened 1 year ago

steinhaug commented 1 year ago

There needs to be some fixes for this to work, it is not working as of now with Python 3.10.

Most of the installer problems are solved with theese:

    !pip install wldhx.yadisk-direct
    !pip install --upgrade pip
    !pip uninstall --yes --quiet osqp
    !pip install -U scikit-survival
    !pip uninstall kornia -y
    !pip install kornia --no-dependencies
    !pip install kornia-rs
    !pip install pytorch-lightning
    !pip install hydra-core
    !pip install webdataset

But in the end I got stuck here. Loaded the image, masked it and finnish. Created mask, display mask image and image drawed on. Last part, do the inpainting crashes.

    Run inpainting
    Traceback (most recent call last):
    File "/content/lama/bin/predict.py", line 32, in <module>
        from saicinpainting.training.trainers import load_checkpoint
    File "/content/lama/saicinpainting/training/trainers/__init__.py", line 3, in <module>
        from saicinpainting.training.trainers.default import DefaultInpaintingTrainingModule
    File "/content/lama/saicinpainting/training/trainers/default.py", line 10, in <module>
        from saicinpainting.training.modules.fake_fakes import FakeFakesGenerator
    File "/content/lama/saicinpainting/training/modules/fake_fakes.py", line 2, in <module>
        from kornia import SamplePadding
    ImportError: cannot import name 'SamplePadding' from 'kornia' (/usr/local/lib/python3.10/dist-packages/kornia/__init__.py)
    ---------------------------------------------------------------------------
    FileNotFoundError                         Traceback (most recent call last)
    [<ipython-input-12-f0997936e491>](https://localhost:8080/#) in <cell line: 60>()
        58 
        59 plt.rcParams['figure.dpi'] = 200
    ---> 60 plt.imshow(plt.imread(f"/content/output/{fname.split('.')[1].split('/')[2]}_mask.png"))
        61 _=plt.axis('off')
        62 _=plt.title('inpainting result')

    2 frames
    [/usr/local/lib/python3.10/dist-packages/PIL/ImageFile.py](https://localhost:8080/#) in __init__(self, fp, filename)
        107         if isPath(fp):
        108             # filename
    --> 109             self.fp = open(fp, "rb")
        110             self.filename = fp
        111             self._exclusive_fp = True

    FileNotFoundError: [Errno 2] No such file or directory: '/content/output/yoloselfie_mask.png'
Xinshuai-Lyu commented 1 year ago

Solved by: (1) edit /content/lama/saicinpainting/training/modules/fake_fakes.py, change from kornia import SamplePadding to from kornia.constants import SamplePadding (2) if your colab does not have gpu (torch.cuda.is_available() return false), edit /content/lama/bin/predict.py, change device = torch.device(predict_config.device) (line 43) to device = torch.device("cpu")

MacM2Pro commented 11 months ago

I have the same problem but this solution doesn't help

Solved by: (1) edit /content/lama/saicinpainting/training/modules/fake_fakes.py, change from kornia import SamplePadding to from kornia.constants import SamplePadding (2) if your colab does not have gpu (torch.cuda.is_available() return false), edit /content/lama/bin/predict.py, change device = torch.device(predict_config.device) (line 43) to device = torch.device("cpu")

MacM2Pro commented 11 months ago

Traceback (most recent call last): File "/content/lama/bin/predict.py", line 14, in from saicinpainting.evaluation.utils import move_to_device File "/content/lama/saicinpainting/evaluation/init.py", line 6, in from saicinpainting.evaluation.losses.base_loss import SSIMScore, LPIPSScore, FIDScore File "/content/lama/saicinpainting/evaluation/losses/base_loss.py", line 15, in from .lpips import PerceptualLoss File "/content/lama/saicinpainting/evaluation/losses/lpips.py", line 15, in from saicinpainting.utils import get_shape File "/content/lama/saicinpainting/utils.py", line 12, in from pytorch_lightning import seed_everything File "/usr/local/lib/python3.10/dist-packages/pytorch_lightning/init.py", line 26, in from pytorch_lightning.callbacks import Callback # noqa: E402 File "/usr/local/lib/python3.10/dist-packages/pytorch_lightning/callbacks/init.py", line 14, in from pytorch_lightning.callbacks.batch_size_finder import BatchSizeFinder File "/usr/local/lib/python3.10/dist-packages/pytorch_lightning/callbacks/batch_size_finder.py", line 24, in from pytorch_lightning.callbacks.callback import Callback File "/usr/local/lib/python3.10/dist-packages/pytorch_lightning/callbacks/callback.py", line 22, in from pytorch_lightning.utilities.types import STEP_OUTPUT File "/usr/local/lib/python3.10/dist-packages/pytorch_lightning/utilities/types.py", line 25, in from torchmetrics import Metric File "/usr/local/lib/python3.10/dist-packages/torchmetrics/init.py", line 14, in from torchmetrics import functional # noqa: E402 File "/usr/local/lib/python3.10/dist-packages/torchmetrics/functional/init.py", line 14, in from torchmetrics.functional.audio._deprecated import _permutation_invariant_training as permutation_invariant_training File "/usr/local/lib/python3.10/dist-packages/torchmetrics/functional/audio/init.py", line 14, in from torchmetrics.functional.audio.pit import permutation_invariant_training, pit_permutate File "/usr/local/lib/python3.10/dist-packages/torchmetrics/functional/audio/pit.py", line 23, in from torchmetrics.utilities import rank_zero_warn File "/usr/local/lib/python3.10/dist-packages/torchmetrics/utilities/init.py", line 14, in from torchmetrics.utilities.checks import check_forward_full_state_property File "/usr/local/lib/python3.10/dist-packages/torchmetrics/utilities/checks.py", line 25, in from torchmetrics.metric import Metric File "/usr/local/lib/python3.10/dist-packages/torchmetrics/metric.py", line 30, in from torchmetrics.utilities.data import ( File "/usr/local/lib/python3.10/dist-packages/torchmetrics/utilities/data.py", line 22, in from torchmetrics.utilities.imports import _TORCH_GREATER_EQUAL_1_12, _XLA_AVAILABLE File "/usr/local/lib/python3.10/dist-packages/torchmetrics/utilities/imports.py", line 48, in _TORCHAUDIO_GREATER_EQUAL_0_10: Optional[bool] = compare_version("torchaudio", operator.ge, "0.10.0") File "/usr/local/lib/python3.10/dist-packages/lightning_utilities/core/imports.py", line 73, in compare_version pkg = importlib.import_module(package) File "/usr/lib/python3.10/importlib/init.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "/usr/local/lib/python3.10/dist-packages/torchaudio/init.py", line 1, in from torchaudio import ( # noqa: F401 File "/usr/local/lib/python3.10/dist-packages/torchaudio/_extension/init.py", line 43, in _load_lib("libtorchaudio") File "/usr/local/lib/python3.10/dist-packages/torchaudio/_extension/utils.py", line 61, in _load_lib torch.ops.load_library(path) File "/usr/local/lib/python3.10/dist-packages/torch/_ops.py", line 643, in load_library ctypes.CDLL(path) File "/usr/lib/python3.10/ctypes/init.py", line 374, in init self._handle = _dlopen(self._name, mode) OSError: libtorch_cuda.so: cannot open shared object file: No such file or directory

FileNotFoundError Traceback (most recent call last) in <cell line: 60>() 58 59 plt.rcParams['figure.dpi'] = 200 ---> 60 plt.imshow(plt.imread(f"/content/output/{fname.split('.')[1].split('/')[2]}mask.png")) 61 =plt.axis('off') 62 _=plt.title('inpainting result')

2 frames /usr/local/lib/python3.10/dist-packages/PIL/ImageFile.py in init(self, fp, filename) 103 if is_path(fp): 104 # filename --> 105 self.fp = open(fp, "rb") 106 self.filename = fp 107 self._exclusive_fp = True

FileNotFoundError: [Errno 2] No such file or directory: '/content/output/img_mask.png'

Xinshuai-Lyu commented 11 months ago

Copy_of_LaMa_inpainting.ipynb.zip

  1. Download my colab
  2. edit /content/lama/saicinpainting/training/modules/fake_fakes.py, you need to change from kornia import SamplePadding to from kornia.constants import SamplePadding
  3. edit /content/lama/bin/predict.py, you need to change device = torch.device(predict_config.device) (line 43) to device = torch.device("cpu") WX20230802-004026
MacM2Pro commented 11 months ago

Thank you very much! Finally, it works!

MacM2Pro commented 10 months ago

The solution above worked for me for some time but now I'm experiencing a new error:

Run inpainting Traceback (most recent call last): File "/content/lama/bin/predict.py", line 15, in from saicinpainting.evaluation.refinement import refine_predict File "/content/lama/saicinpainting/evaluation/refinement.py", line 11, in from saicinpainting.evaluation.data import pad_tensor_to_modulo File "/content/lama/saicinpainting/evaluation/data.py", line 43, in def scale_image(img, factor, interpolation=cv2.INTER_AREA): AttributeError: module 'cv2' has no attribute 'INTER_AREA'

FileNotFoundError Traceback (most recent call last) in <cell line: 60>() 58 59 plt.rcParams['figure.dpi'] = 200 ---> 60 plt.imshow(plt.imread(f"/content/output/{fname.split('.')[1].split('/')[2]}mask.png")) 61 =plt.axis('off') 62 _=plt.title('inpainting result')

2 frames /usr/local/lib/python3.10/dist-packages/PIL/ImageFile.py in init(self, fp, filename) 103 if is_path(fp): 104 # filename --> 105 self.fp = open(fp, "rb") 106 self.filename = fp 107 self._exclusive_fp = True

FileNotFoundError: [Errno 2] No such file or directory: '/content/output/tourist_mask.png'

Xinshuai-Lyu commented 8 months ago

@MacM2Pro

Still work for me.

But !curl -L $(yadisk-direct https://disk.yandex.ru/d/ouP6l8VJ0HpMZg) -o big-lama.zip

The above link is broken, find this and replace it with:

!curl -LJO https://huggingface.co/smartywu/big-lama/resolve/main/big-lama.zip

Abbsalehi commented 6 months ago

@MacM2Pro

Still work for me.

But !curl -L $(yadisk-direct https://disk.yandex.ru/d/ouP6l8VJ0HpMZg) -o big-lama.zip

The above link is broken, find this and replace it with:

!curl -LJO https://huggingface.co/smartywu/big-lama/resolve/main/big-lama.zip

It worked for me.

TREEANA commented 2 months ago

Hi, I replaced the !curl -LJO https://huggingface.co/smartywu/big-lama/resolve/main/big-lama.zip and edited /content/lama/saicinpainting/training/modules/fake_fakes.py, you need to change from kornia import SamplePadding to from kornia.constants import SamplePadding.

However, it still not work for me. can you check is there any update?