DiffSketcher

DiffSketcher

基于文本生成高质量矢量草图的新方法

DiffSketcher是一个基于潜在扩散模型的文本引导矢量草图合成项目。它可以根据文本描述生成高质量的矢量草图,支持素描、油画和彩色图像等多种风格。该项目提供灵活的参数配置,如调整笔画数量和迭代次数,并支持与风格迁移技术结合。DiffSketcher为艺术创作和图像生成领域提供了新的可能性。

DiffSketcher向量草图合成潜在扩散模型文本引导AI绘图Github开源项目

DiffSketcher: 基于潜在扩散模型的文本引导矢量草图合成

NeurIPS ArXiv 网站 演示

本仓库包含了我们NeurIPS 2023论文的官方实现:DiffSketcher:基于潜在扩散模型的文本引导矢量草图合成,该方法可以根据文本提示生成高质量的矢量草图。

我们的项目页面:https://ximinng.github.io/DiffSketcher-project/

预览图1 预览图2

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;">
提示词:全彩金刚鹦鹉,超级详细,写实,极其美丽提示词:非常详细的杰作画作,尤达宝宝拿着光剑提示词:晴天帆船在海上航行

:new: 更新

  • [2024年1月] 🔥 我们发布了SVGDreamer。SVGDreamer是一种新颖的文本引导矢量图形合成方法。该方法同时考虑了矢量图形的编辑和合成质量。
  • [2023年12月] 🔥 我们发布了PyTorch-SVGRender。Pytorch-SVGRender是用于图像矢量化的最先进可微渲染方法的首选库。
  • [2023年11月] 我们感谢@camenduru实现了DiffSketcher-colab
  • [2023年10月] 我们发布了DiffSketcher代码。
  • [2023年10月] 我们发布了VectorFusion代码

:wrench: 安装

逐步安装

创建新的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使用

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

DiffSketcher + 风格迁移

预览:

<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获取更多案例。

待办事项

  • 添加网页UI演示。
  • 添加对彩色结果和油画的支持。

:books: 致谢

本项目基于以下仓库构建:

我们衷心感谢这些作者的出色工作。

:paperclip: 引用

如果您在研究中使用了这份代码,请引用以下论文:

@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}
}

:copyright: 许可证

本作品采用MIT许可证授权。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多