diff --git a/doc/project/02-设计文档/backend-api.md b/doc/project/02-设计文档/backend-api.md index 74fb874..29cabc6 100644 --- a/doc/project/02-设计文档/backend-api.md +++ b/doc/project/02-设计文档/backend-api.md @@ -376,6 +376,12 @@ "perturbation_code": "style_protection", "perturbation_name": "风格迁移防护", "description": "Style Transfer Protection - 保护艺术作品免受风格模仿" + }, + { + "perturbation_configs_id": 10, + "perturbation_code": "quick", + "perturbation_name": "快速防护算法", + "description": "Quick Protection - 基于PID的快速防护算法,训练步数少、速度快,适合快速测试" } ] } @@ -383,6 +389,7 @@ **说明**: - `perturbation_configs_id=7,8` 仅适用于人脸数据集(`data_type_id=1`) - `perturbation_configs_id=9` 仅适用于艺术作品数据集(`data_type_id=2`)且**必须**指定 `target_style` 参数 +- `perturbation_configs_id=10`(快速防护算法):基于 PID 的快速版本,训练步数 120(vs 标准 PID 的 1000),步长 0.01(vs 0.002),适合快速测试和演示 **错误响应**: - `401 {"error": "无效的用户身份标识"}` @@ -1880,6 +1887,11 @@ Authorization: Bearer ## 文档更新记录 +### 2026-01-01 快速防护算法功能更新 +- [GET /api/task/perturbation/configs](#get-apitaskperturbationconfigs):新增 `quick`(快速防护算法)配置项,ID=10,基于 PID 算法的快速版本,训练步数 120(标准 PID 为 1000),步长 0.01(标准为 0.002),适合快速测试和演示场景。 +- 算法配置列表总数更新:从 9 种算法增加到 10 种算法。 +- 完善算法配置说明:明确快速防护算法的性能特点和适用场景。 + ### 2025-12-20 风格迁移防护功能更新 - [GET /api/task/perturbation/configs](#get-apitaskperturbationconfigs):更新算法配置列表,新增9种算法的完整信息及适用范围说明。 - [GET /api/task/perturbation/style-presets](#get-apitaskperturbationstyle-presets):**新增接口**,用于获取风格迁移防护算法的4种预设风格(梵高/康定斯基/毕加索/巴洛克)。 diff --git a/src/backend/app/workers/perturbation_worker.py b/src/backend/app/workers/perturbation_worker.py index 6242b79..6a92364 100644 --- a/src/backend/app/workers/perturbation_worker.py +++ b/src/backend/app/workers/perturbation_worker.py @@ -223,8 +223,8 @@ def _run_real_algorithm(script_path, conda_env, algorithm_code, task_id, f"--class_data_dir={class_dir}", f"--eps={float(epsilon)}", ]) - elif algorithm_code in ['pid', 'anti_face_edit']: - # PID 和防人脸编辑参数结构 + elif algorithm_code in ['pid', 'anti_face_edit', 'quick']: + # PID、防人脸编辑和快速防护参数结构 cmd_args.extend([ f"--instance_data_dir={input_dir}", f"--output_dir={output_dir}", diff --git a/src/backend/config/algorithm_config.py b/src/backend/config/algorithm_config.py index f5d72a6..1794d29 100644 --- a/src/backend/config/algorithm_config.py +++ b/src/backend/config/algorithm_config.py @@ -73,6 +73,7 @@ class AlgorithmConfig: 'dreambooth': os.getenv('CONDA_ENV_DREAMBOOTH', 'pid'), 'lora': os.getenv('CONDA_ENV_LORA', 'pid'), 'textual_inversion': os.getenv('CONDA_ENV_TI', 'pid'), + 'quick': os.getenv('CONDA_ENV_QUICK', 'pid') } # 模型路径配置 @@ -254,6 +255,19 @@ class AlgorithmConfig: 'guidance_scale': 7.5, 'seed': 42 } + }, + 'quick': { + 'real_script': os.path.join(ALGORITHMS_DIR, 'perturbation', 'pid.py'), + 'virtual_script': os.path.join(ALGORITHMS_DIR, 'perturbation_engine.py'), + 'conda_env': CONDA_ENVS['quick'], + 'default_params': { + 'pretrained_model_name_or_path': MODELS_DIR['model2'], + 'resolution': 512, + 'max_train_steps': 120, + 'center_crop': True, + 'step_size': 0.01, + 'attack_type': 'add-log' + } } } diff --git a/src/backend/init_db.py b/src/backend/init_db.py index b2b684e..558292b 100644 --- a/src/backend/init_db.py +++ b/src/backend/init_db.py @@ -65,7 +65,8 @@ def init_database(): {'perturbation_code': 'glaze', 'perturbation_name': 'Glaze算法', 'description': 'Protecting Artists from Style Mimicry by Text-to-Image Models'}, {'perturbation_code': 'anti_customize', 'perturbation_name': '防定制生成', 'description': 'Anti-Customization Generation - 专门防止人脸定制化生成'}, {'perturbation_code': 'anti_face_edit', 'perturbation_name': '防人脸编辑', 'description': 'Anti-Face-Editing - 专门防止人脸图像被编辑'}, - {'perturbation_code': 'style_protection', 'perturbation_name': '风格迁移防护', 'description': 'Style Transfer Protection - 保护艺术作品免受风格模仿'} + {'perturbation_code': 'style_protection', 'perturbation_name': '风格迁移防护', 'description': 'Style Transfer Protection - 保护艺术作品免受风格模仿'}, + {'perturbation_code': 'quick', 'perturbation_name': '快速防护算法', 'description': 'Quick Protection - 基于PID的快速防护算法,训练步数少、速度快,适合快速测试'} ] for config in perturbation_configs: