❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- 功能:支持自然语言指令引导的图像编辑和修复,提供多轮交互式编辑功能。
- 技术:结合多模态大型语言模型和双分支图像修复模型,实现精细的图像编辑。
- 应用:适用于内容创作、媒体娱乐、广告营销等多个领域。
正文(附运行示例)
BrushEdit 是什么
BrushEdit是由腾讯、北京大学、香港中文大学及清华大学联合推出的先进图像编辑框架,是BrushNet模型的高级迭代版本。该框架结合了多模态大型语言模型(MLLMs)和双分支图像修复模型,支持用户通过自然语言指令进行自由形式的、多轮交互式的编辑操作。BrushEdit能够处理添加、移除物体等大幅度修改,同时保持背景的连贯性和编辑效果的自然性,显著提升图像编辑的灵活性和用户体验。
BrushEdit的核心在于其多模态大型语言模型和双分支图像修复模型的结合,使得用户可以通过简单的指令实现复杂的图像编辑任务。
BrushEdit 的主要功能
- 指令引导的图像编辑:用户可以通过自然语言指令指导图像编辑任务,如添加、删除或修改图像中的物体。
- 多轮交互式编辑:支持用户在编辑过程中进行多轮交互,逐步调整和完善编辑结果。
- 自由形式掩码编辑:用户可以自由绘制掩码指定编辑区域,无需精确的分割工具。
- 背景和前景处理:框架能够区分编辑区域(前景)和非编辑区域(背景),确保编辑操作不影响图像的非目标部分。
- 图像修复:自动填充和修复图像中的缺失或指定区域,如去除不需要的物体或填补空洞。
BrushEdit 的技术原理
- 多模态大型语言模型(MLLMs):通过预训练的MLLMs解析用户的自由形式编辑指令,识别编辑类型和目标对象。
- 双分支图像修复模型:一个分支负责处理掩码区域的图像生成,另一个分支处理未掩码区域的背景信息。
- 代理协作框架:基于代理(代理指导者和代理指挥者)之间的协作,实现编辑类别分类、主要对象识别、掩码获取和编辑区域修复。
- 特征融合:将用户指令和掩码信息融合到图像修复模型中,指导模型在掩码区域内生成与指令相符的内容。
- 零卷积层和特征插入:通过零卷积层将冻结的预训练模型与可训练的BrushEdit模型连接,逐层集成特征实现精细的控制。
- 混合微调策略:结合随机掩码和分割掩码的微调策略,让模型处理多种掩码任务,不受特定掩码类型限制。
如何运行 BrushEdit
环境要求
BrushEdit已经在CUDA118、Pytorch 2.0.1和Python 3.10.6环境下实现和测试。
首先,克隆仓库:
git clone https://github.com/TencentARC/BrushEdit.git
推荐使用conda
创建虚拟环境,并按照官方说明安装pytorch
:
conda create -n brushedit python=3.10.6 -y
conda activate brushedit
python -m pip install --upgrade pip
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
然后,安装diffusers
:
pip install -e .
最后,安装所需的包:
pip install -r app/requirements.txt
下载检查点
使用以下命令下载BrushEdit的检查点:
sh app/down_load_brushedit.sh
运行演示
使用以下脚本运行演示:
sh app/run_app.sh
资源
- 项目官网:https://liyaowei-stu.github.io/project/BrushEdit
- GitHub 仓库:https://github.com/TencentARC/BrushEdit
- HuggingFace 模型库:https://huggingface.co/TencentARC/BrushEdit
- arXiv 技术论文:https://arxiv.org/pdf/2412.10316
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦