Spaces:
Running
Running
Update
Browse files
app.py
CHANGED
|
@@ -8,6 +8,7 @@ import shlex
|
|
| 8 |
import subprocess
|
| 9 |
|
| 10 |
import gradio as gr
|
|
|
|
| 11 |
|
| 12 |
if os.getenv('SYSTEM') == 'spaces':
|
| 13 |
with open('patch') as f:
|
|
@@ -43,7 +44,7 @@ from app_scribble_interactive import \
|
|
| 43 |
from app_seg import create_demo as create_demo_seg
|
| 44 |
from model import Model, download_all_controlnet_weights
|
| 45 |
|
| 46 |
-
DESCRIPTION = '# [ControlNet](https://github.com/lllyasviel/ControlNet)'
|
| 47 |
|
| 48 |
SPACE_ID = os.getenv('SPACE_ID')
|
| 49 |
ALLOW_CHANGING_BASE_MODEL = SPACE_ID != 'hysts/ControlNet'
|
|
@@ -51,12 +52,16 @@ ALLOW_CHANGING_BASE_MODEL = SPACE_ID != 'hysts/ControlNet'
|
|
| 51 |
if SPACE_ID is not None:
|
| 52 |
DESCRIPTION += f'\n<p>For faster inference without waiting in queue, you may duplicate the space and upgrade to GPU in settings. <a href="https://huggingface.co/spaces/{SPACE_ID}?duplicate=true"><img style="display: inline; margin-top: 0em; margin-bottom: 0em" src="https://bit.ly/3gLdBN6" alt="Duplicate Space" /></a></p>'
|
| 53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
MAX_IMAGES = int(os.getenv('MAX_IMAGES', '3'))
|
| 55 |
DEFAULT_NUM_IMAGES = min(MAX_IMAGES, int(os.getenv('DEFAULT_NUM_IMAGES', '1')))
|
| 56 |
|
| 57 |
-
if os.getenv('SYSTEM') == 'spaces':
|
| 58 |
-
download_all_controlnet_weights()
|
| 59 |
-
|
| 60 |
DEFAULT_MODEL_ID = os.getenv('DEFAULT_MODEL_ID',
|
| 61 |
'runwayml/stable-diffusion-v1-5')
|
| 62 |
model = Model(base_model_id=DEFAULT_MODEL_ID, task_name='canny')
|
|
@@ -147,4 +152,4 @@ with gr.Blocks(css='style.css') as demo:
|
|
| 147 |
inputs=new_base_model_id,
|
| 148 |
outputs=current_base_model)
|
| 149 |
|
| 150 |
-
demo.queue(api_open=False).launch(
|
|
|
|
| 8 |
import subprocess
|
| 9 |
|
| 10 |
import gradio as gr
|
| 11 |
+
import torch
|
| 12 |
|
| 13 |
if os.getenv('SYSTEM') == 'spaces':
|
| 14 |
with open('patch') as f:
|
|
|
|
| 44 |
from app_seg import create_demo as create_demo_seg
|
| 45 |
from model import Model, download_all_controlnet_weights
|
| 46 |
|
| 47 |
+
DESCRIPTION = '# [ControlNet v1.0](https://github.com/lllyasviel/ControlNet)'
|
| 48 |
|
| 49 |
SPACE_ID = os.getenv('SPACE_ID')
|
| 50 |
ALLOW_CHANGING_BASE_MODEL = SPACE_ID != 'hysts/ControlNet'
|
|
|
|
| 52 |
if SPACE_ID is not None:
|
| 53 |
DESCRIPTION += f'\n<p>For faster inference without waiting in queue, you may duplicate the space and upgrade to GPU in settings. <a href="https://huggingface.co/spaces/{SPACE_ID}?duplicate=true"><img style="display: inline; margin-top: 0em; margin-bottom: 0em" src="https://bit.ly/3gLdBN6" alt="Duplicate Space" /></a></p>'
|
| 54 |
|
| 55 |
+
if torch.cuda.is_available():
|
| 56 |
+
DESCRIPTION += '\n<p>Running on GPU 🔥</p>'
|
| 57 |
+
if os.getenv('SYSTEM') == 'spaces':
|
| 58 |
+
download_all_controlnet_weights()
|
| 59 |
+
else:
|
| 60 |
+
DESCRIPTION += '\n<p>Running on CPU 🥶 This demo does not work on CPU.'
|
| 61 |
+
|
| 62 |
MAX_IMAGES = int(os.getenv('MAX_IMAGES', '3'))
|
| 63 |
DEFAULT_NUM_IMAGES = min(MAX_IMAGES, int(os.getenv('DEFAULT_NUM_IMAGES', '1')))
|
| 64 |
|
|
|
|
|
|
|
|
|
|
| 65 |
DEFAULT_MODEL_ID = os.getenv('DEFAULT_MODEL_ID',
|
| 66 |
'runwayml/stable-diffusion-v1-5')
|
| 67 |
model = Model(base_model_id=DEFAULT_MODEL_ID, task_name='canny')
|
|
|
|
| 152 |
inputs=new_base_model_id,
|
| 153 |
outputs=current_base_model)
|
| 154 |
|
| 155 |
+
demo.queue(api_open=False, max_size=10).launch()
|
model.py
CHANGED
|
@@ -18,13 +18,16 @@ repo_dir = pathlib.Path(__file__).parent
|
|
| 18 |
submodule_dir = repo_dir / 'ControlNet'
|
| 19 |
sys.path.append(submodule_dir.as_posix())
|
| 20 |
|
| 21 |
-
|
| 22 |
-
from annotator.
|
| 23 |
-
from annotator.
|
| 24 |
-
from annotator.
|
| 25 |
-
from annotator.
|
| 26 |
-
from annotator.
|
| 27 |
-
from annotator.
|
|
|
|
|
|
|
|
|
|
| 28 |
|
| 29 |
CONTROLNET_MODEL_IDS = {
|
| 30 |
'canny': 'lllyasviel/sd-controlnet-canny',
|
|
@@ -54,6 +57,8 @@ class Model:
|
|
| 54 |
self.pipe = self.load_pipe(base_model_id, task_name)
|
| 55 |
|
| 56 |
def load_pipe(self, base_model_id: str, task_name) -> DiffusionPipeline:
|
|
|
|
|
|
|
| 57 |
if base_model_id == self.base_model_id and task_name == self.task_name and hasattr(
|
| 58 |
self, 'pipe'):
|
| 59 |
return self.pipe
|
|
|
|
| 18 |
submodule_dir = repo_dir / 'ControlNet'
|
| 19 |
sys.path.append(submodule_dir.as_posix())
|
| 20 |
|
| 21 |
+
try:
|
| 22 |
+
from annotator.canny import apply_canny
|
| 23 |
+
from annotator.hed import apply_hed, nms
|
| 24 |
+
from annotator.midas import apply_midas
|
| 25 |
+
from annotator.mlsd import apply_mlsd
|
| 26 |
+
from annotator.openpose import apply_openpose
|
| 27 |
+
from annotator.uniformer import apply_uniformer
|
| 28 |
+
from annotator.util import HWC3, resize_image
|
| 29 |
+
except Exception:
|
| 30 |
+
pass
|
| 31 |
|
| 32 |
CONTROLNET_MODEL_IDS = {
|
| 33 |
'canny': 'lllyasviel/sd-controlnet-canny',
|
|
|
|
| 57 |
self.pipe = self.load_pipe(base_model_id, task_name)
|
| 58 |
|
| 59 |
def load_pipe(self, base_model_id: str, task_name) -> DiffusionPipeline:
|
| 60 |
+
if self.device.type == 'cpu':
|
| 61 |
+
return None
|
| 62 |
if base_model_id == self.base_model_id and task_name == self.task_name and hasattr(
|
| 63 |
self, 'pipe'):
|
| 64 |
return self.pipe
|