基于文本生成高质量矢量草图的新方法
DiffSketcher是一个基于潜在扩散模型的文本引导矢量草图合成项目。它可以根据文本描述生成高质量的矢量草图,支持素描、油画和彩色图像等多种风格。该项目提供灵活的参数配置,如调整笔画数量和迭代次数,并支持与风格迁移技术结合。DiffSketcher为艺术创作和图像生成领域提供了新的可能性。
本仓库包含了我们NeurIPS 2023论文的官方实现:DiffSketcher:基于潜在扩散模型的文本引导矢量草图合成,该方法可以根据文本提示生成高质量的矢量草图。
DiffSketcher渲染过程:
<img src="https://yellow-cdn.veclightyear.com/835a84d5/a03dee8d-c7b3-495f-b8d9-0bbb820a02b2.gif" style="width: 200px; height: 200px;"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/209536a6-101c-43dc-98ee-7a843bb257de.gif" style="width: 200px; height: 200px;"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/37dd8352-fd2d-4f89-b1fe-224bcc00ea79.gif" style="width: 200px; height: 200px;"> |
---|---|---|
提示词:全彩金刚鹦鹉,超级详细,写实,极其美丽 | 提示 词:非常详细的杰作画作,尤达宝宝拿着光剑 | 提示词:晴天帆船在海上航行 |
创建新的conda环境:
conda create --name diffsketcher python=3.10 conda activate diffsketcher
安装pytorch和以下库:
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia pip install omegaconf BeautifulSoup4 pip install opencv-python scikit-image matplotlib visdom wandb pip install triton numba pip install numpy scipy timm scikit-fmm einops pip install accelerate transformers safetensors datasets
安装CLIP:
pip install ftfy regex tqdm pip install git+https://github.com/openai/CLIP.git
安装diffusers:
pip install diffusers==0.20.2
安装xformers(需要python=3.10
):
conda install xformers -c xformers
安装diffvg:
git clone https://github.com/BachiLi/diffvg.git cd diffvg git submodule update --init --recursive conda install -y -c anaconda cmake conda install -y -c conda-forge ffmpeg pip install svgwrite svgpathtools cssutils torch-tools python setup.py install
docker run --name diffsketcher --gpus all -it --ipc=host ximingxing/svgrender:v1 /bin/bash
预览:
注意力图 | 控制点初始化 | 笔画初始化 | 100步 | 500步 |
---|---|---|---|---|
<img src="https://yellow-cdn.veclightyear.com/835a84d5/5ce99d70-1076-4b1a-a639-9923fa582b1f.png" style="width: 200px; height: 200px;"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/025289c8-7432-4cd3-96f7-4a0a9a8e3a89.png" style="width: 200px; height: 200px;"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/0f23d58c-494c-4c24-a2e4-c111e0095136.svg" style="width: 200px; height: 200px;"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/ddbbd843-63ec-423c-b5d6-39e65ca6322b.svg" style="width: 200px; height: 200px;"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/71ab2018-b089-4f3e-8ebf-24f062346c38.svg" style="width: 200px; height: 200px;"> |
从抽象到具体:
16条路径 | 36条路径 | 48条路径 | 96条路径 | 128条路径 |
---|---|---|---|---|
<img src="https://yellow-cdn.veclightyear.com/835a84d5/b9a5285e-01be-4d1e-baef-ea888ae63305.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/2dfcc78b-e4ab-4c34-9bec-817fef0c2637.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/ee679b4a-987b-46f4-b588-20b75fb6f4ce.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/71ab2018-b089-4f3e-8ebf-24f062346c38.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/d676eb16-d5ff-4b47-bbe9-838f3ca0b456.svg"> |
脚本:
python run_painterly_render.py \ -c diffsketcher.yaml \ -eval_step 10 -save_step 10 \ -update "token_ind=4 num_paths=96 num_iter=800" \ -pt "悉尼歌剧院的照片" \ -respath ./workdir/sydney_opera_house \ -d 8019 \ --download
-c
即 --config
:配置文件,保存在 DiffSketcher/config/
中。-eval_step
:用于评估方法的步长(调用过于频繁会导致耗时更长)。-save_step
:用于保存结果的步长(调用过于频繁会导致耗时更长)。-update
:用于编辑配置文件的超参数的工具,这样就不需要创建新的yaml文件。-pt
即 --prompt
:文本提示。-respath
即 --results_path
:保存结果的文件夹。-d
即 --seed
:随机种子。--download
:首次运行时自动从huggingface下载模型。关键:
-update "token_ind=4"
表示用于初始化笔画的交叉注意力图的索引。-update "num_paths=96"
表示笔画的数量。可选:
-npt
,即 --negative_prompt
:负面文本提示。-mv
,即 --make_video
:制作渲染过程的视频(这将耗费更长时间)。-frame_freq
,即 --video_frame_freq
:保存图像的步数间隔。-framerate
,即 --video_frame_rate
:控制输出视频的播放速度。xdog_intersec=True
,请下载 U2Net模型并放置在 checkpoint/
目录中-update
中添加 enable_xformers=True
以启用xformers加速。-update
中添加 gradient_checkpoint=True
以使用梯度检查点来降低显存占用。预览:
<img src="https://yellow-cdn.veclightyear.com/835a84d5/3a090a6a-43eb-4b1b-9a0d-af054a27c6ac.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/db734cfa-ac69-41c7-9d55-5378e1da04e1.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/9bd50213-1055-4f3e-80c1-e450e8f3494e.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/9e0f4397-aa1f-42a0-a375-4b76b92c7439.svg"> |
---|---|---|---|
笔画初始化 | 100步 | 200步 | 990步 |
脚本:
python run_painterly_render.py \ -c diffsketcher-width.yaml \ -eval_step 10 -save_step 10 \ -update "token_ind=4 num_paths=48 num_iter=800" \ -pt "悉尼歌剧院的照片" \ -respath ./workdir/sydney_opera_house_ink \ -d 8019 \ --download
预览:
<img src="https://yellow-cdn.veclightyear.com/835a84d5/bcd2d051-089a-41d7-a70c-32a5fd7914b9.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/589afcdd-9184-4071-b9b9-c31d0da98891.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/e2dd8d5b-65c0-4d50-9a94-b79c93cbbe8a.svg"> |
---|---|---|
笔画初始化 | 100步 | 570步 |
脚本:
python run_painterly_render.py \ -c diffsketcher-color.yaml \ -eval_step 10 -save_step 10 \ -update "token_ind=5 num_paths=1000 num_iter=1000 guidance_scale=7.5" \ -pt "拉丁女性经历精神觉醒的肖像,闭着眼睛,微笑,发光的灯光,梵高风格的油画" \ -npt "文字,签名,标题,标题,水印,丑陋,重复,病态,残缺,画面外,多余的手指,变异的手,画工拙劣的手,画工拙劣的脸,突变,变形,模糊,解剖学错误,比例不当,多余的肢体,克隆的脸,毁容,画面外,丑陋,多余的肢体,比例严重失调,畸形的肢体,缺少手臂,缺少腿,多余的手臂,多余的腿,变异的手,融合的手指,手指过多,脖子过长" \ -respath ./workdir/latin_woman_portrait -d 58548
预览:
<img src="https://yellow-cdn.veclightyear.com/835a84d5/871be172-4702-489b-a0bd-c445d5532f11.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/fb6b9953-f15f-484d-ad51-1a9b60d4165e.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/b654d7ae-4c2b-4cc2-b408-a562a4e83bbb.svg"> |
---|---|---|
笔画初始化 | 100步 | 570步 |
脚本:
python run_painterly_render.py \ -c diffsketcher-color.yaml \ -eval_step 10 -save_step 10 \ -update "token_ind=5 num_paths=1000 num_iter=1000 guidance_scale=7.5" \ -pt "一幅戴着皇冠的女性肖像画,艺术站首页,动态人像风格,背景色彩丰富,油画风格,油画,禁忌之美" \ -npt "双头,双面,裁剪图像,画面外,草稿,变形手,扭曲手指,重影,畸形手,多头,多余肢体,丑陋,手绘粗糙,缺少肢体,毁容,截断,丑陋,颗粒感,低分辨率,变形,模糊,解剖结构错误,毁容,脸部绘制粗糙,突变,变异,漂浮的肢体,断开的肢体,令人反感,绘制粗糙,残缺,损坏,多余的手指,重复的物品,病态,比例失调,缺少手臂,变异的手,残缺的手,复制的脸,畸形,模糊的雾霾" \ -respath ./workdir/woman_with_crown -d 178351
预览:
<img src="https://yellow-cdn.veclightyear.com/835a84d5/b3fc2f49-169f-41ff-8825-3cabb386a3cf.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/29b3c6e2-fef3-4a8e-858b-8695c04fcb54.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/39e262fe-5336-400a-a97e-ef9004a5c721.svg"> |
---|---|---|
笔画初始化 | 100步 | 420步 |
脚本:
python run_painterly_render.py \ -c diffsketcher-color.yaml \ -eval_step 10 -save_step 10 \ -update "token_ind=5 num_paths=1000 num_iter=1000 guidance_scale=7.5" \ -pt "一幅戴着皇冠的女性肖像画,艺术站首页,动态人像风格,背景色彩丰富,油画风格,油画,禁忌之美" \ -npt "双头,双面,裁剪图像,画面外,草稿,变形手,扭曲手指,重影,畸形手,多头,多余肢体,丑陋,手绘粗糙,缺少肢体,毁容,截断,丑陋,颗粒感,低分辨率,变形,模糊,解剖结构错误,毁容,脸部绘制粗糙,突变,变异,漂浮的肢体,断开的肢体,令人反感,绘制粗糙,残缺,损坏,多余的手指,重复的物品,病态,比例失调,缺少手臂,变异的手,残缺的手,复制的脸,畸形,模糊的雾霾" \ -respath ./workdir/woman_with_crown -d 178351
预览:
<img src="https://yellow-cdn.veclightyear.com/835a84d5/b615fa29-e767-484d-93dc-04ae295f331f.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/16c46217-5058-4da9-a638-3d695806eb8e.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/64784b27-e6a5-470f-b61c-b9f07be55425.svg"> |
---|---|---|
笔画初始化 | 100步 | 340步 |
脚本:
python run_painterly_render.py \ -c diffsketcher-color.yaml \ -eval_step 10 -save_step 10 \ -update "token_ind=5 num_paths=1000 num_iter=800 guidance_scale=7" \ -pt "一座美丽的雪中城堡,令人惊叹的杰作,树木,阳光射线,列昂尼德·阿夫列莫夫风格" \ -npt "手绘粗糙,脚绘粗糙,脸部绘制粗糙,画面外,多余肢体,毁容,变形,身体画面外,解剖结构错误,水印,签名,裁剪,对比度低,曝光不足,曝光过度,劣质艺术,新手水平,业余水平,扭曲的脸" \ -respath ./workdir/castle -d 370880
预览:
<img src="https://yellow-cdn.veclightyear.com/835a84d5/0799e868-9c65-4bd9-ad27-54c6522e9893.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/5f4749ca-934f-4510-a0be-9fc0aaba2d95.svg"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/5090d519-c3c3-4051-9eb1-5cb98d494815.svg"> |
---|---|---|
笔画初始化 | 100步 | 850步 |
脚本:
python run_painterly_render.py \ -c diffsketcher-color.yaml \ -eval_step 10 -save_step 10 \ -update "token_ind=5 num_paths=1000 num_iter=800 guidance_scale=7" \ -pt "一座美丽的雪中城堡,令人惊叹的杰作,树木,阳光射线,列昂尼德·阿夫列莫夫风格" \ -npt "手绘粗糙,脚绘粗糙,脸部绘制粗糙,画面外,多余肢体,毁容,变形,身体画面外,解剖结构错误,水印,签名,裁剪,对比度低,曝光不足,曝光过度,劣质艺术,新手水平,业余水平,扭曲的脸" \ -respath ./workdir/castle -d 478376
预览:
<img src="https://yellow-cdn.veclightyear.com/835a84d5/feac6943-ea42-4814-942a-e1ef6dcabfc0.png" style="width: 250px; height: 250px;"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/6065fad8-2be4-46a1-a332-7f1f752a20d3.jpg" style="width: 250px; height: 250px;"> | <img src="https://yellow-cdn.veclightyear.com/835a84d5/468471b2-2eb4-477b-9e44-50f229d1fb52.svg" style="width: 250px; height: 250px;"> |
---|---|---|
生成样本 | 风格图像 | 结果 |
脚本:
python run_painterly_render.py \ -tk style-diffsketcher -c diffsketcher-style.yaml \ -eval_step 10 -save_step 10 \ -update "token_ind=4 num_paths=2000 style_warmup=0 style_strength=1 softmax_temp=0.4 sds.grad_scale=0 lr_scheduler=True num_iter=2000" \ -pt "法国大革命,高度细节,8K,华丽,精致,电影感,去雾,大气,梵高风格的油画" \ -style ./img/starry.jpg \ -respath ./workdir/style_transfer \ -d 876809
-style
:风格图片的路径。style_warmup
:在style_warmup
步骤后添加风格损失。style_strength
:风格应该有多强。100(最大)非常强,0(最小)则没有风格。查看Examples.md获取更多案例。
本项目基于以下仓库构建:
我们衷心感谢这些作者的出色工作。
如果您在研究中使用了这份代码,请引用以下论文:
@inproceedings{xing2023diffsketcher,
title={DiffSketcher: Text Guided Vector Sketch Synthesis through Latent Diffusion Models},
author={XiMing Xing and Chuang Wang and Haitao Zhou and Jing Zhang and Qian Yu and Dong Xu},
booktitle={Thirty-seventh Conference on Neural Information Processing Systems},
year={2023},
url={https://openreview.net/forum?id=CY1xatvEQj}
}
本作品采用MIT许可证授权。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个 基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制 作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件 系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号