From 135ab044c5af714998c91630dc7db6cd53492faf Mon Sep 17 00:00:00 2001 From: Jacob Segal Date: Thu, 27 Apr 2023 20:46:50 -0700 Subject: [PATCH] Remove clipseg submodule, install via pip instead --- .gitmodules | 3 --- MaskNodes.py | 24 +++++++++++++++++++++++- clipseg | 1 - 3 files changed, 23 insertions(+), 5 deletions(-) delete mode 160000 clipseg diff --git a/.gitmodules b/.gitmodules index b232708..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "clipseg"] - path = clipseg - url = https://github.com/timojl/clipseg.git diff --git a/MaskNodes.py b/MaskNodes.py index 331c5fc..242e601 100644 --- a/MaskNodes.py +++ b/MaskNodes.py @@ -7,12 +7,31 @@ from torchvision import transforms from torchvision.ops import masks_to_boxes import torchvision.transforms.functional as TF import torch.nn.functional as torchfn -from .clipseg.models.clipseg import CLIPDensePredT +import subprocess +import sys DELIMITER = '|' cached_clipseg_model = None VERY_BIG_SIZE = 1024 * 1024 +package_list = None +def update_package_list(): + import sys + import subprocess + + global package_list + package_list = [r.decode().split('==')[0] for r in subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']).split()] + +def ensure_package(package_name, import_path): + global package_list + if package_list == None: + update_package_list() + + if package_name not in package_list: + print("(First Run) Installing missing package %s" % package_name) + subprocess.check_call([sys.executable, '-m', 'pip', '-q', 'install', import_path]) + update_package_list() + def tensor2mask(t: torch.Tensor) -> torch.Tensor: size = t.size() if (len(size) < 4): @@ -112,6 +131,7 @@ class ClipSegNode: CATEGORY = "Masquerade Nodes" def get_mask(self, image, prompt, negative_prompt, precision, normalize): + model = self.load_model() image = tensor2rgb(image) B, H, W, _ = image.shape @@ -158,6 +178,8 @@ class ClipSegNode: def load_model(self): global cached_clipseg_model if cached_clipseg_model == None: + ensure_package("clipseg", "clipseg@git+https://github.com/timojl/clipseg.git@bbc86cfbb7e6a47fb6dae47ba01d3e1c2d6158b0") + from clipseg.clipseg import CLIPDensePredT model = CLIPDensePredT(version='ViT-B/16', reduce_dim=64, complex_trans_conv=True) model.eval() diff --git a/clipseg b/clipseg deleted file mode 160000 index bbc86cf..0000000 --- a/clipseg +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bbc86cfbb7e6a47fb6dae47ba01d3e1c2d6158b0