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许可证授权。

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

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

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多