Spaces:
Running
on
Zero
Running
on
Zero
File size: 3,710 Bytes
3542be4 63144e1 3542be4 c689a76 3542be4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
import os
import requests
from tqdm import tqdm
import shutil
from PIL import Image, ImageOps
import numpy as np
import cv2
def load_cn_model(model_dir):
folder = model_dir
file_name = 'diffusion_pytorch_model.safetensors'
url = "https://huggingface.co/kataragi/ControlNet-LineartXL/resolve/main/Katarag_lineartXL-fp16.safetensors"
file_path = os.path.join(folder, file_name)
if not os.path.exists(file_path):
response = requests.get(url, stream=True)
total_size = int(response.headers.get('content-length', 0))
with open(file_path, 'wb') as f, tqdm(
desc=file_name,
total=total_size,
unit='iB',
unit_scale=True,
unit_divisor=1024,
) as bar:
for data in response.iter_content(chunk_size=1024):
size = f.write(data)
bar.update(size)
def load_cn_config(model_dir):
folder = model_dir
file_name = 'config.json'
file_path = os.path.join(folder, file_name)
if not os.path.exists(file_path):
config_path = os.path.join(os.getcwd(), file_name)
shutil.copy(config_path, file_path)
def load_tagger_model(model_dir):
model_id = 'SmilingWolf/wd-swinv2-tagger-v3'
files = [
'config.json', 'model.onnx', 'selected_tags.csv', 'sw_jax_cv_config.json'
]
if not os.path.exists(model_dir):
os.makedirs(model_dir)
for file in files:
file_path = os.path.join(model_dir, file)
if not os.path.exists(file_path):
url = f'https://huggingface.co/{model_id}/resolve/main/{file}'
response = requests.get(url, allow_redirects=True)
if response.status_code == 200:
with open(file_path, 'wb') as f:
f.write(response.content)
print(f'Downloaded {file}')
else:
print(f'Failed to download {file}')
else:
print(f'{file} already exists.')
def load_lora_model(model_dir):
folder = model_dir
file_name = 'sdxl_BWLine.safetensors'
url = "https://huggingface.co/tori29umai/lineart/resolve/main/sdxl_BWLine.safetensors"
file_path = os.path.join(folder, file_name)
if not os.path.exists(file_path):
response = requests.get(url, stream=True)
total_size = int(response.headers.get('content-length', 0))
with open(file_path, 'wb') as f, tqdm(
desc=file_name,
total=total_size,
unit='iB',
unit_scale=True,
unit_divisor=1024,
) as bar:
for data in response.iter_content(chunk_size=1024):
size = f.write(data)
bar.update(size)
def resize_image_aspect_ratio(image):
# 元の画像サイズを取得
original_width, original_height = image.size
# アスペクト比を計算
aspect_ratio = original_width / original_height
# 標準のアスペクト比サイズを定義
sizes = {
1: (1024, 1024), # 正方形
4/3: (1152, 896), # 横長画像
3/2: (1216, 832),
16/9: (1344, 768),
21/9: (1568, 672),
3/1: (1728, 576),
1/4: (512, 2048), # 縦長画像
1/3: (576, 1728),
9/16: (768, 1344),
2/3: (832, 1216),
3/4: (896, 1152)
}
# 最も近いアスペクト比を見つける
closest_aspect_ratio = min(sizes.keys(), key=lambda x: abs(x - aspect_ratio))
target_width, target_height = sizes[closest_aspect_ratio]
# リサイズ処理
resized_image = image.resize((target_width, target_height), Image.ANTIALIAS)
return resized_image
def base_generation(size, color):
canvas = Image.new("RGBA", size, color)
return canvas |