Skip to content

liu-yucheng/diffvg-ported

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

diffvg-ported

  • diffvg Ported.
  • Ported from BachiLi/diffvg.
  • Ported to Windows PCs with NVIDIA GPU(s).

Copyright

  • Copyright (C) 2023 Yucheng Liu. GNU AGPL3/3+ license.

diffvg

Differentiable Rasterizer for Vector Graphics https://people.csail.mit.edu/tzumao/diffvg

diffvg is a differentiable rasterizer for 2D vector graphics. See the webpage for more info.

teaser

circle ellipse rect polygon curve path gradient circle_outline ellipse_transform

Install

git submodule update --init --recursive conda install -y pytorch torchvision -c pytorch conda install -y numpy conda install -y scikit-image conda install -y -c anaconda cmake conda install -y -c conda-forge ffmpeg pip install svgwrite pip install svgpathtools pip install cssutils pip install numba pip install torch-tools pip install visdom python setup.py install 

Install using poetry

prerequisite

install python 3.7, poetry and ffmpeg

# install poetry (mac, linux) curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python - # install ffmpeg (macos) brew install ffmpeg (linux) sudo apt install ffmpeg or use conda conda install -y -c conda-forge ffmpeg 

Install python packages

# install all python dependencies poetry install # install pydiffvg poetry run python setup.py install 

Now to run the apps, just add poetry run before each of the commands below, e.g.

poetry run python single_circle.py 

Building in debug mode

python setup.py build --debug install 

Run

cd apps 

Optimizing a single circle to a target.

python single_circle.py 

Finite difference comparison.

finite_difference_comp.py [-h] [--size_scale SIZE_SCALE] [--clamping_factor CLAMPING_FACTOR] [--use_prefiltering USE_PREFILTERING] svg_file 

e.g.,

python finite_difference_comp.py imgs/tiger.svg 

Interactive editor

python svg_brush.py 

Painterly rendering

painterly_rendering.py [-h] [--num_paths NUM_PATHS] [--max_width MAX_WIDTH] [--use_lpips_loss] [--num_iter NUM_ITER] [--use_blob] target 

e.g.,

python painterly_rendering.py imgs/fallingwater.jpg --num_paths 2048 --max_width 4.0 --use_lpips_loss 

Image vectorization

python refine_svg.py [-h] [--use_lpips_loss] [--num_iter NUM_ITER] svg target 

e.g.,

python refine_svg.py imgs/flower.svg imgs/flower.jpg 

Seam carving

python seam_carving.py [-h] [--svg SVG] [--optim_steps OPTIM_STEPS] 

e.g.,

python seam_carving.py imgs/hokusai.svg 

Vector variational autoencoder & vector GAN:

For the GAN models, see apps/generative_models/train_gan.py. Generate samples from a pretrained using apps/generative_models/eval_gan.py.

For the VAE models, see apps/generative_models/mnist_vae.py.

If you use diffvg in your academic work, please cite

@article{Li:2020:DVG, title = {Differentiable Vector Graphics Rasterization for Editing and Learning}, author = {Li, Tzu-Mao and Luk\'{a}\v{c}, Michal and Gharbi Micha\"{e}l and Jonathan Ragan-Kelley}, journal = {ACM Trans. Graph. (Proc. SIGGRAPH Asia)}, volume = {39}, number = {6}, pages = {193:1--193:15}, year = {2020} } 

Packages

 
 
 

Contributors