# BS **Repository Path**: xv514/bs ## Basic Information - **Project Name**: BS - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-04 - **Last Updated**: 2026-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🎨 AFDB Face Studio v2.0 **基于 ControlNet + Stable Diffusion + LoRA 的草图驱动智能人脸生成平台** > 🏫 深度学习及应用课程项目 | 2025-2026 第二学期 --- ## 📖 项目简介 AFDB Face Studio 是一个基于扩散模型的交互式人脸生成平台。用户**上传手绘草图或照片**,选择艺术风格,即可一键生成高质量人脸图像。平台以 **ControlNet Scribble** 将草图作为空间约束信号,以 **Stable Diffusion 1.5** 作为基底生成模型,并通过 **LoRA 微调** 注入 31 万张亚洲人脸知识,显著提升亚洲人脸的生成真实感。 ### ✨ 核心特性 | 特性 | 说明 | |------|------| | 🖊️ **草图驱动** | 画简单线条即可控制人脸形态,无需编写复杂提示词 | | 🎯 **8 种艺术风格** | 写实摄影 · 2D 动漫 · 3D 皮克斯 · 水彩画 · 油画 · 素描 · 赛博朋克 · 水墨画 | | 👤 **亚洲人脸优化** | LoRA 在 31 万张 AFDB 亚洲人脸数据上定制训练 | | 🧠 **智能草图提取** | YuNet + AFD 分区 + 自适应 Canny,照片自动转草图 | | ⚡ **显存友好** | CPU Offload + Attention Slicing,6GB 显卡即可运行 | | 🌐 **简洁 Web UI** | Streamlit 三步操作:上传 → 选风格 → 生成 | --- ## 🏗️ 技术架构 ``` 用户输入(草图/照片) │ ▼ ┌─────────────────────────────────┐ │ 输入阶段 │ │ YuNet 人脸检测 → AFD 分区处理 │ │ → 自适应 Canny → CLAHE 增强 │ └──────────────┬──────────────────┘ │ ▼ ┌─────────────────────────────────┐ │ 生成阶段 │ │ ControlNet Scribble (空间约束) │ │ + Stable Diffusion 1.5 (基底) │ │ + LoRA (亚洲人脸适配) │ │ + 风格预设提示词注入 │ └──────────────┬──────────────────┘ │ ▼ ┌─────────────────────────────────┐ │ 输出阶段 │ │ 512×512 高清人脸 · 多风格对比 │ │ · 批量导出 · 历史记录 │ └─────────────────────────────────┘ ``` ### 技术栈 | 层级 | 技术选型 | |------|---------| | 基础模型 | Stable Diffusion 1.5 (runwayml) | | 条件控制 | ControlNet Scribble (lllyasviel) | | 微调方法 | LoRA (Rank=16, PEFT) | | 人脸检测 | YuNet + OpenCV Haar Cascade | | 推理加速 | DPMSolverMultistepScheduler | | Web 框架 | Streamlit 1.54 | | 深度学习 | PyTorch 2.4 + Diffusers 0.31 | --- ## 📁 项目结构 ``` AFD_Face_Studio/ ├── app.py # 🖥️ Streamlit Web 应用主入口 ├── inference.py # 🧠 多风格推理引擎 ├── train_lora.py # 🏋️ LoRA 微调训练脚本 ├── prepare_dataset.py # 📦 数据预处理流水线 ├── config.py # ⚙️ 全局配置管理 ├── run.py # 🚀 CLI 命令行启动器 ├── requirements.txt # 📋 Python 依赖清单 ├── utils/ │ ├── sketch_gen_v4.py # ✏️ v4 人脸感知草图提取算法 │ ├── caption_gen.py # 📝 图像描述文本生成 │ └── face_detection_yunet_2023mar.onnx # 🔍 YuNet 人脸检测模型 ├── data/ │ └── captions.csv # 📊 图像-描述映射表 └── models/ # 💾 LoRA 权重存储(训练后生成) ``` --- ## 📊 数据集说明 本项目使用 **AFDB (Asian Face Database)** 亚洲人脸数据集: | 指标 | 数值 | |------|------| | 被试人数 | 1,663 人 | | 图像总量 | 约 311,000 张 | | 年龄范围 | 18-65 岁 | | 来源论文 | "An Asian Face Dataset and How Race Influences Face Recognition" | > ⚠️ **数据集不包含在本仓库中。** AFDB 数据集受原始发布机构约束,请自行通过合法途径获取。下载后将原始数据置于 `AFD_1/AFDB_dataset_160_part1/` 目录,运行 `prepare_dataset.py` 即可生成训练所需的预处理文件。 --- ## 🚀 快速开始 ### 环境要求 - **Python** ≥ 3.10 - **GPU** ≥ 8GB VRAM(推荐 NVIDIA CUDA 12.1;开启 CPU Offload 后最低 6GB) - **OS**:Windows / Linux ### 1. 安装依赖 ```bash git clone https://gitee.com/xv514/bs.git cd AFD_Face_Studio pip install -r requirements.txt ``` ### 2. 数据预处理(需先获取 AFDB 数据集) ```bash # 完整处理(从原始数据集生成原图 + 草图 + 描述) python prepare_dataset.py --mode full # 仅更新草图(在已有原图基础上重新生成) python prepare_dataset.py --mode sketch-only ``` ### 3. LoRA 训练(可选,已有预训练权重可跳过) ```bash python train_lora.py ``` > 训练约需 4-6 小时(单张 8GB 显存 GPU),最终权重保存在 `models/lora_afdb_face/final/`。 ### 4. 启动 Web 平台 ```bash # 命令行菜单启动 python run.py # 或直接启动 Streamlit streamlit run app.py --server.port 8501 ``` 浏览器访问 **[http://localhost:8501](http://localhost:8501)** 即可体验。 ### 5. Python API 调用 ```python from inference import FaceGenerator from PIL import Image gen = FaceGenerator() img = Image.open("your_sketch.png").convert("RGB") result = gen.generate( prompt="a young Asian person, portrait", image=img, style="realistic" ) result.save("output.png") ``` --- ## 🎨 风格预设一览 | 风格 | 标识符 | 步数 | CFG | 正向提示词 | |------|--------|------|-----|-----------| | 📸 写实摄影 | `realistic` | 30 | 7.5 | ultra realistic, photograph, 8k, detailed skin texture, dslr | | 🌸 2D 动漫 | `2d_anime` | 25 | 7.0 | anime style, masterpiece, clean lines, vibrant colors | | 🧸 3D 皮克斯 | `3d_pixar` | 28 | 7.0 | 3d render, Pixar style, cute, soft lighting, high detail | | 🎨 水彩画 | `watercolor` | 25 | 8.0 | watercolor painting, soft brush strokes, pastel, fine art | | 🖼️ 油画 | `oil_painting` | 30 | 7.5 | oil painting, impasto texture, classical portrait, Rembrandt | | ✏️ 素描 | `sketch` | 20 | 7.0 | pencil sketch, charcoal drawing, detailed line art, grayscale | | 🌆 赛博朋克 | `cyberpunk` | 28 | 7.5 | cyberpunk, neon lights, futuristic, synthwave | | 🖌️ 水墨画 | `ink_wash` | 25 | 8.0 | Chinese ink wash, sumi-e, black ink, rice paper texture | --- > 💡 运行 `streamlit run app.py` 即可在线体验全部风格。 --- ## ⚠️ 已知局限 | 问题 | 改进方向 | |------|---------| | 仅支持 512×512 输出 | 升级 SDXL 或引入超分辨率至 1024×1024 | | 侧脸角度表现欠佳 | 引入 3D 人脸重建作为中间表示 | | 五官细节不可独立控制 | 结合 Face Parsing 实现分区域编辑 | | 首次下载模型约 5GB+ | 提供 Docker 镜像或预下载包 | | CPU Offload 时 6-30s/张 | 引入 LCM / TCD 等加速采样 | --- ## 📄 许可证 本项目仅用于 **学术研究与教育目的**。AFDB 数据集版权归原始发布机构所有。 --- © 2026 AFDB Face Studio — 徐晓彤