❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- 功能:支持定制化漫画生成,用户可根据文本提示和角色图像生成漫画。
- 技术:整合MLLM和扩散模型,通过掩码交叉注意力机制实现精确布局控制。
- 应用:适用于漫画创作、个性化内容生成、教育和培训等多个场景。
正文(附运行示例)
DiffSensei 是什么
DiffSensei 是由北京大学、上海AI实验室及南洋理工大学共同推出的AI漫画生成框架,能够生成可控的黑白漫画面板。该框架整合了基于扩散的图像生成器和多模态大型语言模型(MLLM),支持对漫画中多角色外观和互动的精确控制。
通过掩码交叉注意力机制和MLLM适配器,DiffSensei 能够根据文本提示动态调整角色特征,包括表情、姿势和动作,生成具有连贯性和视觉吸引力的漫画面板。此外,DiffSensei 还引入了 MangaZero 数据集,支持多角色、多状态的漫画生成任务。
DiffSensei 的主要功能
- 定制化漫画生成:根据用户提供的角色图像和文本提示生成漫画,支持用户对角色的外观、表情、动作进行定制。
- 多角色控制:框架支持多角色场景的漫画生成,处理角色间的互动和布局。
- 文本兼容的身份适配:基于MLLM,根据文本提示动态调整角色特征,让角色的表现与文本描述相匹配。
- 精确布局控制:通过掩码交叉注意力机制,精确控制角色和对话的布局,无需直接像素传输。
- 数据集支持:引入 MangaZero 数据集,支持多角色、多状态的漫画生成任务。
DiffSensei 的技术原理
- 整合MLLM和扩散模型:结合MLLM作为文本兼容的身份适配器和基于扩散的图像生成器,生成定制化的漫画面板。
- 掩码交叉注意力(Masked Cross-Attention):通过复制关键和值矩阵,在每个交叉注意力层中创建独立的角色交叉注意力层,实现角色布局的精确控制。
- 对话布局编码(Dialog Layout Encoding):引入可训练的嵌入层表示对话布局,将对话嵌入与噪声潜在表示相结合,实现对话位置的编码。
- MLLM作为特征适配器:MLLM接收源角色特征和面板标题作为输入,生成与文本兼容的目标角色特征,动态调整角色状态。
- 多角色特征提取:使用CLIP和图像编码器提取局部图像特征和图像级特征,避免直接从参考图像编码细粒度空间特征。
- 扩散损失和语言模型损失:在训练MLLM时,计算语言模型损失(LM Loss)约束输出格式,均方误差损失(MSE Loss)指导基于面板标题的目标角色特征,计算扩散损失确保编辑后的特征与图像生成器保持一致。
如何运行 DiffSensei
安装
# 创建一个新的Conda环境
conda create -n diffsensei python=3.11
conda activate diffsensei
# 安装Pytorch和Diffusers相关包
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
conda install -c conda-forge diffusers transformers accelerate
pip3 install -U xformers --index-url https://download.pytorch.org/whl/cu121
# 安装其他依赖
pip install -r requirements.txt
# 第三方库用于运行Gradio demo
pip install gradio-image-prompter
模型下载
从 Huggingface 下载 DiffSensei 模型,并将其放置在 checkpoints
文件夹中:
checkpoints
|- diffsensei
|- image_generator
|- ...
|- mllm
|- ...
使用Gradio进行推理
CUDA_VISIBLE_DEVICES=0 \
python -m scripts.demo.gradio \
--config_path configs/model/diffsensei.yaml \
--inference_config_path configs/inference/diffsensei.yaml \
--ckpt_path checkpoints/diffsensei
如果内存有限,可以选择不使用MLLM组件的版本:
CUDA_VISIBLE_DEVICES=0 \
python -m scripts.demo.gradio_wo_mllm \
--config_path configs/model/diffsensei.yaml \
--inference_config_path configs/inference/diffsensei.yaml \
--ckpt_path checkpoints/diffsensei
资源
- 项目官网:https://jianzongwu.github.io/projects/diffsensei
- GitHub 仓库:https://github.com/jianzongwu/DiffSensei
- arXiv 技术论文:https://arxiv.org/pdf/2412.07589
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦