A png drawing to svg converter
Project description
sketch-vectorization
Goal
The goal of this project is to implement the following paper: https://www-sop.inria.fr/reves/Basilic/2016/FLB16/fidelity_simplicity.pdf
We also implemented several new ideas, such as a convolutional neural network with synthetic data augmentation for preprocessing.
Demo
Guess what: the entire library can run in your browser !
If you want a guided tour of how the library works, go here:
If you just want to test it for yourself, with your own drawings, go here:
Install
The library is also available as a pip package:
pip install "sketchy-svg[onnx]"
# or use uv: uv add "sketchy-svg[onnx]"
There is no command line interface. You can easily build your own, to get inspiration look at src/sketchy_svg/viz inside the class Demo
Use locally
To install the dependencies, install uv and run:
uv sync --extra onnx
To launch the notebooks, run uv run marimo edit ., it should open the notebooks in your browser.
Train the CNN
The CNN denoiser can be trained from notebooks/cnn.py.
1. Install training dependencies
On a machine with a GPU (Linux, default CUDA torch):
uv sync --group train
On a CPU-only machine (e.g. your local machine):
uv sync --group train --extra cpu
2. Run the notebook
uv run marimo edit notebooks/cnn.py
Set USE_RAY = False to train locally, or USE_RAY = True to offload to a remote Ray cluster (set RAY_ADDRESS accordingly). The trained model is exported to src/sketchy_cnn/model.onnx at the end of the notebook.
How the SVG dataset is downloaded
data/svg_dataset.csv is tracked in git so no download is needed in most cases.
If you need to refresh it, the dataset comes from OmniSVG/MMSVG-Icon on HuggingFace. Create a token at https://huggingface.co/settings/tokens and add it to a .env file at the project root:
HF_TOKEN=hf_...
Then use the download button in notebooks/svg_dataset.py.
Documentation
If you want, you can read the Presentation
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sketchy_svg-0.2.7.tar.gz.
File metadata
- Download URL: sketchy_svg-0.2.7.tar.gz
- Upload date:
- Size: 270.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31bf9c8315fdeb938c70f61cb3e223dc9d1a87a99a0f8834f9d8fe94b6a77361
|
|
| MD5 |
d9c2f0065a0ad97fa58d78960b24e31a
|
|
| BLAKE2b-256 |
b3c2ecb04ac4acfa012b7eaf1973370096544c7a496cd7dfe967c37c11367169
|
Provenance
The following attestation bundles were made for sketchy_svg-0.2.7.tar.gz:
Publisher:
publish.yml on rambip/sketch-vectorization
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sketchy_svg-0.2.7.tar.gz -
Subject digest:
31bf9c8315fdeb938c70f61cb3e223dc9d1a87a99a0f8834f9d8fe94b6a77361 - Sigstore transparency entry: 992617797
- Sigstore integration time:
-
Permalink:
rambip/sketch-vectorization@1a050659f483ddc024af688b4a2e0fba56a076c0 -
Branch / Tag:
refs/tags/v0.2.7 - Owner: https://github.com/rambip
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1a050659f483ddc024af688b4a2e0fba56a076c0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file sketchy_svg-0.2.7-py3-none-any.whl.
File metadata
- Download URL: sketchy_svg-0.2.7-py3-none-any.whl
- Upload date:
- Size: 272.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e79d3977c930bba83c106498d9512cef6dc45ad0513eac49bf66f408753d2948
|
|
| MD5 |
21d7d1b6c106649442d26ac412167e21
|
|
| BLAKE2b-256 |
44299515aed51a3b3761c1a991c3bd2e517f0bba0388aef2b313592d93631c72
|
Provenance
The following attestation bundles were made for sketchy_svg-0.2.7-py3-none-any.whl:
Publisher:
publish.yml on rambip/sketch-vectorization
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sketchy_svg-0.2.7-py3-none-any.whl -
Subject digest:
e79d3977c930bba83c106498d9512cef6dc45ad0513eac49bf66f408753d2948 - Sigstore transparency entry: 992617798
- Sigstore integration time:
-
Permalink:
rambip/sketch-vectorization@1a050659f483ddc024af688b4a2e0fba56a076c0 -
Branch / Tag:
refs/tags/v0.2.7 - Owner: https://github.com/rambip
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1a050659f483ddc024af688b4a2e0fba56a076c0 -
Trigger Event:
push
-
Statement type: