M3000j's picture
Upload folder using huggingface_hub
31726e5 verified
# 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](https://user-images.githubusercontent.com/951021/92184822-2a0bc500-ee20-11ea-81a6-f26af2d120f4.jpg)
![circle](https://user-images.githubusercontent.com/951021/63556018-0b2ddf80-c4f8-11e9-849c-b4ecfcb9a865.gif)
![ellipse](https://user-images.githubusercontent.com/951021/63556021-0ec16680-c4f8-11e9-8fc6-8b34de45b8be.gif)
![rect](https://user-images.githubusercontent.com/951021/63556028-12ed8400-c4f8-11e9-8072-81702c9193e1.gif)
![polygon](https://user-images.githubusercontent.com/951021/63980999-1e99f700-ca72-11e9-9786-1cba14d2d862.gif)
![curve](https://user-images.githubusercontent.com/951021/64042667-3d9e9480-cb17-11e9-88d8-2f7b9da8b8ab.gif)
![path](https://user-images.githubusercontent.com/951021/64070625-7a52b480-cc19-11e9-9380-eac02f56f693.gif)
![gradient](https://user-images.githubusercontent.com/951021/64898668-da475300-d63c-11e9-917a-825b94be0710.gif)
![circle_outline](https://user-images.githubusercontent.com/951021/65125594-84f7a280-d9aa-11e9-8bc4-669fd2eff2f4.gif)
![ellipse_transform](https://user-images.githubusercontent.com/951021/67149013-06b54700-f25b-11e9-91eb-a61171c6d4a4.gif)
# 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}
}
```