vrroom b4639e5222 Added matplotlib.colors to parse named colors
The svg parser will incorrectly parse colors such
as 'green' and 'red' to black. This commit fixes
that by using the code already written in matplotlib.colors
module
2021-05-13 16:12:12 +05:30
2020-12-22 16:13:46 -06:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:34:21 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:34:21 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-12-21 08:43:28 -05:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-27 19:26:20 +02:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-12-05 15:41:01 -05:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00
2020-09-03 22:30:30 -04:00

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

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}
}
Description
No description provided
Readme 18 MiB
Languages
Python 52.4%
C++ 28.4%
Makefile 11.9%
C 4.8%
CMake 2.5%