A newer version of the Gradio SDK is available:
5.27.1
metadata
title: AiRoom
app_file: app.py
sdk: gradio
sdk_version: 5.20.1
AiRoom - AI辅助室内设计工具
项目简介
AiRoom是一个基于AI技术的室内设计辅助工具,通过结合ControlNet和Stable Diffusion模型,实现对室内场景的全局风格调整和局部区域风格定制。该工具提供了直观的交互式界面,使用户能够轻松地对室内设计进行创意探索和风格转换,并支持相似图像搜索功能,帮助用户发现灵感。
功能特点
- 全局风格调整:使用ControlNet保持原始空间布局的同时,通过Stable Diffusion调整整体风格
- 局部风格调整:针对特定区域(如墙壁、地板、家具等)进行风格定制,保持其他区域不变
- 相似图像搜索:基于CLIP和FAISS实现的高效图像相似性搜索,帮助用户发现相似设计方案
- 交互式界面:基于Gradio构建的用户友好界面,支持实时预览和参数调整
- 多方案生成:每次生成多个设计方案供用户选择,以2x2网格形式展示
- 区域智能识别:自动分析图像中的不同功能区域,无需手动标注
安装说明
环境要求
- Python 3.8+
- CUDA支持的GPU (推荐8GB+显存)
安装步骤
- 克隆本仓库到本地:
git clone https://github.com/yourusername/AiRoom.git
cd AiRoom
- 创建并激活虚拟环境(推荐):
# 使用Conda创建虚拟环境
conda create -n Airoom python=3.10
conda activate Airoom
# 或使用venv创建虚拟环境
python -m venv Airoom
# Windows激活
Airoom\Scripts\activate
# Linux/Mac激活
source Airoom/bin/activate
- 安装依赖包:
# 安装PyTorch(根据您的CUDA版本选择适当的命令)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 安装项目依赖
pip install -r requirements.txt
- 下载必要资源:
python download_resources.py
使用指南
- 启动应用:
python app.py
在浏览器中访问显示的本地URL(通常为 http://127.0.0.1:7860)
使用流程:
- 首先点击"加载模型"按钮,等待所有模型加载完成
- 选择功能模式(通过顶部选项卡:全局风格调整、局部风格调整或相似图像搜索)
- 上传室内场景图片或使用示例图片
- 点击"分析图像结构"按钮处理输入图像
- 根据需要调整参数
- 点击"生成设计方案"按钮创建新设计
- 从生成的多个设计方案中选择喜欢的结果
- 可选择保存设计方案供后续参考或搜索
功能详解
全局风格调整
全局风格调整功能允许用户保持原始空间布局的同时,改变整个场景的设计风格。用户可以:
- 输入详细的风格描述提示词(可从预设列表中选择或自定义)
- 选择房间类型(卧室、客厅、厨房等)
- 选择风格主题(现代、北欧、工业风等)
- 调整推理步数(影响生成质量和时间)
- 调整引导比例(影响生成结果对提示词的遵循程度)
- 同时生成4个不同的设计方案进行比较
- 选择并保存喜欢的设计方案
工作原理:
- 使用MLSD检测器提取房间的线条结构,生成控制图像
- ControlNet确保生成的图像保持原始空间布局和结构
- Stable Diffusion根据提示词和控制图像生成符合要求的设计风格
局部风格调整
局部风格调整功能允许用户针对场景中的特定区域进行风格定制,而保持其他区域不变。用户可以:
- 从下拉菜单中选择要调整的区域(墙壁、地板、家具等)
- 查看所选区域的掩码预览(红色半透明覆盖显示选中区域)
- 输入针对该区域的风格描述提示词
- 调整区域变化的强度和细节
- 生成保持整体结构的局部风格变化
工作原理:
- 使用Mask2Former模型进行语义分割,识别图像中的不同功能区域
- 将识别的区域转换为掩码,供用户选择
- 结合ControlNet和Stable Diffusion Inpainting进行局部区域的风格调整
- 保持未选中区域不变,只修改选中区域的风格
相似图像搜索
相似图像搜索功能利用CLIP模型和FAISS索引,帮助用户查找与参考图像风格相似的设计方案。用户可以:
- 上传参考图像
- 设置搜索结果数量(2-8个)
- 查看以2x2网格布局展示的相似图像结果
- 查看每个结果的相似度百分比
- 通过"重建图像索引"按钮更新索引,包含新生成的设计方案
工作原理:
- 使用CLIP模型提取图像的语义特征向量
- FAISS索引存储所有已生成设计方案的特征向量
- 搜索时计算查询图像与索引中所有图像的余弦相似度
- 返回相似度最高的图像作为结果
项目结构
app.py
:主应用程序,包含Gradio界面和核心功能实现(全局风格调整、局部风格调整、相似图像搜索)download_resources.py
:下载必要模型和资源的工具脚本requirements.txt
:项目依赖列表resources/
:存放模型、图像和标签数据的目录models/
:存储AI模型(Mask2Former、ControlNet、Stable Diffusion等)images/
:存储示例和生成的图像labels/
:存储标签数据(如ADE20K数据集标签)output/
:存储生成的设计方案global_style/
:全局风格调整生成的图像local_style/
:局部风格调整生成的图像
features/
:存储图像特征和索引文件(用于相似图像搜索)image_features.index
:FAISS索引文件image_metadata.pkl
:图像元数据文件
技术实现
项目使用了多种先进的AI模型和技术:
- Mask2Former:用于场景语义分割,识别不同功能区域(如墙壁、地板、家具等)
- **ControlNet (MLSD)**:保持原始场景的结构和布局,通过线条检测提供控制指导
- Stable Diffusion:生成符合提示词描述的图像内容
- Stable Diffusion Inpainting:针对特定区域进行图像修复和风格转换
- CLIP:提取图像特征,用于相似性搜索和语义理解
- FAISS:高效的向量相似性搜索库,支持大规模图像检索
- Gradio:构建直观的用户界面,支持交互式操作和实时预览
- PyTorch:深度学习框架,支持GPU加速的模型推理
模型加载策略:
- 使用
torch.float16
精度减少内存占用 - 实现模型CPU卸载以优化内存使用
- 支持xformers内存优化(如果安装)
- 从本地缓存加载模型,避免重复下载
注意事项
- 首次运行时需要下载较大的模型文件(约10GB),请确保有足够的磁盘空间和稳定的网络连接
- 生成过程可能需要较长时间,取决于您的硬件配置(推荐使用NVIDIA GPU)
- 为获得最佳效果,建议使用清晰的室内场景照片作为输入
- 相似图像搜索功能需要先生成并保存一些设计方案才能有效工作
- 调整推理步数可以平衡生成质量和速度,通常20-30步可以获得不错的结果
- 调整引导比例可以控制生成结果的创意程度,较高的值(7-9)会更严格遵循提示词
许可证
[在此添加您的许可证信息]
致谢
本项目基于以下开源项目和模型:
联系方式
[在此添加您的联系信息]