初始化换发型项目:3个微服务代码 + 部署脚本
包含: - hair_service_sd: 换发型/换发色算法服务 (端口 8801) - photo_service: LoRA 训练调度服务 (端口 32678) - stable-diffusion-webui: SD WebUI 推理服务 (端口 57860) - kohya_ss_home: 训练环境代码 - meidaojia: 监控测试脚本 - setup.sh: 一键部署脚本 (conda环境恢复 + 配置生成 + 完整性检查) - start_all_services.sh: 启动3个服务 - configure.ini.template: 路径模板化 (BASE_DIR自动推导) - conda_envs/py310.yml: py310 环境定义 大文件 (weights/, models/, data/, conda_envs/*.tar.gz 等) 通过 .gitignore 排除, 由网盘单独上传。
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
import cv2
|
||||
import numpy as np
|
||||
|
||||
import base64
|
||||
import requests
|
||||
from common.logger import config
|
||||
|
||||
version = config.get('default', 'version')
|
||||
if version == "local":
|
||||
webui_url = 'http://192.168.1.57:57860/'
|
||||
else:
|
||||
webui_url = 'http://0.0.0.0:57860/'
|
||||
|
||||
def encode_numpy_to_base64(img):
|
||||
retval, bytes = cv2.imencode('.png', img)
|
||||
encoded_image = base64.b64encode(bytes).decode('utf-8')
|
||||
return encoded_image
|
||||
|
||||
|
||||
def webui_img2img(img, mask, prompt=''):
|
||||
url = f"{webui_url}sdapi/v1/img2img"
|
||||
request_dict = {
|
||||
"prompt": prompt,
|
||||
"negative_prompt": '(nsfw:1.5), ng_deepnegative_v1_75t, (badhandv4:1.2), (worst quality:2), (low quality:2), (normal quality:2), lowres, bad anatomy, bad hands, ((monochrome)), ((grayscale)) watermark, bad_pictures,easynegative',
|
||||
"sampler_name": "DPM++ 2M Karras",
|
||||
"batch_size": 1,
|
||||
"steps": 30,
|
||||
"width": img.shape[1],
|
||||
"height": img.shape[0],
|
||||
"cfg_scale": 7.0,
|
||||
"seed": 123456789,
|
||||
"mask_blur": 5,
|
||||
"init_images": [
|
||||
encode_numpy_to_base64(img)
|
||||
],
|
||||
"inpaint_full_res": False,
|
||||
"inpainting_fill": 1,
|
||||
"inpainting_mask_invert": 0,
|
||||
"mask": encode_numpy_to_base64(mask),
|
||||
# "refiner_checkpoint":"majicmixRealistic_v7.safetensors",
|
||||
# "refiner_switch_at": 0.4,
|
||||
"denoising_strength": 0.35,
|
||||
"alwayson_scripts": {
|
||||
}
|
||||
}
|
||||
response = requests.post(url=url, json=request_dict)
|
||||
ret_json = response.json()
|
||||
result = ret_json['images'][0]
|
||||
img = cv2.imdecode(np.frombuffer(base64.b64decode(result.split(",", 1)[0]), np.uint8), cv2.IMREAD_COLOR)
|
||||
return img
|
||||
|
||||
def webui_super_res_img(img, ratio):
|
||||
url = f"{webui_url}sdapi/v1/extra-single-image"
|
||||
request_dict = {
|
||||
"resize_mode": 0,
|
||||
"show_extras_results": False,
|
||||
"gfpgan_visibility": 0,
|
||||
"codeformer_visibility": 1,
|
||||
"codeformer_weight": 1,
|
||||
"upscaling_resize": ratio,
|
||||
"upscaler_1": "8x_NMKD-Superscale_150000_G",
|
||||
"upscale_first": False,
|
||||
"image": encode_numpy_to_base64(img)
|
||||
}
|
||||
response = requests.post(url=url, json=request_dict)
|
||||
ret_json = response.json()
|
||||
result = ret_json['image']
|
||||
img = cv2.imdecode(np.frombuffer(base64.b64decode(result), np.uint8), cv2.IMREAD_COLOR)
|
||||
return img
|
||||
|
||||
|
||||
def webui_tag_by_clip(img):
|
||||
url = f"{webui_url}sdapi/v1/interrogate"
|
||||
request_dict = {
|
||||
"image": encode_numpy_to_base64(img),
|
||||
"model": "clip"
|
||||
}
|
||||
response = requests.post(url=url, json=request_dict)
|
||||
ret_json = response.json()
|
||||
return ret_json['caption']
|
||||
Reference in New Issue
Block a user