feat: 新增mask区域重绘功能 + 羽化贴回优化 + 发丝增强
新增功能: - inpaint_mask.py: mask区域重绘服务(enhance/pure_inpaint两种模式) 严格只在mask区做SD inpainting,发丝自然化 - /inpaint 页面 + /api/inpaint 接口:画板手绘mask + 提示词编辑 + denoising可调 - enhance_hair.webui_img2img: 新增denoising_strength参数(原硬编码0.35) 羽化贴回优化(hair_swap_manual.py 步骤⑥): - feather_px(羽化范围)+ feather_alpha(羽化强度)拆分为两个独立参数 - 改为只羽化边缘(mask内部保持硬切,仅边缘带渐变) - 新增黑底羽化对比图(纯黑背景凸显边缘过渡) 其他改动: - OSS/COS密钥脱敏:改为可选import,未设环境变量时不崩溃 - manual页面:发型列表改为本次训练的8个(含hair_flow) - enhance二次增强:重绘区改为「原图头发∪手绘mask」并外扩10%+减发际线带3cm - 发型清单文档更新:179→180个可用发型(+hair_flow) 涉及文件: - 新增: inpaint_mask.py, inpaint.html - 修改: app.py, manual.html, hair_swap_manual.py, enhance_hair.py - 修改: oss_module.py, upload_oss.py, cos_module.py(密钥脱敏) - 文档: HAIRSTYLES_AVAILABLE.md, hairstyles_available.csv
This commit is contained in:
@@ -20,8 +20,11 @@ class COS_object():
|
||||
token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048
|
||||
self.scheme = 'https' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填
|
||||
self.BucketName= os.getenv('COS_BUCKET', '<your-cos-bucket>')
|
||||
for param in (secret_id, secret_key, self.region, self.BucketName):
|
||||
assert '<' not in param, '请设置环境变量 COS_SECRET_ID / COS_SECRET_KEY / COS_REGION / COS_BUCKET'
|
||||
# 密钥未设置时标记不可用(不抛异常)
|
||||
if '<' in secret_id or '<' in secret_key:
|
||||
print('[COS] ⚠️ 未设置 COS 密钥环境变量,COS 上传功能不可用')
|
||||
self.client = None
|
||||
return
|
||||
config = CosConfig(Region=self.region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=self.scheme)
|
||||
self.client = CosS3Client(config)
|
||||
|
||||
|
||||
@@ -1,17 +1,28 @@
|
||||
import time
|
||||
|
||||
import oss2
|
||||
import os
|
||||
|
||||
try:
|
||||
import oss2
|
||||
_OSS2_AVAILABLE = True
|
||||
except Exception as _e:
|
||||
print(f'[OSS] ⚠️ oss2 导入失败({_e}),OSS 上传功能不可用')
|
||||
_OSS2_AVAILABLE = False
|
||||
|
||||
class OSS_object():
|
||||
def __init__(self):
|
||||
if not _OSS2_AVAILABLE:
|
||||
print('[OSS] oss2 不可用,OSS 功能关闭')
|
||||
self.bucket = None
|
||||
return
|
||||
access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', '<your-access-key-id>')
|
||||
access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', '<your-access-key-secret>')
|
||||
bucket_name = os.getenv('OSS_TEST_BUCKET', '<your-bucket-name>')
|
||||
endpoint = os.getenv('OSS_TEST_ENDPOINT', '<your-endpoint>')
|
||||
for param in (access_key_id, access_key_secret, bucket_name, endpoint):
|
||||
assert '<' not in param, '请设置环境变量 OSS_TEST_ACCESS_KEY_ID / OSS_TEST_ACCESS_KEY_SECRET / OSS_TEST_BUCKET / OSS_TEST_ENDPOINT'
|
||||
|
||||
# 密钥未设置时标记不可用(不抛异常,避免服务启动/换发型时崩溃)
|
||||
if '<' in access_key_id or '<' in access_key_secret:
|
||||
print('[OSS] ⚠️ 未设置 OSS 密钥环境变量,OSS 上传功能不可用(本地测试用 base64 返回即可)')
|
||||
self.bucket = None
|
||||
return
|
||||
self.bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
|
||||
|
||||
def upload_file(self, file, target_name):
|
||||
|
||||
Reference in New Issue
Block a user