Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pengboxiangshang/torchsketch
TPAMI 2022
https://github.com/pengboxiangshang/torchsketch
cnn deep-learning gnn pytorch rnn sketch tcn
Last synced: 5 days ago
JSON representation
TPAMI 2022
- Host: GitHub
- URL: https://github.com/pengboxiangshang/torchsketch
- Owner: PengBoXiangShang
- License: mit
- Created: 2020-03-10T06:55:12.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-10-11T15:57:28.000Z (about 4 years ago)
- Last Synced: 2024-12-13T21:54:30.534Z (9 days ago)
- Topics: cnn, deep-learning, gnn, pytorch, rnn, sketch, tcn
- Language: Python
- Homepage:
- Size: 116 KB
- Stars: 185
- Watchers: 13
- Forks: 21
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TorchSketch
[![PyPI](https://img.shields.io/pypi/v/torchsketch)](https://pypi.org/project/torchsketch/) ![](https://img.shields.io/badge/language-Python-{green}.svg) ![](https://img.shields.io/npm/l/express.svg)TorchSketch is an open source software library for free-hand sketch oriented deep learning research, which is built on the top of [PyTorch](https://pytorch.org/).
**The project is under continuous update!**
## 1. Installation
TorchSketch is developed based on Python 3.7.To avoid any conflicts with your existing Python setup, it's better to install TorchSketch into a standalone environment, e.g., an Anaconda virtual environment.
Assume that you have installed Anaconda. Please create a virtual environment before installation of TorchSketch, as follows.
```bash
# Create a virtual environment in Anaconda.
conda create --name ${CUSTOMIZED_ENVIRONMENT_NAME} python=3.7# Activate it.
conda activate ${CUSTOMIZED_ENVIRONMENT_NAME}
```### 1.1 Using pip
Please use the following command to install TorchSketch.
```bash
pip install torchsketch
```
Then, TorchSketch can be imported into your Python console as follows.
```python
import torchsketch
```
If you are using MacOS, you may need ***cairo*** and ***pango*** installed. You can install them with [homebrew](https://brew.sh/)
```bash
brew install cairo
brew install pango
```### 1.2 From Source
In addition, TorchSketch also can be installed from source.
```bash
# Choose your workspace and download this repository.
cd ${CUSTOMIZED_WORKSPACE}
git clone https://github.com/PengBoXiangShang/torchsketch# Enter the folder of TorchSketch.
cd torchsketch# Install.
python setup.py install
```## 2. Major Modules and Features of TorchSketch
### 2.1 Major Modules
TorchSketch has three main modules, including `data`, `networks`, `utils`, as shown in follows.
The documents and example codes are provided in `docs`.
- **torchsketch**
- **data**
- **dataloaders**: provides the dataloader class files for the frequently-used sketch datasets, e.g., TU-Berlin, Sketchy, QuickDraw.
- **datasets**: provides the specific API for each dataset, which integrates a series of functions including downloading, extraction, cleaning, MD5 checksum, and other preprocessings.
- **networks**
- **cnn**: provides all the SOTA CNNs.
- **gnn**: provides the sketch-applicable implementations of GNNs, including GCN, GAT, graph transformer, etc.
- **rnn**: provides the sketch-applicable implementations of RNNs.
- **tcn**: provides the sketch-applicable implementations of TCNs.
- **utils**
- **data_augmentation_utils**
- **general_utils**
- **metric_utils**
- **self_supervised_utils**
- **svg_specific_utils**
- **docs**
- **api_reference**
- **examples**These modules and sub-modules can be imported as follows.
```python
import torchsketch.data.dataloaders as dataloaders
import torchsketch.data.datasets as datasetsimport torchsketch.networks.cnn as cnns
import torchsketch.networks.gnn as gnns
import torchsketch.networks.rnn as rnns
import torchsketch.networks.tcn as tcnsimport torchsketch.utils.data_augmentation_utils as data_augmentation_utils
import torchsketch.utils.general_utils as general_utils
import torchsketch.utils.metric_utils as metric_utils
import torchsketch.utils.self_supervised_utils as self_supervised_utils
import torchsketch.utils.svg_specific_utils as svg_specific_utils
```As shown in the following figure, a general PyTorch-based code project mainly includes four blocks, i.e., preparing data, preparing data loader, creating network/model, and training. The functions/APIs built-in torchsketch.utils are designed orienting at all four blocks. When researchers would prepare data and data loader, they could select functions/APIs from torchsketch.data. When researchers would create a network, they could select network classes from torchsketch.networks.
### 2.2 Major Features
- TorchSketch supports both GPU based and Python built-in multi-processing acceleration.
- TorchSketch is modular, flexible, and extensible, without overly complex design patterns and excessive encapsulation.
- TorchSketch provides four kinds of network architectures that are applicable to sketch, i.e., CNN, RNN, GNN, TCN.
- TorchSketch is compatible to not only numerous datasets but also various formats of free-hand sketch, e.g., SVG, NumPy, PNG, JPEG, by providing numerous format-convert APIs, format-specific APIs, etc.
- TorchSketch supports self-supervised learning study for sketch.
- TorchSketch, beyond free-hand sketch research, also has some universal components that are applicable to the studies for other deep learning topics.## Citations
If you find this code useful, please cite our paper "**Deep Learning for Free-Hand Sketch: A Survey**" ([https://arxiv.org/abs/2001.02600](https://arxiv.org/abs/2001.02600)):## License
This project is licensed under the MIT License