154 lines
4.1 KiB
Markdown
154 lines
4.1 KiB
Markdown
# 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.
|
|
|
|

|
|
|
|

|
|

|
|

|
|

|
|

|
|

|
|

|
|

|
|

|
|
|
|
# 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}
|
|
}
|
|
```
|