Skip to main content

CI Status Documentation Status Test coverage percentage black

PyPi Status pyversions license

Huggingface Spaces Open in Colab

Implementations of recent Deep Learning tricks in Computer Vision, easily paired up with your favorite framework and model zoo.

Holocrons were information-storage datacron devices used by both the Jedi Order and the Sith that contained ancient lessons or valuable information in holographic form.

Source: Wookieepedia

Quick Tour

Open In Colab

This project was created for quality implementations, increased developer flexibility and maximum compatibility with the PyTorch ecosystem. For instance, here is a short snippet to showcase how Holocron models are meant to be used:

from PIL import Image
from torchvision.transforms import Compose, ConvertImageDtype, Normalize, PILToTensor, Resize
from torchvision.transforms.functional import InterpolationMode
from holocron.models.classification import repvgg_a0

# Load your model
model = repvgg_a0(pretrained=True).eval()

# Read your image
img = Image.open(path_to_an_image).convert("RGB")

# Preprocessing
config = model.default_cfg
transform = Compose([
    Resize(config['input_shape'][1:], interpolation=InterpolationMode.BILINEAR),
    PILToTensor(),
    ConvertImageDtype(torch.float32),
    Normalize(config['mean'], config['std'])
])

input_tensor = transform(img).unsqueeze(0)

# Inference
with torch.inference_mode():
    output = model(input_tensor)
print(config['classes'][output.squeeze(0).argmax().item()], output.squeeze(0).softmax(dim=0).max())

Installation

Prerequisites

Python 3.6 (or higher) and pip/conda are required to install Holocron.

Latest stable release

You can install the last stable release of the package using pypi as follows:

pip install pylocron

or using conda:

conda install -c frgfm pylocron

Developer mode

Alternatively, if you wish to use the latest features of the project that haven't made their way to a release yet, you can install the package from source (install Git first):

git clone https://github.com/frgfm/Holocron.git
pip install -e Holocron/.

Paper references

PyTorch layers for every need

Models for vision tasks

Trying something else than Adam

More goodies

Documentation

The full package documentation is available here for detailed specifications.

Demo app

The project includes a minimal demo app using Gradio

demo_app

You can check the live demo, hosted on 🤗 HuggingFace Spaces 🤗 over here 👇 Hugging Face Spaces

Reference scripts

Reference scripts are provided to train your models using holocron on famous public datasets. Those scripts currently support the following vision tasks:

Latency benchmark

You crave for SOTA performances, but you don't know whether it fits your needs in terms of latency?

In the table below, you will find a latency benchmark for all supported models:

Arch GPU mean (std) CPU mean (std)
repvgg_a0* 3.14ms (0.87ms) 23.28ms (1.21ms)
repvgg_a1* 4.13ms (1.00ms) 29.61ms (0.46ms)
repvgg_a2* 7.35ms (1.11ms) 46.87ms (1.27ms)
repvgg_b0* 4.23ms (1.04ms) 33.16ms (0.58ms)
repvgg_b1* 12.48ms (0.96ms) 100.66ms (1.46ms)
repvgg_b2* 20.12ms (0.31ms) 155.90ms (1.59ms)
repvgg_b3* 24.94ms (1.70ms) 224.68ms (14.27ms)
rexnet1_0x 6.01ms (0.26ms) 13.66ms (0.21ms)
rexnet1_3x 6.43ms (0.10ms) 19.13ms (2.05ms)
rexnet1_5x 6.46ms (0.28ms) 21.06ms (0.24ms)
rexnet2_0x 6.75ms (0.21ms) 31.77ms (3.28ms)
rexnet2_2x 6.92ms (0.51ms) 33.61ms (0.60ms)
sknet50 11.40ms (0.38ms) 54.03ms (3.35ms)
sknet101 23.55 ms (1.11ms) 94.89ms (5.61ms)
sknet152 69.81ms (0.60ms) 253.07ms (3.33ms)
tridentnet50 16.62ms (1.21ms) 142.85ms (5.33ms)
res2net50_26w_4s 9.25ms (0.22ms) 41.84ms (0.80ms)
resnet50d 36.97ms (3.58ms) 36.97ms (3.58ms)
pyconv_resnet50 20.03ms (0.28ms) 178.85ms (2.35ms)
pyconvhg_resnet50 38.41ms (0.33ms) 301.03ms (12.39ms)
darknet24 3.94ms (1.08ms) 29.39ms (0.78ms)
darknet19 3.17ms (0.59ms) 26.36ms (2.80ms)
darknet53 7.12ms (1.35ms) 53.20ms (1.17ms)
cspdarknet53 6.41ms (0.21ms) 48.05ms (3.68ms)
cspdarknet53_mish 6.88ms (0.51ms) 67.78ms (2.90ms)

The reported latency for RepVGG models is the one of the reparametrized version

This benchmark was performed over 100 iterations on (224, 224) inputs, on a laptop to better reflect performances that can be expected by common users. The hardware setup includes an Intel(R) Core(TM) i7-10750H for the CPU, and a NVIDIA GeForce RTX 2070 with Max-Q Design for the GPU.

You can run this latency benchmark for any model on your hardware as follows:

python scripts/eval_latency.py rexnet1_0x

All script arguments can be checked using python scripts/eval_latency.py --help

Docker container

If you wish to deploy containerized environments, you can use the provided Dockerfile to build a docker image:

docker build . -t <YOUR_IMAGE_TAG>

Minimal API template

Looking for a boilerplate to deploy a model from Holocron with a REST API? Thanks to the wonderful FastAPI framework, you can do this easily.

Deploy your API locally

Run your API in a docker container as follows:

cd api/
make lock-api
make run-api

In order to stop the container, use make stop-api

What you have deployed

Your API is now running on port 8080, with its documentation http://localhost:8080/redoc and requestable routes:

import requests
with open('/path/to/your/img.jpeg', 'rb') as f:
    data = f.read()
response = requests.post("http://localhost:8080/classification", files={'file': data}).json()

Citation

If you wish to cite this project, feel free to use this BibTeX reference:

@software{Fernandez_Holocron_2020,
author = {Fernandez, François-Guillaume},
month = {5},
title = {{Holocron}},
url = {https://github.com/frgfm/Holocron},
year = {2020}
}

Contributing

Any sort of contribution is greatly appreciated!

You can find a short guide in CONTRIBUTING to help grow this project!

License

Distributed under the Apache 2.0 License. See LICENSE for more information.

Metadata

Release files for pylocron 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pylocron 0.2.1
File Size Uploaded
pylocron-0.2.1.tar.gz 97.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pylocron 0.2.1
File Interpreter ABI Platform
pylocron-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 240.4 kB

Release files / pylocron-0.2.1.tar.gz

Download URL pylocron-0.2.1.tar.gz
Size 97.3 kB
Tags Source
SHA-256 checksum
How to use checksums
11d4db073ae1728e6da43fee77672800c68a4eac1feceadbd4020e62f94f3d13
BLAKE2b-256 checksum
How to use checksums
3f38735e0491ef9eb81914ec545cd760386cacf8432006041632781665617146
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.13

Release files / pylocron-0.2.1-py3-none-any.whl

Download URL pylocron-0.2.1-py3-none-any.whl
Size 143.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0dea15342a5d6b3422e724392701590f83daa24d79b065aa6d040f817ddb9ecd
BLAKE2b-256 checksum
How to use checksums
82de599482fb4a798895726b6939e267262562e1958bb07a4c2abffb7fd79699
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.13

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page